日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JavaSocket通訊客戶端代碼詳解

Java Socket通訊一個相當廣泛的使用,其實在有些時候我們在遇到困難的時候還是需要去找一找相關代碼的介紹。最近工作需要,做了一點Java Socket通訊的東西,積累一點經(jīng)驗,與大家共分享。

其中通過短連接方式接收Java Socket通訊返回消息,死循環(huán),分別判斷接收和超時,來確定連接連接狀況。通過字節(jié)流的形式獲取socket返回消息,主要是因為通過readline的方式,在我們系統(tǒng)通訊中存在異常。

具體客戶端代碼如下:

 
 
 
  1. import java.net.*;
  2. import java.io.*;
  3. import org.apache.log4j.Logger;
  4. public class SocketClient {
  5. static Logger log = Logger.getLogger(SocketClient.class.
    getName()); //日志記錄信息
  6. private String hostName;
  7. private int portNum;
  8. private int delaySecond; // 發(fā)文接收返回報文延時
  9. public SocketClient() {
  10. this.hostName = "192.168.0.1";
  11. this.portNum = 7000;
  12. this.delaySecond = 50000;
  13. pFileOp = null;
  14. }
  15. private Socket getSocket() {
  16. Socket socket = null;
  17. try {
  18. socket = new Socket(hostName, portNum);
  19. } catch (UnknownHostException e) {
  20. System.out.println("-->未知的主機名:" + hostName + " 異常");
  21. } catch (IOException e) {
  22. System.out.println("-hostName=" + hostName + " portNum="
  23. + portNum + "---->IO異常錯誤" + e.getMessage());
  24. }
  25. return socket;
  26. }
  27. public String sendMessage(String strMessage) {
  28. String str = "";
  29. String serverString = "";
  30. Socket socket;
  31. try {
  32. socket = getSocket();
  33. // socket.setKeepAlive(true);
  34. if (socket == null) { // 未能得到指定的Socket對象,Socket通訊為空
  35. return "0001";
  36. }
  37. PrintWriter out = new PrintWriter(socket.getOutputStream());
  38. //log.info("---->發(fā)送報文="+strMessage);
  39. out.println(strMessage);
  40. out.flush();
  41. BufferedReader in = new BufferedReader(new InputStreamReader(
  42. socket.getInputStream()));
  43. long sendTime = System.currentTimeMillis();
  44. long receiveTime = System.currentTimeMillis();
  45. boolean received = false; // 成功接收報文
  46. boolean delayTooLong = false;
  47. serverString = null;
  48. while (!received && !delayTooLong) {
  49. if (socket.getInputStream().available() > 0) {
  50. // serverString = in.readLine();
  51. char tagChar[];
  52. tagChar = new char[1024];
  53. int len;
  54. String temp;
  55. String rev = "";
  56. if ((len = in.read(tagChar)) != -1) {
  57. temp = new String(tagChar, 0, len);
  58. rev += temp;
  59. temp = null;
  60. }
  61. serverString = rev;
  62. }
  63. receiveTime = System.currentTimeMillis();
  64. if (serverString != null)
  65. received = true; // 字符串不為空,接收成功
  66. if ((receiveTime - sendTime) > delaySecond)
  67. delayTooLong = true; // 接收等待時間過長,超時
  68. }
  69. in.close();
  70. out.close();
  71. str=serverString;
  72. if (delayTooLong) str="2190"; //超時標志為真,返回超時碼
  73. if (!received) str ="2190";
  74. socket.close();
  75. } catch (UnknownHostException e) {
  76. log.error("---->出現(xiàn)未知主機錯誤! 主機信息=" + this.hostName + 
    " 端口號="
  77. + this.portNum + " 出錯信息=" + e.getMessage());
  78. str = "2191";
  79. // System.exit(1);
  80. } catch (IOException e) {
  81. log.error("---->出現(xiàn)IO異常! 主機信息=" + this.hostName + 
    " 端口號="
  82. + this.portNum + " 出錯信息=" + e.getMessage());
  83. e.printStackTrace();
  84. str = "2191";
  85. } catch (Exception e) {
  86. str="2177";
  87. log.error("---->出現(xiàn)未知異常" + e.getMessage());
  88. } finally {
  89. socket = null;
  90. str.trim();
  91. //log.info("--->返回的socket通訊字符串="+str);
  92. return str;
  93. }
  94. }
  95. }

以上就是對Java Socket通訊的詳細介紹。希望大家有所幫助。


當前題目:JavaSocket通訊客戶端代碼詳解
標題網(wǎng)址:http://m.5511xx.com/article/ccioddp.html