gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:40:37 25 4
gpt4 key购买 nike

我正在尝试使用基于 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com