作者:交通运输程俊 | 来源:互联网 | 2023-07-04 08:56
python socket作为客户端向安卓服务端发送消息,服务端却接收不到
最近需要使用python和安卓app进行socket通信,python代码如下:
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect((host, port))
s.send('hello,this is a test info !'.encode())
正常情况下,send执行完之后安卓端就应该收到python发送的信息了。
但是由于Java写的不多,从网上搜的Java的socket代码,基本都是这样的:
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
BufferedInputStream buffer = new BufferedInputStream(inputStream);
String s = buffer.readLine();
Java的readLine函数会一直阻塞直到读取到"\n"。这就导致安卓端始终接收不到消息,在python发送消息的时候将消息后面加个\n就好了,如s.send("hello world\n".encode())
,当然使用Java的其他函数应该也是可以的。
另外,python和Java的socket在关闭连接时貌似也会向连接方发送个“\n”,这可以作为连接异常关闭的判断条件。