java - 带有java客户端的python套接字服务器-socket.error : [Errno 32] Broken pipe

标签 java python sockets

我正在尝试使用基于 python 的套接字服务器向 rasberry pi 发送命令,服务器将获取各种字符串命令,执行某些操作,然后等待下一个命令。

我有一个用 python 编写的套接字服务器,在树莓派上运行:

import socket

HOST = ''   # Symbolic name meaning the local host
PORT = 11113    # Arbitrary non-privileged port

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print 'Socket created'
try:
    s.bind((HOST, PORT))
except socket.error , msg:
    print 'Bind failed. Error code: ' + str(msg[0]) + 'Error message: ' + msg[1]
    sys.exit()
print 'Socket bind complete'


    def listen():
        s.listen(1)
        print 'Socket now listening'

        # Accept the connection
        (conn, addr) = s.accept()
        print 'Server: got connection from client ' + addr[0] + ':' + str(addr[1])

        while 1:
            data = conn.recv(1024)
            tokens = data.split(' ', 1)
            command = tokens[0].strip()

            print command

            # Send reply
            conn.send("Ack")
            break

        conn.close()
        # s.close()
        listen()
        print "connection closed"

    listen()

Java 客户端:

public class Client {

    public static void main(String... args) throws Exception {
        int portNum = 11113;

        Socket socket;

        socket = new Socket("192.168.1.20", portNum);


        DataOutputStream dout=new DataOutputStream(socket.getOutputStream());
        dout.writeUTF("Hello");
        dout.flush();
        dout.close();
        socket.close();


    }
}

Python 服务器启动正常并等待连接,当我运行客户端代码时,服务器输出 hello 文本,后跟大量空格,然后

编辑:空白是 while 1 循环输出传入的数据,然后循环失控直到崩溃。我想输出文本并继续列出更多连接。

编辑2:修复了python,使其不会崩溃 - 我离开循环并重新启动监听进程 - 这有效。如果这个脚本可以改进,请 lmk - 它看起来不会扩展。

最佳答案

errno.32为:断管(断管错误发生在一端 TCP 套接字关闭连接(使用断开连接)或被杀死,另一个

在您的java客户端中,您发送一些数据并立即关闭套接字,这可能会导致结果。我对java不熟悉。但是您需要遵循以下两件事。

1.删除java客户端中的sock.close()。

2.让你的java客户端 hibernate 一段时间,然后退出。

关于java - 带有java客户端的python套接字服务器-socket.error : [Errno 32] Broken pipe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38483555/

相关文章:

java - 为这种情况动态生成线程 Java

java - 如何捕获 WizardPage 的第一次显示

使用自定义列作为索引的 Python Pandas 到 CSV

python - dict的递归迭代和修改

java - 无法从套接字读取

android - 使用 charles 调试 Android 设备的套接字

java - 在多个 pdf 文件中搜索一个词并根据字数为 pdf 编制索引

java - 丢失 debug.keystore,我可以更新 Android 应用程序或检索应用程序数据吗?

python - 使用 Python os.system 将 MySQL 数据库导出到 sql 文件

python - TCP/IP header 错误 hdr 长度 40 - 太长