2015-11-02 4 views
0

Я нахожусь в середине обучения Winsock и столкнулся с концептуальной проблемой при получении уведомления о статусе завершения запроса с сервера. Поскольку клиент предназначен только для отправки во время приема сервера, есть ли способ, которым клиент может быть уведомлен? Благодарю.Как клиент может получить уведомление о статусе завершения запроса, отправленного на сервер? -Winsock

+0

Я не могу понять, спрашиваете ли вы, может ли сервер отправлять данные в ответ на подключенный сокет или хотите ли вы, чтобы сервер каким-то образом инициировал соединение с клиентом после того, как начальное соединение было закрыто? –

+0

'клиент предназначен только для отправки в то время, как сервер получает' Это довольно необычный протокол, о котором мы думаем. В типичном протоколе - скажем, HTTP - клиент инициирует соединение, а затем отправляет запрос, который получает сервер. Затем сервер обрабатывает запрос и отправляет ответ, который получает клиент. –

+0

Привет @LukePark, извините за неопределенный вопрос, ya, я спрашиваю, может ли сервер отправлять данные в ответ на подключенный сокет (клиент)? Спасибо – vincent911001

ответ

0

Соединитель на стороне сервера, который используется, когда вы вызываете recv, также может использоваться для отправки данных. Помните, что структура SOCKET, которую вы получаете при приеме клиента на сервере, такая же, как структура SOCKET на стороне клиента, которая используется для подключения. Таким образом, после получения данных от клиента, вы можете отправить ответ, как

send(s, res_str, strlen(res_str), 0); 

Где res_str ваша строка ответа. Технически res_str имеет размер strlen(res_str) + 1, но нам не нужен нулевой символ.

+0

Привет, Люк, большое спасибо за вашу помощь. – vincent911001

+0

Если это ответили на ваш вопрос, отметьте его как ответ. Пожалуйста. –