热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android和python进行socket通信遇到的readLine的坑

pythonsocket作为客户端向安卓服务端发送消息,服务端却接收不到

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”,这可以作为连接异常关闭的判断条件。


推荐阅读
author-avatar
交通运输程俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有