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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java长连接socket【转】http://jiewo.iteye.com/blog/1562168

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java长连接socket【转】http://jiewo.iteye.com/blog/1562168 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java socket 長連接

博客分類:
  • ?
  • java
socketjavathread? 最近做SSO的項目,其中用到了socket長連接.一直都是看代碼的,但是要求socket做成SSL的,不得不動手寫寫代碼了.下面我給出一個簡單的socket長連接. Java代碼??
  • SocketClient.java??
  • Java代碼??
  • import?java.io.IOException;??
  • import?java.io.InputStreamReader;??
  • import?java.io.OutputStreamWriter;??
  • import?java.io.PrintWriter;??
  • import?java.io.Reader;??
  • import?java.net.Socket;??
  • import?java.net.UnknownHostException;??
  • import?java.nio.CharBuffer;??
  • import?java.util.concurrent.ArrayBlockingQueue;??
  • import?java.util.concurrent.BlockingQueue;??
  • ??
  • /*{??user:jiangwh?}*/??
  • ??
  • public?class?SocketClient?{??
  • ??
  • ????public?static?final?Object?locked?=?new?Object();??
  • ????public?static?final?BlockingQueue<String>?queue?=?new?ArrayBlockingQueue<String>(??
  • ????????????1024?*?100);??
  • ??
  • ????class?SendThread?extends?Thread{??
  • ????????private?Socket?socket;??
  • ????????public?SendThread(Socket?socket)?{??
  • ????????????this.socket?=?socket;??
  • ????????}??
  • ????????@Override??
  • ????????public?void?run()?{??
  • ????????????while(true){??
  • ????????????????try?{??
  • ????????????????????String?send?=?getSend();??????????????
  • ????????????????????PrintWriter?pw?=?new?PrintWriter(new?OutputStreamWriter(socket.getOutputStream()));??
  • ????????????????????pw.write(send);??
  • ????????????????????pw.flush();??
  • ????????????????}?catch?(Exception?e)?{??
  • ????????????????????e.printStackTrace();??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????????public?String?getSend()?throws?InterruptedException{??
  • ????????????Thread.sleep(1000);??
  • ????????????return?"<SOAP-ENV:Envelope>"+System.currentTimeMillis()+"</SOAP-ENV:Envelope>";??
  • ????????}??
  • ????}??
  • ??
  • ????class?ReceiveThread?extends?Thread{??
  • ????????private?Socket?socket;??
  • ??????????
  • ????????public?ReceiveThread(Socket?socket)?{??
  • ????????????this.socket?=?socket;??
  • ????????}??
  • ??
  • ????????@Override??
  • ????????public?void?run()?{??
  • ????????????while(true){??
  • ????????????????try?{?????????????????????
  • ????????????????????Reader?reader?=?new?InputStreamReader(socket.getInputStream());??
  • ????????????????????CharBuffer?charBuffer?=?CharBuffer.allocate(8192);??
  • ????????????????????int?index?=?-1;??
  • ????????????????????while((index=reader.read(charBuffer))!=-1){??
  • ????????????????????????charBuffer.flip();??
  • ????????????????????????System.out.println("client:"+charBuffer.toString());??
  • ????????????????????}??
  • ????????????????}?catch?(Exception?e)?{??
  • ????????????????????e.printStackTrace();??
  • ????????????????}??
  • ????????????}??
  • ????????}??
  • ????}??
  • ??????
  • ????public?void?start()?throws?UnknownHostException,?IOException{??
  • ????????Socket?socket?=?new?Socket("10.10.148.40",18889);??
  • ????????new?SendThread(socket).start();??
  • ????????new?ReceiveThread(socket).start();??
  • ????}??
  • ????public?static?void?main(String[]?args)?throws?UnknownHostException,?IOException?{??
  • ????????new?SocketClient().start();??
  • ????}??
  • }??
  • Java代碼??
  • SocketServer.java??
  • Java代碼??
  • import?java.io.IOException;??
  • import?java.io.InputStreamReader;??
  • import?java.io.OutputStreamWriter;??
  • import?java.io.PrintWriter;??
  • import?java.io.Reader;??
  • import?java.io.Writer;??
  • import?java.net.ServerSocket;??
  • import?java.net.Socket;??
  • import?java.nio.CharBuffer;??
  • import?java.util.Date;??
  • ??
  • /*{user:jiangwh?}*/??
  • ??
  • public?class?SocketServer?{??
  • ??
  • ????private?final?static?String?SOAP_BEGIN?=?"<SOAP-ENV:Envelope";??
  • ????private?final?static?String?SOAP_END?=?"</SOAP-ENV:Envelope>";??
  • ??
  • ????public?static?void?main(String[]?args)?throws?IOException?{??
  • ????????SocketServer?socketServer?=?new?SocketServer();??
  • ????????socketServer.start();??
  • ????}??
  • ??
  • ????public?void?start()?throws?IOException?{??
  • ????????ServerSocket?serverSocket?=?new?ServerSocket(18889);??
  • ????????while?(true)?{??
  • ????????????Socket?socket?=?serverSocket.accept();??
  • ????????????new?SocketThread(socket).start();??
  • ????????}??
  • ????}??
  • ??
  • ????class?SocketThread?extends?Thread?{??
  • ????????private?Socket?socket;??
  • ????????private?String?temp;??
  • ??
  • ????????public?Socket?getSocket()?{??
  • ????????????return?socket;??
  • ????????}??
  • ??
  • ????????public?void?setSocket(Socket?socket)?{??
  • ????????????this.socket?=?socket;??
  • ????????}??
  • ??
  • ????????public?SocketThread(Socket?socket)?{??
  • ????????????this.socket?=?socket;??
  • ????????}??
  • ??
  • ????????public?void?run()?{??
  • ????????????try?{??
  • ????????????????Reader?reader?=?new?InputStreamReader(socket.getInputStream());??
  • ????????????????Writer?writer?=?new?PrintWriter(new?OutputStreamWriter(socket??
  • ????????????????????????.getOutputStream(),?"GBK"));??
  • ????????????????CharBuffer?charBuffer?=?CharBuffer.allocate(8192);??
  • ????????????????int?readIndex?=?-1;??
  • ????????????????while?((readIndex?=?reader.read(charBuffer))?!=?-1)?{??
  • ????????????????????charBuffer.flip();??
  • ????????????????????temp?+=?charBuffer.toString();??
  • ????????????????????if?(temp.indexOf(SOAP_BEGIN)?!=?-1??
  • ????????????????????????????&&?temp.indexOf(SOAP_END)?!=?-1)?{??
  • ????????????????????????//?傳送一個soap報文??
  • ????????????????????????System.out.println(new?Date().toLocaleString()+"server:"+temp);??
  • ????????????????????????temp="";??
  • ????????????????????????writer.write("receive?the?soap?message");??
  • ????????????????????????writer.flush();??
  • ????????????????????}?else?if?(temp.indexOf(SOAP_BEGIN)?!=?-1)?{??
  • ????????????????????????//?包含開始,但不包含??
  • ????????????????????????temp?=?temp.substring(temp.indexOf(SOAP_BEGIN));??
  • ????????????????????}?????
  • ????????????????????if?(temp.length()?>?1024?*?16)?{??
  • ????????????????????????break;??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}?catch?(Exception?e)?{??
  • ????????????????e.printStackTrace();??
  • ????????????}?finally?{??
  • ????????????????if?(socket?!=?null)?{??
  • ????????????????????if?(!socket.isClosed())?{??
  • ????????????????????????try?{??
  • ????????????????????????????socket.close();??
  • ????????????????????????}?catch?(IOException?e)?{??
  • ????????????????????????????e.printStackTrace();??
  • ????????????????????????}??
  • ????????????????????}??
  • ????????????????}??
  • ????????????}??
  • ??
  • ????????}??
  • ????}??
  • } ?
  • 轉載于:https://www.cnblogs.com/songtzu/archive/2013/02/04/2891858.html

    總結

    以上是生活随笔為你收集整理的java长连接socket【转】http://jiewo.iteye.com/blog/1562168的全部內容,希望文章能夠幫你解決所遇到的問題。

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