The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Сетевое программирование"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Сетевое программирование" 
Сообщение от Новичок Искать по авторуВ закладки(??) on 28-Июн-05, 18:38  (MSK)
Привет всем!

Сразу извеняюсь что залазею сюда с Windows'ом, но во-первых сетевое программирование под винды в консоли и UNIX похожи, а во-вторых я только учусь, решил с начало под винды на пишу, а потом под UNIX.

Так вот вопрос:

Написал маленький сервак(S) и клиент(C) к нему. Они обмениваются сообщениями и всё в принципе работает, но если запустить S и C сразу по второму кругу, то они блокируются на связке connect-accept(причём скорее на connect) около 5 минут, но если во время блокировки запустить второго C, то всё нормально они с серваком быстро отрабатывают запросы, причём я запускал ещё много раз C и S они быстро работали, а первый С всё весел. Да всё это я тестировал на одной машине.

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Сетевое программирование" 
Сообщение от DEC Искать по авторуВ закладки(ok) on 28-Июн-05, 19:16  (MSK)
>в принципе работает, но если запустить S и C сразу по
>второму кругу, то они блокируются на связке connect-accept(причём скорее на connect)
>около 5 минут, но если во время блокировки запустить второго C,
>то всё нормально они с серваком быстро отрабатывают запросы, причём я
>запускал ещё много раз C и S они быстро работали, а
>первый С всё весел. Да всё это я тестировал на одной
>машине.

Hint: посмотри траффик во время выполнения, какие пакеты ходят.
посмотри на прослушиваемые порты после отработки программ(может у тебя какой-нибудь FIN_WAIT остаётся висеть)

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Сетевое программирование" 
Сообщение от Новичок Искать по авторуВ закладки(??) on 28-Июн-05, 19:27  (MSK)
>>в принципе работает, но если запустить S и C сразу по
>>второму кругу, то они блокируются на связке connect-accept(причём скорее на connect)
>>около 5 минут, но если во время блокировки запустить второго C,
>>то всё нормально они с серваком быстро отрабатывают запросы, причём я
>>запускал ещё много раз C и S они быстро работали, а
>>первый С всё весел. Да всё это я тестировал на одной
>>машине.
>
>Hint: посмотри траффик во время выполнения, какие пакеты ходят.
>посмотри на прослушиваемые порты после отработки программ(может у тебя какой-нибудь FIN_WAIT остаётся
>висеть)


А не подскажеш как это сделать(по поводу траффика и портов)?
А то я пока этого не знаю :(

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Сетевое программирование" 
Сообщение от DEC Искать по авторуВ закладки(ok) on 28-Июн-05, 20:36  (MSK)

>А не подскажеш как это сделать(по поводу траффика и портов)?
>А то я пока этого не знаю :(

ну состояние портов командой netstat (оная и в виндозе есть),
а траффик чем под M$ смотреть - не подскажу, погугли на тему снифферов.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Сетевое программирование" 
Сообщение от Новичок Искать по авторуВ закладки(??) on 29-Июн-05, 08:14  (MSK)
>
>>А не подскажеш как это сделать(по поводу траффика и портов)?
>>А то я пока этого не знаю :(
>
>ну состояние портов командой netstat (оная и в виндозе есть),
>а траффик чем под M$ смотреть - не подскажу, погугли на тему
>снифферов.


Спасибо, когда разберусь напишу.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Сетевое программирование" 
Сообщение от Новичок Искать по авторуВ закладки(??) on 29-Июн-05, 18:56  (MSK)
Ещё раз привет!

Узнал(по моему) как обстоят дела:

У меня порты прописаны жестко. У S 5000, а у С 5001. Так вот после второго запуска, о чем речь была выше, С долбит порт 5000, а S accept не даёт, система ставит флаг TIME_WAIT(из netstat), а когда я запустил второго C, то система выделила новый порт для этого С, причем каждый раз разный. Тогда я решил не привязывать клиента к конкретному порту и всё заработало отлично. Затем я вернул всё обратно S-5000, а С-5001 и убрал у S и С все send и recv, и опять заработало всё отлично. Следовательно они подвешиваут порт даже если их закрывать принудительно. Кто-нибудь может подсказать как их закрыть корректно, чтобы порт был доступен после завершения программы??? А то надо чтоб программа работала на определенных портах.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Сетевое программирование" 
Сообщение от DEC Искать по авторуВ закладки(ok) on 30-Июн-05, 11:14  (MSK)
>может подсказать как их закрыть корректно, чтобы порт был доступен после
>завершения программы??? А то надо чтоб программа работала на определенных портах.
>
Почитай об особенностях протокола TCP и тебе всё станет ясно ;]

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Сетевое программирование" 
Сообщение от dimod Искать по авторуВ закладки on 20-Окт-05, 16:28  (MSK)

Нужно с сокетом делать CLOSESOCKET + SOCKETSHUTDOWN

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру