клиент-серверный код.Как привязать подключение для передачи данных к определенному порту - PullRequest
0 голосов
/ 17 марта 2012

Я пытаюсь сделать следующее:

Допустим, я запускаю TCPServer на компьютере X. Теперь я хочу подключиться к TCPServer с компьютера Y, но я хочу указать порты (отправитель и получатель), по которым должен осуществляться обмен данными. Кроме того, TCPServer обрабатывает несколько клиентов одновременно.

MachineX: ./TCPServer MachineY: ./TCPClient -SP 5000 -DP 5000

Я написал код для многопоточного сервера (используя C UNIX), и он отлично работает. По сути, он порождает один поток на соединение. Но я не уверен, как включить вышеуказанную функциональность.

Спасибо за ваше время!

1 Ответ

0 голосов
/ 17 марта 2012

Перед вызовом 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...