UDP服务器,数据报套接字,ReceiveFrom()引发WSAENOTCONN异常; SendTo()工作正常。 [英] UDP Server, Datagram Socket, ReceiveFrom() raises WSAENOTCONN exception; SendTo() works fine.

查看:62
本文介绍了UDP服务器,数据报套接字,ReceiveFrom()引发WSAENOTCONN异常; SendTo()工作正常。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在运行一个简单的应用程序,试图设置与远程UDP客户端通信的UDP服务器。  一切正常 - 在客户端发送,接收和SendTo,但是,ReceiveFrom导致SocketException错误代码  WSAENOTCONN

I'm running a simple app that attempts to setup a UDP Server communicating with a remote UDP Client.  Everything works - send, receive on the client side and SendTo on this side,  but ReceiveFrom causes a SocketException with error code WSAENOTCONN.

这是可疑的udp服务器代码:

Here is the suspect udp server code :

  ---  

 ---   

          localEndPoint = gcnew IPEndPoint(IPAddress :: Any,port);

          socket = gcnew Socket(localEndPoint-> AddressFamily,

                  SocketType :: Dgram,

                  ProtocolType :: Udp);



  &NBSP; &NBSP; &NBSP;   socket-> Bind(safe_cast< EndPoint ^>(localEndPoint));

  &NBSP; &NBSP; &NBSP;   socket-> ReceiveTimeout = rcvTimeout;

  &NBSP; &NBSP; &NBSP;   socket-> SendTimeout    = sndTimeout;



  &NBSP; &NBSP; &NBSP;   remoteEndPoint = gcnew IPEndPoint(IPAddress :: Any,0);

  &NBSP; &NBSP; &NBSP;   endPoint  &NBSP; &NBSP; = safe_cast< EndPoint ^>(remoteEndPoint);

         localEndPoint = gcnew IPEndPoint(IPAddress::Any, port);
         socket = gcnew Socket(localEndPoint->AddressFamily,
                               SocketType::Dgram,
                               ProtocolType::Udp);

         socket->Bind(safe_cast<EndPoint^>(localEndPoint));
         socket->ReceiveTimeout = rcvTimeout;
         socket->SendTimeout    = sndTimeout;

         remoteEndPoint = gcnew IPEndPoint(IPAddress::Any, 0);
         endPoint       = safe_cast<EndPoint^>(remoteEndPoint);

...

    array< Byte> ^ data = Text :: Encoding :: ASCII-> GetBytes(msg);

    socket-> SendTo(data,data-> Length,SocketFlags :: None,endPoint);

   array<Byte>^data = Text::Encoding::ASCII->GetBytes(msg);
   socket->SendTo(data, data->Length, SocketFlags::None, endPoint);

...

   &NBSP; &NBSP; Int32字节;

  &NBSP; &NBSP; array< Byte> ^ data = gcnew array< Byte>(256);

  &NBSP; &NBSP; bytes  = socket-> ReceiveFrom(data,SocketFlags :: None,endPoint);

---

      bytes  = socket->ReceiveFrom(data, SocketFlags::None, endPoint);
---

有人能告诉我怎么了 ? &NBSP;非常感谢。

Could someone tell me what is wrong ?   Much appreciated.

推荐答案

您好iGUB14,

Hi iGUB14,

欢迎来到MSDN论坛。

Welcome to MSDN forum.

此论坛正在讨论Visual Studio WPF / SL Designer,Visual Studio Guidance Automation Toolkit,开发人员文档和帮助系统,以及Visual Studio编辑器。 

您的问题与C ++开发有关,我将移动此线程到
Visual Studio Languages
 ,  Windows桌面开发
&NBSP;>&NBSP;
Visual C ++
专业答案。

Your issue is related to C++ develop, I will move this thread to Visual Studio Languages  , Windows Desktop Development  >  Visual C++ for a professional answer.

祝你好运,

乔伊斯


这篇关于UDP服务器,数据报套接字,ReceiveFrom()引发WSAENOTCONN异常; SendTo()工作正常。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆