Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
4-91601
LeReve
2003-03-01 21:30
2003.04.28
как изменить цвет ToolBar a на АПИ?


11-91238
SPeller
2002-07-20 10:51
2003.04.28
Глюк в тулбаре ?


3-91165
bSava
2003-04-09 13:17
2003.04.28
Поле типа


1-91255
Sanek
2003-04-15 15:57
2003.04.28
Проблемы с TextOutW


14-91518
Deadlock
2003-04-08 04:19
2003.04.28
Сплайны




   Наверх