ssx*_*ssx 1 c# python sockets communication
我正在C#(客户端)和Python(服务器)之间进行基本的套接字通信,但是我不明白为什么客户端会出现此错误:
[错误]致命异常:System.Net.Sockets.SocketException:在/ private / tmp / monobuild / build / BUILD /中的System.Net.Sockets.Socket.Connect(System.Net.EndPoint remoteEP)[0x00159]拒绝连接/ private / tmp /中的System.Net.Sockets.TcpClient.Connect上的mono-2.10.9 / mcs / class / System / System.Net.Sockets / Socket_2_1.cs:1262(System.Net.IPEndPoint remote_end_point)[0x00000] monobuild / build / BUILD / mono-2.10.9 / mcs / class / System / System / System.Net.Sockets / TcpClient.cs:284(位于System.Net.Sockets.TcpClient.Connect(System.Net.IPAddress [] ipAddresses,Int32端口)/private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System/System.Net.Sockets/TcpClient.cs:355中的[0x000b3]
我的程序确实简短易用,所以我认为这是一个菜鸟问题,但我不明白。我只需要一个客户端向服务器发送消息,该消息将在控制台上打印出来。
这是C#客户端(错误来自:socket.Connect(“ localhost”,9999);)
using System;
using System.Net.Sockets;
namespace MyClient
{
class Client_Socket{
public void Publish(){
TcpClient socket = new TcpClient();
socket.Connect("localhost",9999);
NetworkStream network = socket.GetStream();
System.IO.StreamWriter streamWriter= new System.IO.StreamWriter(network);
streamWriter.WriteLine("MESSAGER HARGONIEN");
streamWriter.Flush();
network.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
和Python服务器:
from socket import *
if __name__ == "__main__":
while(1):
PySocket = socket (AF_INET,SOCK_DGRAM)
PySocket.bind (('localhost',9999))
Donnee, Client = PySocket.recvfrom (1024)
print(Donnee)
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助。
你有两个问题。首先是您要绑定到localhost。0.0.0.0如果希望其他计算机能够连接,则可能要绑定到:
PySocket.bind (('0.0.0.0',9999))
Run Code Online (Sandbox Code Playgroud)
另一个问题是您正在使用UDP并尝试与TCP连接。如果要使用UDP,可以使用UdpClient而不是TcpClient。如果您想使用TCP,你将不得不使用SOCK_STREAM,而不是SOCK_DGRAM和使用listen,accept以及recv不是recvfrom。