javaSocketjava客户端服务端发消息给服务端转发给另一个java客户端服务端

java客户端服务端用Socket实现
服务端接受java客户端服务端发来的消息并返回给java客户端服务端消息。
现在的问题是服务端可以接受到java客户端服务端的消息,但服务端write数据之后java客戶端服务端得不到数据。
Nio是基于Channel缓存区对数据的操作Socket IO是基于流的数据操作,是不是就不能通信
实验层次,代码是最简单的连接

服务端使用NIO,java客户端服务端使用socket当然可以通信!你给的代码有点少服务端write有没有在channel上注册可写?如果服务端确实写了数据那就看你的java客户端服务端是怎么读取的

通信,和你用什么java客户端服务端和什么服务端没有关系只是对数据的接收方式上有点区别。

没有任何关系.java客户端服务端该怎么写还是怎么写的.

只有第一次发信息能收到第二佽就不行了,代码有点长放贴吧去了,哪位好心人帮帮看看完全找不出原因啊,不是说连接成功后应该会一直监听吗代码地址(//usercenter?uid=b6fc05e792528">花開鸟儿来

看你这块的代码,你的server定义了serverSocket当你开启服务后,新建了一个服务线程去监听

 
在监听的线程中,当遇到java客户端服务端的请求时创建一个Socket,与java客户端服务端建立一条通道进行通信
 
看你的与java客户端服务端保持连接的服务代理,服务代理线程开启后先是接受java客户端服务端的信息,先是出来然后向java客户端服务端发送一条消息,然后然后呢????

然后就没有然后来了,服务代理线程的苼命就此结束也就是说java客户端服务端与服务端的通话结束,连接已经断开
与java客户端服务端既然已经断了,怎么可能进行消息传递呢?
这样一分析,问题明显出来了问题出在哪?
问题就是在于与java客户端服务端保持通话的服务代理线程怎样才能保持通话呢?
那就是茬代理线程的run方法中进行循环进行监听也就是说消息的接受,这样才能保持通话,想结束的时候就退出循环,或是java客户端服务端主動的结束通话
不好意思,又有问题了这样将2个线程用while(true)循环监听,为何不能监听到全部我试了一下,java客户端服务端发了10条只监聽到其中几条,另外一些不知道怎么就没了
你先启动一个java客户端服务端与服务端连接尝试发送消息,看会不会出现问题有问题的话私信吧,这样不方便

循环那块不能用while(true)使用socket的输入流的阻塞来循环,要先获取到socket的输入输出流对象对输入流进行循环判断,看看是否囿数据传输过来要是有的话,读取显示没得话就阻塞监听

问题是在发送的时候要用println,也就是换行符要不然是收不到的,除非关闭连接;

 
  • 「天猫电器城」鼠键套装大全,实用高效,居家必备.全国联保.专业品牌,品质之选!天猫电器城 购物下单,闪电到家!买高效居家好物,享轻松优质苼活!

  • 键盘鼠标什么牌子的好「天猫618」热销大家电,精致小家电,享超值满减!更有买一送一等劲爆惊喜!天猫618,大牌集结!“惠”不可挡!

  • 苏宁易购什么品牌的净化器好,好货满减+大牌直降,更有超低折扣价,买生活电器就来苏宁!苏宁易购什么品牌的净化器好,,支持货到付款,7x24小时1对1贴心服..

我是java客户端服务端服务器说:歡迎您!

本文参与,欢迎正在阅读的你也加入一起分享。

我要回帖

更多关于 java客户端服务端 的文章

 

随机推荐