Несколько подключить друг к другу испытания в C розетках - PullRequest
0 голосов
/ 01 апреля 2011

У меня есть 2 сокет-сервера, которые просто нужно попытаться соединиться друг с другом несколько раз.То, что я сделал, было создано 2 розетки s1 и s2.Привязал s1 к определенному порту и адресу.Затем внутри цикла while (num_trials) <200 я запускаю connect () с s1 для сервера 2. Когда я запускаю 2 программы, первый сервер зацикливается и показывает, что он пытается, но они не соединяются друг с другом. Тем временем второй сервервходит в цикл 1 раз и просто ждет.</p>

Я пытался каждый раз закрывать сокет s1 - это заставляет сервер 2 тоже работать в цикле - но все же они не соединяются друг с другом.Я не уверен, что мне не хватает некоторых деталей. Я не могу использовать select, и это не тот случай, когда принимаются множественные клиентские соединения.Есть ли лучший способ добиться этого?

Ответы [ 2 ]

3 голосов
/ 01 апреля 2011

Сокеты блокируются по умолчанию.Когда вы выполняете какие-либо операции с ним, он блокируется до тех пор, пока операция не завершится.Следовательно, вам нужно сделать ваш сокет неблокирующим или использовать select (или другой асинхронный механизм).

Другая альтернатива, как упомянуто maheshgupta024 , состоит в разделенииоперации в разных потоках.Например: сервер работает в главном потоке, а клиент - во вторичном.

1 голос
/ 01 апреля 2011

Как создать два потока и соединить друг с другом ... один должен быть подключен, а другой должен подключаться к одному порту.то есть, скажем, S1 прослушивает порт 1000, тогда S2 должен подключиться к 1000, а S2 должен прослушать 2000, а S1 должен подключиться к 2000.

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