我在java中设置一个简单的TCP客户端服务器交互.

服务器:

服务器是用Java编写的桌面客户端:

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

class TCPServer

{

public static int PORT_NUMBER = 6129;

public static void main(String argv[]) throws Exception

{

String clientMessage;

ServerSocket welcomeSocket = new ServerSocket(PORT_NUMBER);

while (true)

{

Socket connectionSocket = welcomeSocket.accept();

BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());

clientMessage = inFromClient.readLine();

System.out.println("Received: " + clientMessage);

outToClient.writeBytes("I received this: "+ clientMessage +"\n");

}

}

}

客户:

客户端是一个Android应用程序,通过TCP连接到服务器.在客户端我有一个方法sendMessage(String msg),它尝试向服务器发送消息.

public static void sendMessage(String msg) throws IOException

{

if (mainSocket == null)

{

return;

}

if (!mainSocket.isConnected())

{

connectSocket();

}

PrintWriter output = new PrintWriter( mainSocket.getOutputStream());

output.println(msg);

output.flush();

System.out.println(msg);

}

问题是,服务器收到第一条消息,但任何后续消息都不会显示.当我关闭客户端时,所有其他消息突然出现在服务器中.

这是服务器看到的:

Received: message 1

很长一段时间都没有活动……

然后我关闭了客户端

Received: message 2 message 3 message 4 message 5 etc..

我在sendMessage()方法中放了一个println,并且实时调用了方法本身.

解决方法:

每次发送消息时,您都需要在客户端显式关闭()PrintWriter.当您完成读取inFromClient时,在服务器端也是如此,并且当您完成写入outToClient时再次.

另见这篇basic example,他们很好地解释了基本的工作流程:

However, the basics are much the same as they are in this program:

Open a socket.

Open an input stream and output stream to the socket.

Read from and write to the stream according to the server’s protocol.

Close the streams.

Close the socket.

标签:android,java,tcp

来源: https://codeday.me/bug/20190826/1734001.html

java tcp发消息给硬件_java – TCP客户端/服务器通信只发送第一条消息?相关推荐

  1. rocketmq发送第一条消息(三)

    直接上代码 导包,pom.xml <dependency><groupId>org.apache.rocketmq</groupId><artifactId& ...

  2. vs如何实现tcp连续发送多条消息_消息队列之 RabbitMQ

    为什么要使用MQ消息中间件?它解决了什么问题?关于为什么要使用消息中间件?消息中间件是如何做到同步变异步.流量削锋.应用解耦的?网上已经有很多说明,我这里就不再说明.我在接下来的RabbitMq系列博 ...

  3. php微信公众号向指定客服发信息,微信公众号给用户发送一条消息 客服消息

    可以用客服消息接口或模板消息接口实现.但是需要认证公众号才能有权限. 认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限. 下面是发送客服消息的 ...

  4. 领英如何高效加好友,领英一天最多可以发送多少条消息?

    一个领英账号可以加3万好友,加为好友后彼此可相互关注,也可以直接在领英上面发站内消息,还可以直接查看到对方的电话.邮箱.社交账号等重要的联系方式.但领英对加好友是有限制的,每周都有邀请名额的限制,这就 ...

  5. nodejs实现公众号服务URL绑定验证,nodejs实现公众号关注并回发送一条消息,以及关注之后的聊天自动回复消息

    首先关注公众号的时候,公众号会发送一条 post 请求到 nodejs 服务器,这条消息是 xml 数据类型,这里就用到 xml 解析,demo 里用的是 fast-xml-parser@3.12.1 ...

  6. oracle dbms_aq,oracle – dbms_aq.dequeue_array,第一条消息返回两次

    介绍 使用Oracle Advanced Queuing方法时,我在Oracle SQL Server上遇到了一个非常奇怪的行为(确切地说:Oracle Database 11g企业版11.2.0.4 ...

  7. 网包是如何到达另外一台电脑上的?当你在微信上发送一条消息时互联网发生了什么?

    目录 一.前言 二.互联网.物联网.万维网.互联网+是什么? 互联网: 万维网: 物联网: 互联网+: 一.前言 互联网其实就是数以计万的服务器组成的,这些服务器通过光缆.电缆相互连接交互,甚至在距离 ...

  8. python: pc端QQ窗口发送多条消息

    # coding=gb2312 ''' TTS文本.txt---为需要发送的内容,自己创建 1.打开需要发送消息的窗口 2. 3.将需要发送的内容放到QQ窗口 4.模拟按键发送enter键发送消息(Q ...

  9. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

最新文章

  1. 学习-现代交换原理与通信技术
  2. bitShark对Android版本的支持
  3. python列表代码_8种高级的Python列表使用技巧,都给你整理好啦(附实操代码)...
  4. OpenStack对象存储——Swift
  5. elk收集分析nginx access日志
  6. Ubuntu升级php7.0配置fpm socket
  7. 大数据分析-第八章 推荐系统
  8. Windows Mobile 开发环境搭建
  9. 打印网页中的指定内容
  10. typedef与define 傻傻的分不清楚
  11. autoit脚本实现电脑加域,退域,重加域
  12. 简单易用的APIv3版微信支付SDK
  13. JavaScript数据结构与算法 基础
  14. 2018FME博客大赛-基于FME的不同比例尺线面要素 一致性检测关键技术研究
  15. 区级医院计算机专业职称评审,医院职称晋升程序以及医生各级职称评审要求
  16. 上海迪士尼将推出虎年新春全新体验
  17. 全球十大外盘外汇交易平台排行榜
  18. 虚拟存储器 与虚拟内存详解
  19. C语言预处理命令(预处理指令)
  20. Basler相机外部触发设置(Halcon)

热门文章

  1. Intersection - POJ 1410(线段与矩形是否相交)
  2. linux查看文件的编码格式的方法 set fileencoding
  3. 一个关于sql server索引与填充因子的链接
  4. SqlServer 数据分页
  5. XML内部DTD约束 Day24
  6. Spring MVC初始化参数绑定
  7. iOS瀑布流实现(Swift)
  8. 面试时经常问到的系统应用优化问题总结
  9. java中类与类之间的关系
  10. 【struts2】第一个struts2实例