日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...

發布時間:2025/3/8 java 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在寫Socket客戶端的時候遇到點問題

客戶端在創建時創建了2個線程

一個監聽鍵盤輸入事件,使用的是buffered,當檢測到輸入完成時寫入流發送給服務端。

String content = "";

while (!(content = bufferedReader.readLine()).equals("exit")) {

byte[] type= new byte[1];

type[0] = Const.Message;

byte[] bytes = EncodeKit.encode(type, content);

outputStream.write(bytes);

outputStream.flush();

}

一個while循環不停發送心跳包

一個while循環接收服務端發回來的消息

現在的問題是我想在客戶端知道服務端返回消息的時間有沒超過規定時間,如果有則判定該連接已斷開。

問題是接收消息的線程和發送心跳的線程是分開的?我如何知道當這條消息發送過去后服務端返回的消息有沒有

超過指定時間?

總感覺我的設計有問題,但又不知道如何實現,求解答。

ps:使用三個線程的原因是線程讀取方法是阻塞方法,如果在發送心跳的while循環中再寫一個接收消息的方法,那么

就會一直執行這個接收消息的方法,沒辦法再發送心跳了。

發送心跳代碼:

outputStream = socket.getOutputStream();

inputStream = socket.getInputStream();

while (true) {

Thread.sleep(time);//設置心跳間隔時間

byte[] type = new byte[1];

type[0] = Const.HEART;

byte[] bytes = EncodeKit.encode(type, "");

//發送心跳包

outputStream.write(bytes);

outputStream.flush();

總結

以上是生活随笔為你收集整理的Java线程怎么发送消息_Java客户端Socket如何能在阻塞线程下收到服务端发送来的消息?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。