我找不到任何关于如何将数据从C#发送到python的示例或教程。
在我的应用程序中,C#应该不断从硬件读取数据,并将其发送到python进行处理。我曾尝试在python上创建一个基本服务器,在C#上创建一台基本客户端,但我始终无法通过C#的以下输出在客户端和服务器之间建立连接由于目标机器主动拒绝,因此无法建立连接。我在python客户端上测试了我的python服务器,我能够很好地建立连接。
如何使用套接字正确地将数据从C#发送到python?有关于我可以遵循的示例的可用教程吗?我的代码有问题吗?在这里:
Python服务器代码:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((socket.gethostname(), 1234))
s.listen(5)
while True:
clientsocket, address = s.accept()
print(f"Connection from {address} has been established!")
clientsocket.send(bytes("Welcome to the server!", "utf-8"))
clientsocket.close()
C#客户端代码:
static void ExecuteClient()
{
try
{
IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddr, 1234);
Socket sender = new Socket(ipAddr.AddressFamily,
SocketType.Stream, ProtocolType.Tcp);
try
{
sender.Connect(localEndPoint);
Console.WriteLine("Socket connected to -> {0} ",
sender.RemoteEndPoint.ToString());
byte[] messageReceived = new byte[1024];
int byteRecv = sender.Receive(messageReceived);
Console.WriteLine("Message from Server -> {0}",
Encoding.ASCII.GetString(messageReceived, 0, byteRecv));
sender.Shutdown(SocketShutdown.Both);
sender.Close();
}
// Manage of Socket's Exceptions
catch (ArgumentNullException ane)
{
Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
}
catch (SocketException se)
{
Console.WriteLine("SocketException : {0}", se.ToString());
}
catch (Exception e)
{
Console.WriteLine("Unexpected exception : {0}", e.ToString());
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
我知道这个问题很老了,但在互联网搜索中可能会遇到其他问题。
我刚刚开始学习Python,我正在用我的Raspberry Pi(SERVER(和Windows PC(CLIENT(处理类似的情况。
问题是您正在进行一个调用以获取每台机器的主机名。这显然会有所不同。您的客户端需要连接到服务器的地址。您的客户端代码正试图连接到正在运行的计算机,但该连接被拒绝。从未联系过服务器。
我做了以下更改,并能够建立连接。
Python服务器代码:
s.bind(("", 1234))
C#客户端代码:
//IPHostEntry ipHost = Dns.GetHostEntry(Dns.GetHostName());
//IPAddress ipAddr = ipHost.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("[SERVER IP]"), 1234);
服务器控制台响应:
Connection from ('[CLIENT IP]', 52074) has been established!
客户端控制台响应:
Socket connected to -> [::ffff:[SERVER IP]]:1234
Message from Server -> Welcome to the server!