Форумы для: пользователей, администраторов, математиков и филологов.
0

Вот, к примеру, я подключаюсь к серверу:

TcpClient Client = new TcpClient();
Socket socket;

Client.Connetc("127.0.0.1", 1200);
socket
= Client.Client;

Теперь как проверить, что сокет удачно подключен. К примеру, чтоб было так

if (Сокет успешно подключен)
{
   
int i = 1;
}
else {
   
int a = 0;
}

задан 6 Май 22:11

VOLKyiv's gravatar image

VOLKyiv
1

перемечен 9 Май 19:51

northerner's gravatar image

northerner
2.9k27

1

Какая система программирования (ОС, язык) Вас интересует ?

В большинстве случаев, если Connect() выполнен успешно, то socket удачно подключен.

(6 Май 23:48) avp
1

Если ничего не вернуло ошибку, то скорее всего все подключено с "этой стороны". А проверить, что подключение действительно установлено - нужно отправить данные и получить ответ (если он нужен).

(7 Май 10:47) KoVadim

Windows, ASP.NET

(9 Май 18:03) VOLKyiv
1

Один индус из Лондона приводит в своем блоге вот такой рецепт проверки подключения сокета в произвольный момент времени. У класса Socket имеется булевское свойство Connected, которое отражает факт подключения в ходе последней операции с удаленным узлом (возможно, выполненной давно). Метод проверки подключения по факту заключается в пинговании сокета:

public static bool IsSocketStillConnected(Socket socket)
{
   
bool connected = true;
   
bool blockingState = socket.Blocking;
   
try
   
{
       
byte[] tmp = new byte[1];
        socket
.Blocking = false;
        socket
.Send(tmp, 0, 0);
   
}
   
catch (SocketException e)
   
{
        connected
= false;
   
}
   
finally
   
{
        socket
.Blocking = blockingState;
   
}
   
return connected;
}

Использоваться вышеприведенная функция может, например, так:

if (IsSocketStillConnected(mySocket))
{
    mySocket
.Send(message);
}
ссылка

отвечен 9 Май 20:38

northerner's gravatar image

northerner
2.9k27

1

Вообще-то надо определить поточнее, что значит "сокет подключен" ? В данный момент доступно чтение, запись или и то и другое ?

Как известно, есть вызов shutdown(int sockfd, int how);

   If how is  SHUT_RD,
   further  receptions  will  be  disallowed
.   If how is SHUT_WR, further
   transmissions will be disallowed
.  If how is SHUT_RDWR, further  recep
   tions
and transmissions will be disallowed.

В windows наверняка есть его аналог.

(10 Май 0:07) avp
Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

ХэшКод - это совместно редактируемый форум вопросов и ответов для начинающих и опытных программистов.

Присоединяйтесь!

отмечен:

×430
×169
×88

задан
6 Май 22:11

показан
196 раз

обновлен
10 Май 0:08

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии

Рейтинг@Mail.ru Rambler's Top100

Впервые здесь? Загляните в справку!

×