Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# BeginReceiveFrom()是否为空?_C#_Sockets_Unity3d - Fatal编程技术网

C# BeginReceiveFrom()是否为空?

C# BeginReceiveFrom()是否为空?,c#,sockets,unity3d,C#,Sockets,Unity3d,我一直在尝试在windows.net套接字中设置UDP客户端/服务器。 在下面的客户机脚本中,当客户机“连接”时,我能够向服务器发送消息,但当我尝试调用BeginToReceive()函数时,我得到一个空引用 我不明白为什么我可以发送消息(当然是使用服务器端点),但由于空错误而无法接收。我是新来的插座,我想知道为什么这是不工作 服务器运行在windows c#应用程序中,客户端运行在Unity3D中的c#脚本中 private EndPoint epServer; private Socket

我一直在尝试在windows.net套接字中设置UDP客户端/服务器。 在下面的客户机脚本中,当客户机“连接”时,我能够向服务器发送消息,但当我尝试调用BeginToReceive()函数时,我得到一个空引用

我不明白为什么我可以发送消息(当然是使用服务器端点),但由于空错误而无法接收。我是新来的插座,我想知道为什么这是不工作

服务器运行在windows c#应用程序中,客户端运行在Unity3D中的c#脚本中

private EndPoint epServer;
private Socket clientSocket;
private byte[] myBuffer = new byte[1024];

private void ConnectToServer ( ) {  
    clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
    IPEndPoint server = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 61456);//Connect to the Local server 
    epServer = (EndPoint)server; //Access the server

    WritePacketAndSend("Hello Server");//This creates the packet and uses the BeginToSend() function to send the string to the server

    try{
         clientSocket.BeginReceiveFrom(myBuffer, 0, myBuffer.Length, SocketFlags.None, ref epServer, new AsyncCallback(ReceiveData), epServer);//<<< Null reference here not sure why...
    } catch(Exception ex) {
         print(ex.Message); //Keep getting: Object reference not set to an instance of an object
    }
}

private void ReceiveData(IAsyncResult ar){

   print("Entered ReceiveData");//The code never enters here

  try{                              
       IPEndPoint server = new IPEndPoint(IPAddress.Parse("127.0.0.1", 61456);
       epServer = (EndPoint)server;
       clientSocket.EndReceiveFrom(ar, ref epServer);

       clientSocket.EndReceive(ar);     

       print(Encoding.UTF8.GetBytes(myBuffer));

       clientSocket.BeginReceiveFrom(myBuffer, 0, myBuffer.Length, SocketFlags.None, ref epServer, new AsyncCallback(ReceiveData), epServer, 

      } catch (Exception ex){
          print("Receive Data: " + ex.Message); 
      }
   }
私有端点epServer;
私有套接字clientSocket;
私有字节[]myBuffer=新字节[1024];
私有的void ConnectToServer(){
clientSocket=新套接字(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
IPEndPoint server=new IPEndPoint(IPAddress.Parse(“127.0.0.1”),61456);//连接到本地服务器
epServer=(端点)server;//访问服务器
WritePacketAndSend(“Hello Server”);//这将创建数据包并使用BeginToSend()函数将字符串发送到服务器
试一试{

clientSocket.BeginReceiveFrom(myBuffer,0,myBuffer.Length,SocketFlags.None,ref epServer,new AsyncCallback(ReceiveData),epServer);//ReceiveData的代码在哪里?刚刚添加了新代码。ReceiveData的代码在哪里?刚刚添加了新代码。