Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WSAAsyncSelect и FD_READ 
:(
    Опции темы
bugmenot
Дата 29.3.2007, 05:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 3.7.2006

Репутация: нет
Всего: 1



Доброе время суток

Пишу простой messenger с помощью WinAPI и Winsock
Одна программа вызывает:
Код

...
MainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
...
WSAAsyncSelect(MainSocket, hWnd_, WM_SOCKET, FD_READ|FD_ACCEPT|FD_CLOSE);
...
ServerService.sin_family = AF_INET;
ServerService.sin_addr.s_addr = htonl(INADDR_ANY);
ServerService.sin_port = htons(port);

bind(MainSocket, (SOCKADDR*)&ServerService, sizeof(ServerService));
...
listen(MainSocket, 1)
...

и ждет

Вторая вызывает:
Код

...
MainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
...
WSAAsyncSelect(MainSocket, hWnd_, WM_SOCKET, FD_READ|FD_CONNECT|FD_CLOSE);
...
ClientService.sin_family = AF_INET;
ClientService.sin_addr.s_addr = inet_addr(szIP);
ClientService.sin_port = htons(port);

connect(MainSocket, (SOCKADDR*)&ClientService, sizeof(ClientService));
...

и подключается

Теперь, проблема:
Первая программа, нажатием на кнопку, вызывает
Код

send(MainSocket, "Hello", 5, 0);
send(MainSocket, "World", 5, 0);

А вотрая получаят "HelloWorld", размером 10, вместо того чтобы получить "Hello" размером 5 и "World" размером 5

А если первая программа, нажатием на кнопку, вызывает
Код

send(MainSocket, "Hello", 5, 0);
Sleep(100);
send(MainSocket, "World", 5, 0);

Все работает

Кто знает - почему, и как это можно исправить?

Спасибо!
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
yamayka
Дата 29.3.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 8.8.2006
Где: Minsk

Репутация: нет
Всего: нет



попробуй так
Код

send(MainSocket, "Hello\r\n", 9, 0);
send(MainSocket, "World\r\n", 9, 0);

PM MAIL ICQ   Вверх
bugmenot
Дата 29.3.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 3.7.2006

Репутация: нет
Всего: 1



yamayka, и что?

Во первых, размер этого - "Hello\r\n", 7, а не 9
Во вторых, придет "Hello\r\nWorld\r\n" с размером 12
--------------------
доска объявленийвсе о горных велосипедах 
PM MAIL   Вверх
ptr
Дата 30.3.2007, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 9
Всего: 14



Неплохо было бы видеть код приёма. И почитай в MSDN про recv.


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.