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