为了账号安全,请及时绑定邮箱和手机立即绑定

无法从 Python Socket 到 Java Socket 接收字符串数据

无法从 Python Socket 到 Java Socket 接收字符串数据

阿波罗的战车 2021-06-09 21:29:01
我在使用套接字时遇到问题正如您所看到的,当我尝试将字符串从 JAVA 发送到 PYTHON 时,代码有效。但是,当我尝试将字符串从 PYTHON 发送到 JAVA 时遇到了问题,这是相反的方式。我需要将其转换为字节并对其进行解码,因为我在发送之前对字符串进行了编码。因此,现在的问题是当我从 Python 套接字发送字符串并通过 Java 套接字接收字符串时,我的代码如何或有什么问题?我真的需要帮助,谢谢!Python(服务器)代码:import socketimport sslimport hashlibimport osfrom Crypto.Cipher import AESimport hashlibfrom Crypto import Random sHost = ''sPort = 1234def bindSocket():    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #IPv4 and TCP    try:        s.bind((sHost,sPort))        print("Socket created and binded")    except socket.error as msgError:        print(msgError)        print("Error in Binding Socket")    return s #so that we can use itdef socketConnect():    s.listen(1) #listen to 1 connection at a time    while True:        try:            conn, address = s.accept() #Accept connection from client            print ("Connected to: " + address[0] + ":" +str(address[1]))        except socket.error as error:            print ("Error: {0}" .format(e))            print ("Unable to start socket")        return conndef loopCommand(conn):    while True:        passphrase = "Hello Java Client "        data = conn.recv(1024)#receive the message sent by client        print(data)        conn.send(passphrase.encode('utf-8'))        print("Another String is sent to Java")s = bindSocket()while True:    try:        conn = socketConnect()        loopCommand(conn)    except:        pass
查看完整描述

1 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

您似乎认为String messagetype = socketOutput.toString();执行 I/O。它没有,所以打印它甚至调用它什么都不做,也证明不了任何事情。您需要从套接字输入流中读取

顺便说一句clientSocket.isConnected(),在您测试它的时候不可能是假的。如果连接失败,则会抛出异常。同样,clientSocket.isClosed()在您测试它时不可能为真,因为您还没有关闭刚刚创建的套接字。此外,如果isClosed()为真,则不意味着“连接失败”,并且isConnected()为假并不意味着isClosed()为真。删除这一切。


查看完整回答
反对 回复 2021-06-17
  • 1 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信