精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java Socket通信如何進行通用服務器代碼編寫

開發 后端
Java Socket通信需要我們不斷的進行相關問題的學習,下面我們就看看如何才能更好的進行有關問題解決方案。希望大家有所幫助。

Java Socket通信有很多的時候需要我們不斷的學習。方面效率雖然不及C與C++但它以靈活語言優勢,為大家廣為使用。 本文就對在使用java做通信方面程序時候應改注意問題做以說明。

1.長連接、短鏈接只是針對客戶端而言,服務器無所謂長、短;

2.無論同步或者異步通信,發送之后務必要又響應回復,確認收到,負責進行一定范圍內重發,例如重發三次;

3.長連接服務器與客戶端之間務必需要心跳探測,由客戶端主動發起;

4.短連接服務器通用代碼:

 

  1. package com.biesan.sms.gate.unioncom.communication;  
  2. import com.biesan.commons.Constants;  
  3. import com.biesan.commons.util.CodeUtil;  
  4. import com.biesan.sms.gate.unioncom.data.*;  
  5. import com.biesan.sms.gate.unioncom.util.GateInfo;  
  6. import java.net.*;  
  7. import java.io.*;  
  8. import java.util.*;  
  9. import org.apache.log4j.*;  
  10. import spApi.*;  
  11. public class UnioncomDeliver extends Thread {  
  12. // stop flag  
  13. private boolean unInterrupt = true;  
  14. private boolean unErr = true;  
  15. //private boolean closeSocketFlag = false;  
  16. // server socket  
  17. private ServerSocket serverSo = null;  
  18. // current socket  
  19. private Socket so = null 
  20. private OutputStream output = null;  
  21. private InputStream input = null;  
  22. // gate command  
  23. private SGIP_Command tmpCmd = null;  
  24. private SGIP_Command cmd = null;  
  25. private Bind bind = null;  
  26. private BindResp bindResp = null;  
  27. //private Unbind unBind = null;  
  28. private UnbindResp unBindResp = null;  
  29. private boolean unAcceptErrorFlag = true;  
  30. Logger unioncomLog = Logger.getLogger(Unioncom
    Deliver.class.getName());  
  31. public UnioncomDeliver() {  
  32. }  
  33. public void run() {  
  34. unioncomLog.info("Start...");  
  35. while (unInterrupt) {  
  36. this.initServer();  
  37. this.startServices();  
  38. while (this.unAcceptErrorFlag) {  
  39. try {  
  40. //接受連接請求  
  41. unioncomLog.info("before accept connection!....... 
    FreeMemroy :" + Runtime.getRuntime().freeMemory());  
  42. this.acceptConnection();  
  43. unioncomLog.info("after accept connection!....... 
    FreeMemroy :" + Runtime.getRuntime().freeMemory());  
  44. while (unErr) {  
  45. cmd = new Command();  
  46. unioncomLog.info("before read command from stream
    ........... FreeMemroy: " + Runtime.getRuntime().
    freeMemory());  
  47. tmpCmd = cmd.read(input);  
  48. unioncomLog.info("after read command from stream " + 
    getCommandString(cmd.getCommandID()) + " FreeMemroy: " + 
    Runtime.getRuntime().freeMemory());  
  49. if (tmpCmd == null) {  
  50. unErr = false;  
  51. break;  
  52. }  
  53. switch (cmd.getCommandID()) {  
  54. // biad ready communication  
  55. case SGIP_Command.ID_SGIP_BIND: {  
  56. this.dealBind();  
  57. break;  
  58. }// exit bind  
  59. case SGIP_Command.ID_SGIP_UNBIND: {  
  60. this.dealUnBind();  
  61. unioncomLog.info("after unbind connection!....... 
    FreeMemroy :" + Runtime.getRuntime().freeMemory());  
  62. break;  
  63. }// deliver  
  64. ....  
  65. default : //錯誤的命令字  
  66. break;  
  67. }// switch  
  68. }// while(unErr)  
  69. } catch (Exception e) {  
  70. unioncomLog.error("Unioncom Recv Service Error"  
  71. + e.getMessage());   
  72. } finally {  
  73. if (this.so != null) {  
  74. this.closeSocket();  
  75. }  
  76. this.unErr = true;  
  77. }  
  78. }// while (this.unAcceptErrorFlag)  
  79. try {  
  80. this.closeServerSocket();  
  81. sleep(200);// sleep  
  82. } catch (InterruptedException ie) {  
  83. }  
  84. }// while(unInterrupt)  
  85. }  
  86. private String getCommandString(int cmd){  
  87. switch (cmd) {  
  88. // biad ready communication  
  89. case SGIP_Command.ID_SGIP_BIND: {  
  90. return " BIND COMMAND ";   
  91. }// exit bind  
  92. case SGIP_Command.ID_SGIP_UNBIND: {  
  93. return " UNBIND COMMAND ";   
  94. }// deliver  
  95. case ...  
  96. default:  
  97. return " UNKNOWN COMMAND";   
  98. }  
  99. }  
  100. private void dealBind() {  
  101. try {  
  102. bind = new Bind(tmpCmd);  
  103. if (bind.readbody() != 0) {  
  104. unioncomLog.warn("Read Bind error");  
  105. this.unErr = false;  
  106. }  
  107. bindResp = new BindResp(tmpCmd.getMsgHead());  
  108. bindResp.SetResult(0);  
  109. bindResp.write(output);  
  110. unioncomLog.debug("Bind success!");  
  111. } catch (Exception e) {  
  112. unioncomLog.error("Dela Union Recv Bind Error!" + 
    e.getMessage());  
  113. this.unErr = false;  
  114. }  
  115. }  
  116. private void dealUnBind() {  
  117. try {  
  118. //unBind = (Unbind) tmpCmd;  
  119. unBindResp = new UnbindResp(tmpCmd.getMsgHead());  
  120. unBindResp.write(output);  
  121. unioncomLog.debug("UnBind success!");  
  122. } catch (Exception e) {  
  123. unioncomLog.warn("Unbind error!" + e.getMessage());  
  124. }  
  125. this.unErr = false;  
  126. }  
  127. private void startServices() {  
  128. boolean unStartServices = true;  
  129. while (unStartServices) {  
  130. try {  
  131. serverSo = new ServerSocket(ugInfo.getLocalServerPort(), 5,  
  132. InetAddress.getByName(ugInfo.getLocalIpAdd()));  
  133. //serverSo.setSoTimeout(60000);  
  134. unStartServices = false;   
  135. unioncomLog.info("Create union recv socket Ok!");  
  136. } catch (IOException e) {  
  137. unioncomLog.warn("Create union recv socket error!"  
  138. + e.getMessage());  
  139. unStartServices = true;  
  140. UnioncomSubmit.thrSlp(3000);  
  141. }  
  142. }  
  143. }  
  144. private void acceptConnection() {  
  145. // Accept 失敗  
  146. try {   
  147. so = serverSo.accept();  
  148. so.setSoTimeout(10000);  
  149. } catch (Exception e) {  
  150. unioncomLog.warn("Accept Error!" + e.getMessage());  
  151. this.closeServerSocket();  
  152. this.unAcceptErrorFlag = false;  
  153. this.unErr=false;  
  154. }  
  155. // Accept成功  
  156. try {  
  157. input = so.getInputStream();  
  158. output = so.getOutputStream();  
  159. } catch (IOException e) {  
  160. unioncomLog.warn("Get I/O stream Error!" + e.getMessage());  
  161. this.closeService();  
  162. this.unAcceptErrorFlag = false;  
  163. this.unErr=false;  
  164. }  
  165. }  
  166. private void closeSocket() {  
  167. try {  
  168. so.close();  
  169. unioncomLog.info("Socket Close Success!!!");  
  170. } catch (Exception e) {  
  171. unioncomLog.error("Socket Close Failure!!!" + e.getMessage());  
  172. }  
  173. }  
  174. private void closeServerSocket() {  
  175. try {  
  176. serverSo.close();  
  177. unioncomLog.info("ServerSocket Close Success!!!");  
  178. } catch (Exception e) {  
  179. unioncomLog  
  180. .error("ServerSocket Close Failure!!!" + e.getMessage());  
  181. }  
  182. }  
  183. private void closeService() {  
  184. this.closeSocket();  
  185. this.closeServerSocket();  
  186. }  
  187. private void initServer() {  
  188. this.bind = null;  
  189. this.bindResp = null;  
  190. //this.unBind = null;  
  191. this.unBindResp = null;  
  192. this.tmpCmd = null;  
  193. this.cmd = null;  
  194. this.serverSo = null;  
  195. this.so = null;  
  196. this.output = null;  
  197. this.input = null;  
  198. this.unErr = true;  
  199. //this.closeSocketFlag = false;  
  200. unioncomLog.info("Memory***==="  
  201. + java.lang.Runtime.getRuntime().freeMemory());  
  202. }  
  203. public synchronized void requireStop() {  
  204. this.unInterrupt = false;  
  205. unioncomLog.info("Requre interrupt!!!");  
  206. }  
  207. public String convertMsgContentCoding
    (int msgCoding, byte[] msgContent) {  
  208. String deliverContent = null;  
  209. try {  
  210. if (msgContent != null) {  
  211. if (msgCoding == 8) { // 處理ucs32編碼  
  212. deliverContent = new String(msgContent,  
  213. "UnicodeBigUnmarked");  
  214. } else if (msgCoding == 0) { // 處理ASCII編碼  
  215. deliverContent = new String(msgContent, "ASCII");  
  216. } else if (msgCoding == 4) { // 處理binary編碼  
  217. deliverContent = new String(msgContent);  
  218. } else if (msgCoding == 15) { // 處理GBK編碼  
  219. deliverContent = new String(msgContent, "GBK");  
  220. // 處理DELIVER數據包的短信息ID  
  221. } else {  
  222. unioncomLog.error("編碼格式錯誤!");  
  223. return "";  
  224. }  
  225. } else  
  226. return "";  
  227. return deliverContent;  
  228. } catch (UnsupportedEncodingException ex) {  
  229. unioncomLog.error("deal content error!" +
     ex.getMessage());  
  230. return "";  
  231. }  
  232. }  

 

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

【編輯推薦】

  1. Java Socket對象原理的詳細介紹
  2. Java Socket服務端具體命令編寫
  3. Java Socket通訊如何進行客戶端的信息通信
  4. Java Socket通訊客戶端代碼編寫教程
  5. Java Socket通訊實際操作手冊
責任編輯:張浩 來源: 博客園
相關推薦

2010-03-18 20:00:35

Java socket

2010-03-16 10:32:36

Java線程撥號器

2010-02-03 13:55:51

Python 代碼

2010-03-16 14:41:06

Java Runnab

2011-07-25 10:48:34

服務器虛擬服務器

2010-03-09 18:14:55

Python sock

2011-07-14 14:58:19

網絡服務器配置服務器

2009-08-21 16:13:45

代理服務器設置迅雷

2010-03-16 13:47:48

Java多線程服務器

2010-03-18 17:39:46

Java Socket

2011-07-04 10:20:25

服務器云時代

2010-06-02 18:51:35

搭建SVN服務器

2011-10-26 11:21:47

服務器虛擬化存儲管理

2018-07-20 10:12:27

租用服務器速度測試

2017-08-04 10:47:20

2011-06-29 10:06:23

Linux服務器優化

2010-03-19 09:26:34

Java Socket

2010-03-19 15:01:23

Java Socket

2011-08-02 16:46:33

FoxmailServ郵件服務器域管理

2016-09-14 21:44:50

JavascriptreactJsjsx
點贊
收藏

51CTO技術棧公眾號

亚洲经典在线看| 成人做爰视频www网站小优视频| 经典三级一区二区| 国产日韩精品视频一区| 91亚洲国产精品| 久久国产精品波多野结衣| 日本欧美高清| 欧美日韩一区二区三区视频| 国产xxxx振车| 亚洲天堂中文字幕在线| 欧美激情1区| 亚洲人成毛片在线播放| 亚洲网中文字幕| 亚洲欧美小说色综合小说一区| 亚洲天堂精品在线观看| 精品日本一区二区三区| 国产精品无码免费播放 | 亚洲成人999| 污污的网站18| 色在线视频观看| 亚洲欧美另类小说| 奇米视频888战线精品播放| 国产成人精品一区二三区四区五区| 国产精品一区毛片| 亚洲第一二三四五区| 欧美一级黄色影院| 亚洲av成人无码久久精品老人 | 国产成人精品综合久久久久99| av高清不卡| 亚洲综合视频网| 一本一道久久a久久综合精品| 欧美日韩在线中文字幕| 国产**成人网毛片九色 | 国产精品视频一区二区三区四区五区| 久热国产在线| 国产精品乱人伦中文| 明星裸体视频一区二区| 午夜性色福利影院| 国产乱人伦精品一区二区在线观看| 国产精品美女av| 精品免费囯产一区二区三区 | 东京干手机福利视频| 精品一区在线看| 国产精品69av| 成人免费毛片男人用品| 亚洲女同在线| 欧洲成人性视频| 人妻精品久久久久中文字幕| 亚洲一区二区免费在线观看| 777午夜精品视频在线播放| 亚洲精品国产成人久久av盗摄 | 国产免费一区二区三区最新6| 日韩一级片免费在线观看| 日韩欧美精品一区| 亚洲毛片在线免费观看| av黄色一级片| 牛牛影视一区二区三区免费看| 精品国产第一区二区三区观看体验| 在线视频日韩欧美| 99er精品视频| 69久久99精品久久久久婷婷| 日本在线观看视频一区| 91精品一久久香蕉国产线看观看| 欧美日韩一区成人| 亚洲涩涩在线观看| 91亚洲精品在看在线观看高清| 欧美片网站yy| av片在线免费| 超黄网站在线观看| 亚洲影视在线播放| 2022中文字幕| 亚洲人午夜射精精品日韩| 成人a免费在线看| 国产精品18久久久久久麻辣| 欧美一级黄视频| 久久国产精品99久久久久久老狼| 91色p视频在线| 亚洲伦理在线观看| 92精品国产成人观看免费| 久久本道综合色狠狠五月| 欧美日韩国产综合视频| 中文字幕国产一区| 国产精品毛片va一区二区三区| 亚洲女人18毛片水真多| 91视频观看视频| 亚洲日本欧美在线| av网站免费在线观看| 亚洲成a人v欧美综合天堂| www国产精品内射老熟女| 久久人体大尺度| 欧美久久久久久蜜桃| 精品国产一二区| 免费精品国产的网站免费观看| 日韩在线视频网站| 国产一级久久久| 日韩高清在线电影| 国产69精品久久久久久| a片在线免费观看| 国产成人精品三级| 欧美一卡2卡3卡4卡无卡免费观看水多多 | 国产欧美日韩视频一区二区三区| 欧美美女搞黄| 亚洲免费在线电影| 午夜精品久久久内射近拍高清| 羞羞视频在线观看一区二区| 精品蜜桃在线看| 成年人看的免费视频| 亚洲第一网站| 欧美成aaa人片免费看| 久久不卡免费视频| 国产精品s色| 国产成人精品免高潮在线观看 | 粉嫩av亚洲一区二区图片| 日韩av影视| 91在线超碰| 91麻豆精品久久久久蜜臀| 亚洲自拍偷拍一区二区| 欧美xxx在线观看| 国产精品色午夜在线观看| 天天操天天爱天天干| √…a在线天堂一区| 日韩精品一区二区三区不卡| xxxxxhd亚洲人hd| 日韩中文理论片| 男人天堂av在线播放| 成人av在线资源网站| 国产卡一卡二在线| 精品久久在线| 国产一区二区久久精品| 国产精选第一页| 国产成人在线视频免费播放| 亚洲伊人婷婷| 97成人超碰| 在线视频欧美性高潮| 加勒比在线一区| 久久夜色精品国产欧美乱极品| 久久久久久a亚洲欧洲aⅴ| 怡红院av在线| 日韩视频永久免费| 久久中文免费视频| 精品午夜一区二区三区在线观看| 色大师av一区二区三区| 午夜不卡视频| 色丁香久综合在线久综合在线观看| 91九色蝌蚪porny| 欧美国内亚洲| 91久久大香伊蕉在人线| 影院在线观看全集免费观看| 欧美一区永久视频免费观看| 国产三级精品三级观看| 九色综合国产一区二区三区| 中文字幕久精品免| 高清一区二区三区av| 精品国一区二区三区| 五月天丁香激情| 国产福利91精品一区二区三区| 无码毛片aaa在线| 日韩一区二区三区精品视频第3页| 日韩成人免费视频| 久久久国产高清| 久久综合资源网| 国产一区二区视频免费在线观看| 国产精品一国产精品| 国产精品99久久久久久白浆小说| h视频在线播放| 欧美精品三级日韩久久| 欧美日韩三级在线观看| 高清成人在线观看| 极品美女扒开粉嫩小泬| 香蕉久久一区| 欧美日韩福利视频| 四季av日韩精品一区| 疯狂蹂躏欧美一区二区精品| 人人妻人人澡人人爽人人精品| 鲁大师影院一区二区三区| 亚洲一区久久久| 国产啊啊啊视频在线观看| 日韩av在线高清| 国产免费a视频| 亚洲天堂免费看| 国产精品手机在线观看| 久久午夜激情| 中文一区一区三区免费| 超碰成人97| 日韩av不卡在线| 日本三级在线播放完整版| 欧美大片在线观看一区二区| 国产成人在线免费视频| 国产精品久久久一区麻豆最新章节| 日批视频在线看| 另类国产ts人妖高潮视频| 亚洲在线色站| 久久中文资源| 成人xvideos免费视频| 丁香花在线影院| 影音先锋欧美精品| 亚洲精品久久久久久久久久久久久久 | 国模一区二区| 欧美激情xxxx| av中文在线| 日韩av最新在线观看| 亚洲一级av毛片| 欧美日韩国产在线看| 少妇高潮一区二区三区喷水| 久久一二三四| 51xx午夜影福利| 国产精品免费99久久久| 99超碰麻豆| 成人在线视频免费| 91精品国产电影| 视频一区 中文字幕| 欧美影院精品一区| 日韩成人一区二区三区| 亚洲欧美怡红院| 中国毛片在线观看| 成人性生交大片免费看视频在线 | xxxx 国产| 亚洲三级在线播放| 亚洲精品国产精品国自| 日韩vs国产vs欧美| 免费在线观看亚洲视频| 欧美在线看片| 懂色av一区二区三区四区五区| 国产在视频一区二区三区吞精| 韩国三级日本三级少妇99| av网站在线免费播放| 亚洲欧美激情四射在线日| 日韩一区二区三区在线观看视频| 69p69国产精品| 中文字幕丰满人伦在线| 色哟哟国产精品| 国产成人在线免费视频| 亚洲r级在线视频| 免费麻豆国产一区二区三区四区| 国产精品人人做人人爽人人添| 加勒比一区二区| 91性感美女视频| 最近日本中文字幕| av综合在线播放| 你懂的在线观看网站| 成人网在线播放| 欧美激情 亚洲| 白白色亚洲国产精品| 99精品一区二区三区无码吞精| 成人一区二区三区| 成人午夜精品无码区| 成人毛片老司机大片| 丰满少妇xbxb毛片日本| 成人的网站免费观看| 精品熟女一区二区三区| 97精品久久久久中文字幕| 国产肉体xxxx裸体784大胆| 97久久精品人人爽人人爽蜜臀| 亚洲欧美在线不卡| 97超碰欧美中文字幕| 亚洲一级av无码毛片精品| 91网页版在线| 懂色av粉嫩av浪潮av| 18成人在线视频| 四虎免费在线视频| 亚洲成人777| 综合激情网五月| 91福利精品视频| 国产免费黄色大片| 亚洲精品一区二区在线观看| 亚洲三级中文字幕| 国产午夜精品全部视频播放| 91伦理视频在线观看| 久久中文精品视频| 国产91足控脚交在线观看| 日韩av免费网站| www一区二区三区| 国产精品免费区二区三区观看| 日韩三级视频| 一区二区视频在线播放| 欧美私人啪啪vps| 久草精品在线播放| 精品一区二区三区视频| 国产伦精品一区三区精东| 久久久久久久久97黄色工厂| 午夜国产小视频| 亚洲va欧美va人人爽| 中文字幕在线观看第二页| 日韩欧美一区二区在线视频| 国产精品欧美激情在线播放| 97se综合| 91精品国产91久久久久青草| 日韩大尺度在线观看| 婷婷久久青草热一区二区| 欧美aⅴ99久久黑人专区| 精品一区二区中文字幕| 极品美女销魂一区二区三区| 成人在线视频免费播放| 国产精品天天摸av网| 激情综合网五月婷婷| 香蕉网在线视频| 亚洲清纯自拍| 亚洲在线免费视频| 任你弄精品视频免费观看| 亚洲激情啪啪| 精品网站999| 精品国产一区二区三区麻豆小说 | 2022亚洲天堂| 狠狠色狠狠色综合系列| 中文字幕一区二区人妻在线不卡| 亚洲手机成人高清视频| 在线观看亚洲欧美| 欧美一区二区大片| 激情福利在线| 91大神福利视频在线| 国产精品亚洲综合在线观看| 日本高清久久一区二区三区| 黑丝一区二区| 久久精品国产99久久99久久久| 久久免费视频色| 日本特黄特色aaa大片免费| 欧美日韩高清一区二区三区| 三级在线观看网站| 欧美另类99xxxxx| 日韩城人网站| 日韩欧美一区二区三区久久婷婷| 一区免费在线| 欧美性猛交xx| 综合久久久久久| 亚洲视频一区二区三区四区| 亚洲欧美日本精品| 日本а中文在线天堂| 97超碰人人看人人| 亚洲精品888| 91看片破解版| 国产精品久久免费看| 啪啪小视频网站| 一本色道久久综合狠狠躁篇怎么玩 | 日韩av免费一区| 日韩a级大片| 三上悠亚久久精品| 不卡在线视频中文字幕| 久久久夜色精品| 精品少妇一区二区三区在线视频| gogogogo高清视频在线| 91系列在线播放| 亚洲成人国产| 一区二区久久精品| 日韩成人一级| 欧美成在线观看| 秋霞影院一区| 99久久久精品视频| 丁香天五香天堂综合| 久久黄色免费视频| 欧美sm极限捆绑bd| 国产第一页在线视频| 国产日韩在线一区二区三区| 亚洲国产三级| 91av在线免费| 色嗨嗨av一区二区三区| 国产精品视频二区三区| 国产成人精品一区| 欧洲乱码伦视频免费| 免费看涩涩视频| 中文字幕佐山爱一区二区免费| 国产精品久久影视| 欧美精品制服第一页| 国产成人av毛片| 久久久精品在线视频| 中文字幕国产一区二区| 国产女人18毛片18精品| 久久久久国产精品免费| 天堂av一区二区三区在线播放 | 一道精品一区二区三区| 国产一区视频在线看| 久久精品视频日本| 亚洲人成网站999久久久综合| 国精品产品一区| 人妻激情另类乱人伦人妻| 99精品一区二区三区| 亚洲午夜无码久久久久| 美日韩在线视频| 羞羞答答一区二区| www.日本一区| 亚洲高清在线视频| 国产经典自拍视频在线观看| 91九色综合久久| 99精品欧美| 亚洲一区二区在线视频观看| 亚洲美女偷拍久久| 三级毛片在线免费看| 91精品美女在线| 日韩午夜精品| 中文字幕资源站| 亚洲精品wwwww| 91麻豆精品| 亚洲色成人一区二区三区小说| 综合久久久久久久| 青青草免费在线| 51成人做爰www免费看网站| 亚洲专区一区二区三区| 日韩高清dvd碟片| 亚洲毛片在线免费观看| 亚洲一区二区电影| 欧美三级午夜理伦三级富婆|