Android Tcp通信outputStream调用write方法数据发送不出去,flush根本没用

shape_of_me 2018-11-14 03:42:34
先说一下我要实现的功能:
客户端一个循环接收线程,当接收到一组数据后,回复一组数据给服务器。一收一发这样的过程。
但是在发送的时候服务器(单片机的WIFI模块)总是接收不到数据,网上找了很久,尝试了两种方法:
1、在flush后加上close关闭输出流,但是关闭输出流也就关闭了socket,服务器串口打印只能接收到一次数据,总不能每次接收到数据都重新连接一遍ip地址和端口号吧?
2、服务端在while循环体中设定跳出条件,或是约定数据长度,或是发送字符串有结束标志。这个不可行,直接放弃。

我的程序如下
os.println(SendData);
os.flush();

os是 PrintWriter os = new PrintWriter(Wifi_socket.getOutputStream());



或者写成

output.write(SendData);
output.flush();


output是 output = Wifi_socket.getOutputStream();

如果在flush后面加上close方法服务器还是接受不到数据
...全文
839 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
没有鱼了 2018-11-15
  • 打赏
  • 举报
回复
你这个意思就是服务器既要发送数据然后还要不停的接收客户端数据,客户端也是一样,那你通过一个Socket连接做不到的,除非只收发一次; 只要把服务器即当作服务端有作为客户端就行了,代码太长看这篇博客就行了 https://blog.csdn.net/qq_30993595/article/details/80401402
  • 打赏
  • 举报
回复
PrintWriter socketWriter = new PrintWriter(socket.getOutputStream());
            socketWriter.write(SendData);
            socketWriter.flush();
flush后面无需加上close方法,结束通讯的时候才需要Close

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧