[英]tcp server c# on windows, tcp client python raspberry pi
我正在我的项目上工作,我必须在Windows上用C#编写的tcp服务器和在raspbian(raspberry pi)上用python编写的客户端之间进行通信。 我的服务器运行正常(在本地计算机上使用c#进行了客户端测试),但是运行时客户端数据未发送到服务器端。
C#代码:
static void Main(string[] args)
{
IPAddress localAdd = IPAddress.Parse(SERVER_IP);
TcpListener listener = new TcpListener(localAdd, PORT_NO);
Console.WriteLine("Krenuo sa radom...");
listener.Start();
while (true)
{
TcpClient client = listener.AcceptTcpClient();
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Primljeno : " + dataReceived);
Console.WriteLine("Dobijena poruka na serveru : " + dataReceived);
nwStream.Write(buffer, 0, bytesRead);
Console.WriteLine("\n");
client.Close();
}
listener.Stop();
python代码:
def send(ctrl_cyc):
HOST, PORT = "10.93.34.41", 5000
data = ""
data += str(ctrl_cyc)
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((HOST, PORT))
sock.sendall(bytes(data + "\n", "utf-8"))
finally:
sock.close()
return True
我找到了解决方案...好吧,我想我找到了。 问题是,我的帐户可能没有监听网络中其他设备的权限(网络配置)。 我在管理员的计算机上尝试了我的解决方案,并且该解决方案正在运行,并且将其放在公司的服务器上,并且运行良好。
如果有人需要,这里是代码。
C#代码:
static void Main(string[] args)
{
IPAddress localAdd = IPAddress.Parse(SERVER_IP);
TcpListener listener = new TcpListener(IPAddress.Any, PORT_NO);
Console.WriteLine("Krenuo sa radom...");
listener.Start();
while (true)
{
TcpClient client = listener.AcceptTcpClient();
NetworkStream nwStream = client.GetStream();
byte[] buffer = new byte[client.ReceiveBufferSize];
int bytesRead = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
string dataReceived = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Primljeno : " + dataReceived);
Console.WriteLine("Dobijena poruka na serveru : " + dataReceived);
nwStream.Write(buffer, 0, bytesRead);
Console.WriteLine("\n");
client.Close();
}
listener.Stop();
}
python代码:
import socket
HOST, PORT = "10.XX.XX.XX", 5000
ctrl_cyc="1234567"
data = ""
data += str(ctrl_cyc)
# Create a socket (SOCK_STREAM means a TCP socket)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
# Connect to server and send data
sock.connect((HOST, PORT))
sock.sendall(bytes(data + "\n"))
data = sock.recv(1024)
print data
finally:
sock.close()
当您绑定到特定的IP地址时,服务器仅侦听用于该IP地址的接口。 因此,如果您有一个以上的网络适配器,并且想要监听所有这些适配器,请在TcpListener的构造函数中使用IpAddress.Any
。
如果不是这种情况,您能否给我们更多信息:客户端是否提供任何错误信息/异常? 您是否嗅探客户端和服务器之间的流量? 是否建立连接? ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.