gpt4 book ai didi

java - 无法从 python 服务器向 java 客户端发送消息

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

我尝试在我的 Raspberry Pi(Python 中的服务器)和本地网络上的 java 客户端之间创建一个客户端/服务器应用程序。

我不知道如何将消息从 Python 服务器发送到 Java 客户端。我总是遇到错误:[Errno 32] 管道损坏。

我看不出我错在哪里。

这里是服务器代码:

class ServerLED():
'''
classdocs
'''


def __init__(self, port = 15555):
'''
Constructor
'''
self.socketPi = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socketPi.bind(("", port))
self.response = ""

def listening(self):
self.socketPi.listen(5)
self.client, self.address = self.socketPi.accept()
print "{} connected".format( self.address )

def receivingMessage(self):
self.response = self.client.recv(1024)
if self.response != "":
print self.response

def answer(self):
messageTosend = "Echo \r\n"
try:
self.socketPi.send(messageTosend)
except socket.error, e:
print "error is ", e
self.socketPi.close()

我这样使用该函数:

socketPi = Server.ServerLED()
print "listening..."
socketPi.listening()
print "sending message..."
socketPi.answer()
print "done"
socketPi.receivingMessage()

在客户端(JAVA):

Socket socket = new Socket("192.168.1.18", 15555);
System.out.println("SOCKET = " + socket);

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(socket.getInputStream()));
str = in.readLine(); // Reding "ECHO"

System.out.println(str);

out.println("Hello"); // sending message

我总是卡在服务器的第一个“send()”中。如果我首先从客户端向服务器发送消息,服务器会读取该消息但无法响应。

服务器输出:

Start python for LED
listening...
('192.168.1.13', 58774) connected
sending message...
error is [Errno 32] Broken pipe

有人知道我错在哪里吗?非常感谢。

马克西姆。

最佳答案

这通常是一个奇怪的设置,但在服务器中,您应该在连接套接字(self.client)上发送,而不是在监听套接字(self.socketPi)上发送。

关于java - 无法从 python 服务器向 java 客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31297486/

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