c# - windows上的tcp服务器c#,tcp客户端python raspberry pi

标签 c# python sockets tcp

我正在开发我的项目,我必须在 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()

关于c# - windows上的tcp服务器c#,tcp客户端python raspberry pi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21549963/

相关文章:

python 可变参数在函数名之前?

java - 我可以使用套接字列表发送给多个客户端吗?

c# - 无效操作异常 : The Undo operation encountered a context that is different from what was applied in the corresponding Set operation

javascript - 如何使用 ajax jQuery 将文本框的整数值发送到 [WebMethod]

c# - 无法将参数值从 List`1 转换为 IEnumerable`1

python - 两个 pandas DataFrame 之间每日数据的每月相关性

python - 在python中同时并行化不同的功能

java - Android 权限没有执行任何操作

c# - 如何从字符串 C# 中找到连字符的位置剥离字符串

c# - 为什么 RichTextBox 在文档开始之前总是包含额外的字符?