· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.NETWORKS —› снова сокеты

Посл.отвђт Сообщенiе


Дата: Ноя 26, 2003 19:25:28

у меня клиент-серверная программа.
у клиента 2 треда - один на работу с сетью, второй для оконного интерфейса
у сервера - один тред для окна, один на входящие соединения, и еще столько же тредов сколько клиентов, подсоеденино.
передача происходит так:
клиент отсылает, сервер подтверждает каждый пакет,
или соответственно наоборот,
вообщем обычный send, recv. сокеты блокирующие. все бы ничего, но в один прекрасный момент, возникает такая ситуация:
клиент что-то щлет или сервер что-то шлет, и пакет как будто ушел в сеть, и там устроил разгуляево, насколько я понимаю, пакет разбился на части, что не учтено в реализации клиента и сервака, и проги стоят на месте,

что делать? (Чернышевский), кто виноват?

может перейти на асинхронные сокеты? посоветуйте плиз.

если кому-то надо могу кинуть энту кухню, но она на msvc.net 2003

извиняйте, если не мега дZен

спасибо, что прочитали до этого места


Дата: Ноя 26, 2003 19:33:22

jekyll
1. Отладчик (очень возможно, что это глюк в самом коде)
2. Сниффер (на всякий случай)

У меня такое было: клиент на Java, сервер на асм. Долго ругал winsock, пока не обнаружил ошибку в коде сервера.


Дата: Ноя 26, 2003 19:49:23

jekyll
насколько я понимаю, пакет разбился на части, что не учтено в реализации клиента и сервака, и проги стоят на месте
TCP - это stream-oriented сокет, я об этом уже говорил вот здесь. Пакеты могут резаться как угодно, поэтому надо реализовывать собственный протокол передачи и сборки пакетов.


Дата: Ноя 26, 2003 20:01:01

Лови пример.
Я делал так.


_688043102__tcp.rar


Дата: Ноя 26, 2003 20:04:33

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


Дата: Ноя 27, 2003 00:34:21

дык на TerminateThread ставим бряку и дальше смотрим стек...


Дата: Дек 5, 2003 18:04:04

rst
спасибо за сырец, я понял свои ошибки, все поправил, Работает!! Рулез!


Дата: Дек 5, 2003 18:14:28

еще вопрос.
как определить широковещательный адрес в данной подсети?
броадкаст адрес используется также как и любой другой?
где искать ? SNMP?


Дата: Дек 6, 2003 10:53:30

((Your IP) AND (NETMASK)) OR (0xFFFFFFFF AND (NOT) NETMASK)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.050