Как обеспечить сокет отправленных данных? - PullRequest
2 голосов
/ 07 июня 2011

В .NET CF на POS-устройстве на базе Windows CE 5.0, если нет доступного соединения (GPRS / WiFi), при попытке подключить объект сокета я не получаю никаких исключений, даже после него, когда пытаюсь для отправки байтов куда-нибудь методом Socket.SentTo () я тоже не получаю никаких исключений! И даже возвращаемое значение, указывающее размер полностью отправленных байтов, является правильным! в чем дело? Как я могу обеспечить здоровье операций? части моего кода:

Socket m_socClient = new Socket(
  AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAdd = IPAddress.Parse("192.168.7.80");
IPEndPoint remoteEP = new IPEndPoint(ipAdd, 2415);
m_socClient.Connect(remoteEP); // No exception!

// why works?
int iSent = m_socClient.SendTo(byData, byData.Length, 
     SocketFlags.None, remoteEP);

1 Ответ

1 голос
/ 07 июня 2011

Несколько предложений:

  • Проверьте свойство соединения Connected

  • Я понимаю, что SendTo больше подходит дляпротоколы без установления соединения, и Send () лучше подходит для протоколов, ориентированных на соединение, таких как TCP.

  • Send () (и я ожидаю, что SendTo ()) может не иметь эффекта, если нет данныхотправлять.Вы проверяли, есть ли данные?

...