|
|
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
LepajПопробовал с проверкой и без... В errno в обоих случаях возвращает ноль . При соединии и разрыве? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:21 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
В общем у меня вот такая структура : Код: plaintext 1. 2. Прокся конектится к серверу один раз при запуске программы, а в дальнейшем требуется проводить проверку, жив ли сокет у сервера, для этого на проксе при передачи клиентом сообщения я и отсылаю эти сообщения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. У сервера организован прием сообщений, через recv: Код: plaintext 1. 2. 3. 4. 5. Так, вот в случае, если прокся не передает данные, то recv возращает -1, в обратном случае длину сообщения. Я проверил какая ошибка заносится в errno, с организацией проверки отправкой пустого сообщения, и без оной... В обоих случаях код ошибки был равен нулю. Т.е. как я понял ошибки как таковой не возникало. В случае, если закрыть программу сервера, проверка на проксе при отправке пустого сообщения будет возращать -1, т.е. это можно использовать, как флаг, что у сервера, что то не в порядке. Вот я и думаю, что наверное, такую проверку, жив ли сокет можно использовать :) (Надеюсь, объяснил понятно :) ) Хотя может, я что и напутал по неопытности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 13:52 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
Наверное можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:09 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
LepajЕсть какая нибудь возможность узнать жив ли он, не отправляя сообщение? Так как требуется это проверить до того как будут посланы данные.Ой, а он может помереть сразу после этой вашей проверки и до того как будут посланы данные. Зачем вам отдельная проверка ? Смотрите ра результат возвращаемый при попытке отправки данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:32 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
Barlone LepajЕсть какая нибудь возможность узнать жив ли он, не отправляя сообщение? Так как требуется это проверить до того как будут посланы данные.Ой, а он может помереть сразу после этой вашей проверки и до того как будут посланы данные. Зачем вам отдельная проверка ? Смотрите ра результат возвращаемый при попытке отправки данных. Бывает нужна реакция на отвал сокета. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:36 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
BarloneОй, а он может помереть сразу после этой вашей проверки и до того как будут посланы данные. Зачем вам отдельная проверка ? Смотрите ра результат возвращаемый при попытке отправки данных. Я не спорю, но Akh прав, тут как раз такая ситуация, нужно проверить не овалился ли сервер, если он отвалился, то не принимать соединения от клиентов. А если смотреть по отсылаемым данным, то клиент будет уверен, что отослал данные. Если реализовывать такой вариант, то в случае неудачной отправки нужно как то известить клиента, ведь он уже отослал данные, что усложнит программу и потребует обработку клиентом сообщений присылаемой проксей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 14:52 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
А если соединение с сервером порвалось, после получения данных от клиента? А если внутренняя ошибка на прокси произойдет? Клиент не может быть уверен, что данные, которые он отправил дошли до сервера, тем более, что они обработаны сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 15:10 |
|
||
|
Как узнать жив ли SOCKET до передачи данных?
|
|||
|---|---|---|---|
|
#18+
AkhА если соединение с сервером порвалось, после получения данных от клиента? А если внутренняя ошибка на прокси произойдет? Клиент не может быть уверен, что данные, которые он отправил дошли до сервера, тем более, что они обработаны сервером. Конечно не может :D, но так хоть частично можно обезопаситься :) А вообще над этой задачей нужно думать. Вот например, сейчас надо будет сделать защиту от переполнения буфера :) Да и вообще может произойти, что угодно. Я только неделю с сетью и Си работаю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2006, 15:21 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2030078]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 192ms |
| total: | 313ms |

| 0 / 0 |
