привязка номера порта к TCP-сокету (outgoin) для отправки пакетов - PullRequest
3 голосов
/ 24 июня 2011

Я знаю, что связать номер порта с TCP-сокетом , который вы будете использовать для отправки данных , нелегко (поскольку системы обычно связывают случайное порт для розеток).

Но я читал в одной статье, что с помощью некоторых низкоуровневых сетевых методов вы можете привязать номер порта к TCP-сокету, а затем использовать его для отправки данных?

Кто-нибудь имеет представление о том, как это можно сделать?

Я использую язык программирования C

Ответы [ 3 ]

10 голосов
/ 24 июня 2011

Свяжите его перед подключением.

s = socket(AF_INET, SOCK_STREAM, 0);
/* ... */

memset(&client_addr, 0, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(22222);

if (bind(s, (struct sockaddr *) &client_addr, sizeof(client_addr)) < 0) {
    perror("bind");
    exit(1);
}

connect(s, (struct sockaddr *) &server_addr, sizeof(server_addr));
6 голосов
/ 24 июня 2011

Вы можете просто позвонить bind() до connect() на клиенте так же, как вы бы позвонили bind() до listen() на сервере.Нет ничего сложнее, чем это.

6 голосов
/ 24 июня 2011

На самом деле это довольно просто. Просто используйте функцию bind , как для сервера.

...