Articles of tcp

Отправлять и получать целочисленное значение по TCP в C

В программе мне нужно отправить целочисленное значение через сокет TCP. Я использовал функции send() и recv() для этой цели, но они отправляют и принимают его только как строку. Есть ли альтернатива для send() и recv() для отправки и получения целочисленных значений?

С C сокетами TCP можно «отправить» возврат ноль?

Возможно ли, send функция send C возвращала ноль при использовании сокетов TCP? На странице руководства говорится, что он вернет количество отправленных байтов, но я не уверен, что он просто вернет -1, когда он не сможет отправить какие-либо данные.

Есть ли способ обнаружить, что TCP-сокет был закрыт удаленным одноранговым узлом, не читая его?

Во-первых, немного фона для объяснения мотивации: я работаю над очень простым TCP-зеркальным зеркальным фильтром select (), который позволяет двум брандмауэр-клиентам косвенно говорить друг с другом. Оба клиента подключаются к этому серверу, и как только оба клиента подключены, любые TCP-байты, отправленные на сервер клиентом A, перенаправляются клиенту B и наоборот. Это более или менее работает с […]

Сокеты – Как узнать, какой порт и адрес я назначен

У меня возникли проблемы с этим: я работаю с сокетами на C, используя это руководство – http://binarii.com/files/papers/c_sockets.txt Я пытаюсь автоматически получить свой ip и порт, используя: server.sin_port = 0; /* bind() will choose a random port*/ server.sin_addr.s_addr = INADDR_ANY; /* puts server’s IP automatically */ … … bind(int fd, struct sockaddr *my_addr,int addrlen); // Bind […]

Создание нескольких сокетов на клиенте

У меня есть ситуация, когда клиент должен быть подключен к нескольким серверам. В соответствии с ответом на этот вопрос: Подключение к нескольким серверам из одного клиентского сокета C Мне нужно создать один сокет для подключения к каждому серверу. Я пытаюсь спросить: есть ли более эффективный способ обойти это, кроме повторения этого fragmentа кода для создания […]

Клиент Socket с помощью Select

Я пытаюсь реализовать клиентскую функцию, которая может установить соединение с несколькими серверами с помощью функции select() . Но я не эксперт в использовании функции select() . Однако мой клиент может включить соединение с несколькими серверами, но он не сможет читать сообщения с этих нескольких серверов. В моем следующем примере я подключил свой клиент с двумя […]

Ошибка «плохого адреса» TCP-клиента TCP-сервера (в C)

Хотя он, кажется, правильно реализован, он продолжает возвращать мне ERROR, когда я устанавливаю соединение, используя loopback-адрес (127.0.0.1). В дополнение к простому соединению TCP Client / Server, я добавил дополнительный случай: Если клиент пытается отправить данные, но соединение закрыто , оно также закрыто. Я выполняю его, проверяя, если полученные данные равны 0 (recv) . Данная ошибка […]

используя select () для прослушивания нескольких клиентов (TCP)

Я разработал (TCP) сервер для прослушивания клиента и взаимодействия с ним. Теперь я пытаюсь адаптировать этот серверный код для прослушивания mulitple клиентов. Я хочу использовать select, но я смущен некоторыми примерами и объяснениями, которые я нашел. Я читал: http://support.sas.com/documentation/onlinedoc/sasc/doc750/html/lr2/select.htm и http://support.sas.com/documentation/onlinedoc/sasc/doc750/html /lr2/select.htm, оба из которых были рекомендованы мне ..: S Пример первого сайта кажется менее […]

Сервер в C, принимающий UDP и TCP-соединения

У меня проблема. Я разрабатываю сервер в C, который может принимать соединения UDP и TCP-клиентов. Поэтому мне нужно знать, когда соединение UDP и когда его TCP. Я уже разработал оба случая отдельно, и они работают нормально. Я искал, как это сделать, и все указывает на функцию select () , но я не знаю, как использовать […]

Клиент TCP выбирает HTML в сокете C

Я пытаюсь написать TCP-клиент, который извлекает HTML. Программа будет принимать веб-сайт от пользователя и распечатывать контент. Прямо сейчас мой код только извлекает HTML обратно, ссылаясь на страницу ошибки 408 с ошибкой запроса. В чем проблема? #include #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char* argv[]) { char *domain […]