问题描述
我在局域网中尝试通过UDP连接将数据包发送到专用IP时收到以下错误。我试图使用其他端口,并在客户端上禁用防火墙无济于事。
SocketException: An existing connection was forcibly closed by the remote host.
System.Net.sockets.socket.ReceiveFrom (System.Byte[] buffer,system.int32 offset,system.int32 size,System.Net.sockets.socketFlags socketFlags,System.Net.EndPoint& remoteEP) (at <14e3453b740b4bd690e8d4e5a013a715>:0)
System.Net.sockets.socket.ReceiveFrom (System.Byte[] buffer,System.Net.EndPoint& remoteEP) (at <14e3453b740b4bd690e8d4e5a013a715>:0)
System.Net.sockets.UdpClient.Receive (System.Net.IPEndPoint& remoteEP) (at <14e3453b740b4bd690e8d4e5a013a715>:0)
将UDP服务器与UDP客户端托管在同一台计算机上时,我没有问题。
下面是客户端。
using System.Net.sockets;
using System.Net;
private void Start()
{
var client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("192.168.1.20"),20003); // endpoint where server is listening
client.Connect(ep);
// send data
client.Send(new byte[] { 1,2,3,4,5 },5);
// then receive data
var receivedData = client.Receive(ref ep);
Debug.Log("receive data from " + ep.ToString());
}
下面是服务器端。
import socket
localIP = "127.0.0.1"
localPort = 20003
bufferSize = 1024
msgFromServer = "Hello UDP Client"
bytesToSend = str.encode(msgFromServer)
# Create a datagram socket
UDPServerSocket = socket.socket(family=socket.AF_INET,type=socket.soCK_DGRAM)
# Bind to address and ip
UDPServerSocket.bind((localIP,localPort))
print("UDP server up and listening")
# Listen for incoming datagrams
while True:
bytesAddresspair = UDPServerSocket.recvfrom(bufferSize)
message = bytesAddresspair[0]
address = bytesAddresspair[1]
clientMsg = "Message from Client:{}".format(message)
clientIP = "Client IP Address:{}".format(address)
print(clientMsg)
print(clientIP)
# Sending a reply to client
UDPServerSocket.sendto(bytesToSend,address)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)