Перед вызовом connect (), вызовите bind ().
Я предполагаю, что вы должны были сделать это для кода сервера, верно?Иначе, как заставить ваш сервер (работающий на MachineX) прослушивать порт 5000.
В любом случае, вот пример C привязки к порту localhost 5000.
Пример:
int sock = socket(AF_INET, SOCK_STREAM, 0);
sockaddr_in addrRemote = {};
sockaddr_in addrLocal = {}; // zero init so that sin_addr is already INADDR_ANY;
int result;
addrLocal.sin_family = AF_INET;
addrLocal.sin_port = htons(5000);
result = bind(sock, (sockaddr*)&addrLocal, sizeof(addrLocal));
if (result < 0)
return;
addrRemote.sin_family = AF_INET;
addrRemote.sin_port = htons(5000);
addrRemote.sin_addr = <ip of MachineX in network byte order>;
result = connect(sock, (sockaddr*)&addrRemote, sizeof(addrRemote));
if (result < 0)
return;
Предполагается, что TCPServer, работающий на компьютере X, прослушивает порт 5000.