![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
NURMS |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Всем привет. У меня есть код для клиента и сервера:
Сервер:
Клиент:
Но он работает так, что клиент отправляет пакет и ждёт ответа, а если убрать recv, то отправленное сервером до него не дойдёт. Короче нужно чтобы: 1. Отправка и получение пакетов была бы независимой. Т.е. точно так как в этих чатах. В любой момент отправлять и получать. 2. Всех клиентов надо где-то хранить, чтобы могли осуществить например такое: некоторый клиент отправляет некоторое сообщение серверу, а тот уже отправляет всем остальным клиентам. И ещё вопрос. Где у Visual C++ 7.0 добавлять библиотеки *.lib. В шестом понятно, а здесь убрали. |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: нет Всего: 196 |
думаю, тебе поможет функция ioctlsocket() (флаг FIONREAD)
|
|||
|
||||
Kill_em_all |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 2.4.2005 Репутация: нет Всего: нет |
Впиши в код #pragma comment(lib, "ws2_32.lib") |
|||
|
||||
NURMS |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 20.4.2007 Репутация: нет Всего: нет |
Так. Одно сделал. Всего лишь надо было отправку у клиента сделать отделным потоком. Но теперь остаётся второе. Сейчас когда клиент подключается, то его порт вводится в массив. Но не могу отследить закрытие клиентского окна, чтобы убрать данный порт из массива. Упс. Тут ещё хуже проблема. Сервер в себе держит сокет закрытого клиента. Т.е когда я создал два... А, чёрт понятно. У меня тут ClientSend не закрывается. Но я в него не могу засунуть recv, тогда он будет либо ожидать получения, либо отправку. И закроется, если я отправлю пакет закрывшемуся клиенту. Вот блин. Значит надо ещё у ClientReceive в if(asc < 0) закрыть поток ClientSend. Так у нас есть ExitThread но что-то не то. Что же делать?
![]() Сервер:
Клиент:
|
||||
|
|||||
Олег2005 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 421 Регистрация: 26.5.2005 Где: Рига Латвия Репутация: 6 Всего: 11 |
Надо пробовать использовать режим Overlapped - в нем можно одновременно и слать и принимать
|
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |