Текущий архив: 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.46 MB
Время: 0.006 c