精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲一区二区在线免费看| 久草在线在线精品观看| 日韩电影中文字幕av| 成人黄色片视频| 色综合久久影院| 粉嫩aⅴ一区二区三区四区| 97香蕉超级碰碰久久免费的优势| 久久久视频6r| 一区二区三区高清在线观看| 日韩欧美精品网站| 最近中文字幕免费mv| 深夜福利视频网站| 看国产成人h片视频| 高清亚洲成在人网站天堂| 亚洲精品91在线| 一区二区日韩| 欧美日韩国产综合一区二区三区| 国产玉足脚交久久欧美| av在线免费观看网| 99久久婷婷国产精品综合| 国产一区二中文字幕在线看| 欧美精品亚洲精品日韩精品| 久久看人人摘| 亚洲精品丝袜日韩| 亚洲一区二区福利视频| 不卡av播放| 亚洲精品国产精品乱码不99| 欧美一区观看| 免费国产精品视频| 国产一区二区电影| 国产精品免费视频xxxx| 日韩激情在线播放| 伊人色**天天综合婷婷| 国产一区二区三区在线观看视频 | 91首页免费视频| 91中文字幕在线| 国产一区二区视频免费| 亚洲视频www| 欧美激情精品久久久久久久变态| 亚洲aaa视频| 国产精品亚洲片在线播放| 精品久久久久久久久久久久久久久久久 | 一级黄色免费片| 三级久久三级久久| 97成人在线视频| 国产精品50页| 精品福利电影| 欧美精品videossex88| 成年人一级黄色片| 亚洲国产精品91| xx视频.9999.com| 亚洲熟女毛茸茸| 日韩一区二区三区免费播放| 最近2019中文字幕大全第二页| 性欧美丰满熟妇xxxx性仙踪林| 久久影院资源站| 精品国产乱子伦一区| 日本精品一二三区| 国产精品x8x8一区二区| 精品福利av导航| 污网站免费观看| 牛牛影视久久网| 日韩经典一区二区三区| 9.1成人看片免费版| 亚洲永久精品唐人导航网址| 亚洲欧美另类在线观看| 一级黄色片网址| 欧美一区二区三区激情视频| 中日韩午夜理伦电影免费| 成人小视频免费看| 久久在线免费| 欧美日韩高清区| 国产精品99精品无码视| 亚洲精选91| 国产97人人超碰caoprom| 怡红院av久久久久久久| 久久福利视频一区二区| 亚洲自拍偷拍色图| 人妻视频一区二区三区| 久久久三级国产网站| 视频一区二区精品| 成人看av片| 精品久久久中文| 欧美精品第三页| 久久精品97| 欧美成人高清电影在线| 国产精品嫩草av| 久久国产亚洲| 欧美激情视频网址| 亚洲视频 欧美视频| 久久国产剧场电影| 国产伦视频一区二区三区| 美女做暖暖视频免费在线观看全部网址91 | 亚洲国产精品va| 人人人妻人人澡人人爽欧美一区| 99久久www免费| 韩国v欧美v日本v亚洲| 伊人中文字幕在线观看| 国产一区二区三区四区在线观看| 国产三区精品| 欧美人xxx| 欧美日韩免费网站| 伊人网在线综合| 狼人天天伊人久久| 精品激情国产视频| 特级西西444www大精品视频免费看| 免费成人你懂的| 国产原创精品| 久久久久久国产精品免费无遮挡| 偷拍日韩校园综合在线| 日本中文字幕二区| 久久综合五月婷婷| 久久国产色av| 中文字幕免费视频观看| 波波电影院一区二区三区| 在线观看国产一区| 在线观看精品| 亚洲精品电影在线观看| 日韩欧美综合视频| 日韩黄色在线观看| 久久精品99| 国产探花视频在线观看| 欧美精品免费视频| 青娱乐国产视频| 一区二区久久| 国产精品加勒比| 成人午夜在线影视| 欧美午夜精品一区二区蜜桃| 大地资源二中文在线影视观看| 亚洲网色网站| 国产在线不卡精品| 国产51人人成人人人人爽色哟哟| 亚洲一级在线观看| 一级网站在线观看| 97精品97| 国产免费一区视频观看免费| 国产经典自拍视频在线观看| 韩曰欧美视频免费观看| 特级特黄刘亦菲aaa级| 午夜亚洲福利| 91中文在线视频| 黄av在线播放| 制服丝袜av成人在线看| 日本少妇xxxxx| 日韩和欧美一区二区三区| 久久精品国产第一区二区三区最新章节 | 亚洲成av人片乱码色午夜| 国产精品成人观看视频国产奇米| 三级在线电影| 色欧美乱欧美15图片| 瑟瑟视频在线观看| 久久一本综合频道| 日韩jizzz| 99亚洲伊人久久精品影院| 中国china体内裑精亚洲片| 波多野结衣在线观看视频| 国产校园另类小说区| 北条麻妃在线视频| 日本欧美肥老太交大片| 成人www视频在线观看| 日韩大片在线永久免费观看网站| 欧美性色黄大片手机版| 黄色香蕉视频在线观看| 国产伦理精品不卡| 91.com在线| 三级小说欧洲区亚洲区| 日韩免费精品视频| melody高清在线观看| 欧美日韩mp4| 美女视频黄免费| 成人av免费在线播放| 国产91美女视频| 日韩国产在线| 97av自拍| 樱花草涩涩www在线播放| 一区二区三区黄色| 国产精品毛片一区二区在线看舒淇| 亚洲欧美国产三级| 国产精品成人99一区无码| 性欧美精品高清| 亚洲ai欧洲av| 色妞ww精品视频7777| 91精品国产自产91精品| av午夜在线| 精品日韩一区二区三区免费视频| 四虎精品永久在线| 国产精品入口麻豆九色| 波多野结衣三级视频| 亚洲影视综合| 香蕉精品视频在线| 北条麻妃一区二区三区在线观看| 日本欧美爱爱爱| 大片免费在线观看| 亚洲精品www久久久| 中文字幕av影视| 亚洲成人综合在线| 国产又黄又粗的视频| 粉嫩av一区二区三区| 少妇黄色一级片| 亚洲经典视频在线观看| 亚洲欧洲日韩综合二区| 国产无遮挡裸体免费久久| 国产精品欧美激情在线播放| heyzo高清中文字幕在线| 自拍亚洲一区欧美另类| 五月婷婷激情在线| 91精品婷婷国产综合久久| 潘金莲一级淫片aaaaaa播放| 亚洲女人小视频在线观看| 成人午夜福利一区二区| 国产成人精品一区二区三区四区| 亚洲五月天综合| 亚洲免费播放| 黑人巨茎大战欧美白妇 | 精品一区二区三区无码视频| 人人狠狠综合久久亚洲婷| 久久久99爱| eeuss国产一区二区三区四区| 国产日韩欧美在线视频观看| 日本青青草视频| 艳妇乳肉豪妇荡乳av| 不卡的电视剧免费网站有什么| 欧美三级理论片| 国产欧美综合一区二区三区| 日本xxx免费| 日韩久久电影| 日本电影一区二区三区| 国产精品45p| av资源站久久亚洲| 日本精品久久| 国产精品久久久久久久7电影| 僵尸再翻生在线观看| 欧美另类老女人| 成人区精品一区二区不卡| 日韩网站在线观看| chinese偷拍一区二区三区| 亚洲国产婷婷香蕉久久久久久 | 亚洲第一男人天堂| 国产成人三级一区二区在线观看一| 欧美日韩国产欧美日美国产精品| 色av性av丰满av| 一本色道久久加勒比精品| 可以免费看的av毛片| 婷婷中文字幕综合| 日韩欧美三级视频| 无吗不卡中文字幕| 制服.丝袜.亚洲.中文.综合懂色| 激情久久av一区av二区av三区| 国产亚洲精品久久久久久无几年桃| 亚洲三级理论片| 日本中文字幕免费在线观看| 亚洲美女精品一区| 天天干中文字幕| 亚洲国产一区视频| 永久免费看片在线播放| 黑人巨大精品欧美一区二区一视频 | 1024在线看片| 国产精品久久久久aaaa樱花| 日本黄色激情视频| 中文字幕一区二区三区不卡| 成人自拍小视频| 一区二区三区在线免费播放 | 色老综合老女人久久久| 无码视频一区二区三区| 欧美日韩一级片在线观看| 一级黄色片免费| 日韩精品中文字幕在线一区| 蜜臀av中文字幕| 亚洲丝袜一区在线| 黄色av免费在线| 97在线视频免费| 国产v综合v| 亚洲www视频| 9l亚洲国产成人精品一区二三 | 日韩a在线看| 一区二区三区黄色| 黄色av电影在线播放| 欧美极品少妇xxxxⅹ喷水| 亚洲天堂av影院| 国产精品色悠悠| 91麻豆精品激情在线观看最新| 国语精品免费视频| 日韩av密桃| 久操手机在线视频| 久久国产欧美| 亚洲综合123| 91偷拍与自偷拍精品| 女人18毛片毛片毛片毛片区二| 亚洲图片欧美色图| 超碰在线观看91| 日韩精品中文字幕在线一区| 瑟瑟在线观看| 欧美成人午夜激情| 伊人久久综合一区二区| 亚洲自拍欧美色图| 久久99高清| 嫩草影院中文字幕| 日韩中文字幕一区二区三区| 国产探花在线观看视频| 91视视频在线直接观看在线看网页在线看| 国产aaaaaaaaa| 婷婷久久综合九色综合伊人色| 亚洲一区二区影视| 亚洲国产精品字幕| 激情视频在线观看| 日产精品99久久久久久| 视频精品国内| 一区二区视频在线播放| 国产一区二区三区的电影 | 一起操在线视频| 91在线观看地址| 欧洲猛交xxxx乱大交3| 色婷婷综合久久久久中文一区二区| 国产免费无遮挡| 一区二区三区视频免费在线观看| 激情网站在线| 91九色精品视频| 欧美日韩老妇| 日本三级免费观看| 成人免费毛片高清视频| 精品亚洲乱码一区二区 | 久久久久久久香蕉网| 亚洲我射av| 亚洲精品在线免费| 久久久成人网| 成人精品在线观看视频| 亚洲综合色视频| 99视频国产精品免费观看a| 在线观看亚洲视频| 丝袜美腿一区| 欧美三级网色| 亚洲在线成人| www.超碰97| 无码av免费一区二区三区试看| 亚洲精品久久久蜜桃动漫| 操91在线视频| 国产午夜亚洲精品一级在线| 一区二区在线中文字幕电影视频 | www.欧美com| 亚洲免费观看高清完整版在线观看| 一级片视频网站| www.欧美精品| 成人网av.com/| 不卡中文字幕在线| 国产主播一区二区三区| 99热这里只有精品4| 欧美精品久久一区二区三区| 免费在线午夜视频| 成人黄色免费网站在线观看| 999成人网| 激情文学亚洲色图| 亚洲精品成人天堂一二三| 国产成人av免费看| 久久久久国产精品www| 福利欧美精品在线| 日本毛片在线免费观看| 国产午夜亚洲精品理论片色戒| 亚洲中文字幕无码爆乳av | 亚洲精品久久久久久国| 91麻豆精品91久久久久久清纯| 50度灰在线| 久久精品国产精品青草色艺| 久久综合五月| 成人18视频免费69| 日韩一区二区中文字幕| 免费看电影在线| 欧美精品二区三区四区免费看视频 | 日本欧美一级片| 99tv成人| 久久久久亚洲AV成人网人人小说| 精品欧美激情精品一区| 国产中文字幕在线视频| 国产日韩中文在线| 亚洲性图久久| 亚洲av成人无码久久精品 | 每日更新在线观看av| 国产欧美日韩视频| 欧美欧美全黄| 免费看黄色的视频| 日韩一区二区在线播放| 国产社区精品视频| 一区二区三区四区国产| 成人高清在线视频| 91成品人影院| 国自在线精品视频| 色小子综合网| 大尺度做爰床戏呻吟舒畅| 欧美在线观看18| 超碰在线最新网址| 亚洲欧美精品| 99re这里只有精品6| 精人妻无码一区二区三区| 亚洲男人天堂网站| 91精品久久| 欧美日韩综合另类| 高清成人在线观看| 午夜影院免费在线观看| 不卡av日日日| 亚洲精品亚洲人成在线观看| 亚洲黄色片免费看|