Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.28;
Скачать: CL | DM;

Вниз

ServerSock - как отправить сообщ. клиенту   Найти похожие ветки 

 
Dona ©   (2003-03-06 12:45) [0]

Помогите, пож-та! Как с помощью ф-й WinAPI отправить что-то подключенному клиенту? Заранее спасибо.


 
Digitman ©   (2003-03-06 13:03) [1]

см. Send(), SendTo()


 
Dona ©   (2003-03-06 13:11) [2]

Да,есть такое. Но перед вызовом этих ф-й наверняка потребуется что-то еще. Не могу сообразить:
Для сервера выз-ся послед-ть Socket, bind, listen, accept, Recv,
Для клиента - Socket, Connect, Send.

Но что нужно в моем случае?


 
Wonder ©   (2003-03-06 13:36) [3]

Пардон, а подключенному куда?


 
Dona ©   (2003-03-06 13:41) [4]

К этому самому серверу.


 
Wonder ©   (2003-03-06 13:55) [5]

К "этому" это какому? :)
Digitman написал ведь - Send, SendTo


 
Digitman ©   (2003-03-06 14:05) [6]


> Dona


Верной дорогой идете , товарисч !)

Все правильно - основная последовательность вызовов для TCP-гнезд именно такая


 
Dona ©   (2003-03-06 14:37) [7]

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

НО как отправить сообщение от сервера к клиенту? Просто SendTo(SrvSock,... ClAddr,...) не работает, возвращает Socket_Error.



 
Digitman ©   (2003-03-06 14:55) [8]

да точно так же как и клиент это делает !
после того , как коннект установлен, для образованной в результате коннекта вирт.петли соединения нет понятия "сервер" и "клиент". А есть вместо этого в каждый момент времени "приемник" и "передатчик".

"передатчик" вызывает метод send() для хэндла гнезда на своей стороне , а "приемник" - recv() для хэндла гнезда на своей

хэндл гнезда на клиентской стороне возвращается вызовом socket(), на серверной же стороне хэндл гнезда возвращается вызовом [WSA]accept(), который автоматически создает новое гнездо в результате успешного установления коннекта по запросу кл.стороны

т.о., для каждого соединения между клиентами и сервером образуется индивидуальные вирт.петли соединений между гнездом клиента (connect) и автоматически отдельно создаваемым гнездом сервера (accept)



 
Dona ©   (2003-03-06 15:12) [9]

Спасибо большое, Digitman!

Хоть что-то до меня дошло! Send работает, теперь будем делать recv :)


 
Digitman ©   (2003-03-06 15:18) [10]

а что тут непонятного ? вот же хэлп на accept():

Remarks

This routine extracts the first connection on the queue of pending connections on s
, creates a new socket and returns a handle to the new socket. The newly created socket has the same properties as s including asynchronous events registered with WSAAsyncSelect or with WSAEventSelect, but not including the listening socket"s group ID, if any. If no pending connections are present on the queue, and the socket is not marked as nonblocking, accept blocks the caller until a connection is present. If the socket is marked nonblocking and no pending connections are present on the queue, accept returns an error as described below. The accepted socket cannot be used to accept more connections. The original socket remains open.



Страницы: 1 вся ветка

Текущий архив: 2003.04.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
6-91428
dums
2003-03-05 17:50
2003.04.28
анонимность клиента при работе с ISAPI DLL??


14-91492
it
2003-04-10 00:18
2003.04.28
Получение файлов из подпапок


3-91181
АндрейБ
2003-04-09 14:06
2003.04.28
Номер записи в TTable


14-91524
Pitay
2003-04-10 21:25
2003.04.28
Клавиатура


1-91373
дикий Джо
2003-04-16 09:11
2003.04.28
Как сделать чтобы MDIChild Form при сворачивании исчезала?