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

2024-10-01 07:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不知道如何从Python服务器向Java客户机发送消息。我总是出错:[错误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()

我这样使用函数:

^{pr2}$

在客户端(在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

有人知道我哪里错了吗? 谢谢。在

马克西姆。在


Tags: self服务器消息new客户机portresponsedef
2条回答

一个问题是,您在java中创建的套接字不是^{},也就是说-套接字对象只是创建的,但是没有打开,等待raspberry pi传入套接字连接。在

添加行

socket.bind(new java.net.InetSocketAddress("192.168.1.18", 15555));

创建套接字后。Socket构造函数中的地址可能不是必需的。在

一般来说,这是一个奇怪的设置,但在服务器中,您应该在连接套接字上发送(自助式客户机),不是在监听插座上(self.socketPi). 在

相关问题 更多 >