国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java Socket通信如何進(jìn)行通用服務(wù)器代碼編寫

開發(fā) 后端
Java Socket通信需要我們不斷的進(jìn)行相關(guān)問題的學(xué)習(xí),下面我們就看看如何才能更好的進(jìn)行有關(guān)問題解決方案。希望大家有所幫助。

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

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

2.無論同步或者異步通信,發(fā)送之后務(wù)必要又響應(yīng)回復(fù),確認(rèn)收到,負(fù)責(zé)進(jìn)行一定范圍內(nèi)重發(fā),例如重發(fā)三次;

3.長連接服務(wù)器與客戶端之間務(wù)必需要心跳探測,由客戶端主動(dòng)發(fā)起;

4.短連接服務(wù)器通用代碼:

 

  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 : //錯(cuò)誤的命令字  
  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數(shù)據(jù)包的短信息ID  
  221. } else {  
  222. unioncomLog.error("編碼格式錯(cuò)誤!");  
  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通信的詳細(xì)介紹。希望大家有所幫助。

【編輯推薦】

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

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

服務(wù)器虛擬服務(wù)器

2010-03-09 18:14:55

Python sock

2011-07-14 14:58:19

網(wǎng)絡(luò)服務(wù)器配置服務(wù)器

2009-08-21 16:13:45

代理服務(wù)器設(shè)置迅雷

2010-03-16 13:47:48

Java多線程服務(wù)器

2010-03-18 17:39:46

Java Socket

2010-06-02 18:51:35

搭建SVN服務(wù)器

2011-10-26 11:21:47

服務(wù)器虛擬化存儲(chǔ)管理

2011-07-04 10:20:25

服務(wù)器云時(shí)代

2017-08-04 10:47:20

2018-07-20 10:12:27

租用服務(wù)器速度測試

2011-06-29 10:06:23

Linux服務(wù)器優(yōu)化

2010-03-19 09:26:34

Java Socket

2011-08-02 16:46:33

FoxmailServ郵件服務(wù)器域管理

2010-03-19 15:01:23

Java Socket

2016-09-14 21:44:50

JavascriptreactJsjsx
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

中文字幕亚洲天堂| 亚洲精品免费在线| 亚洲精品一区二三区不卡| 国产91在线亚洲| 亚洲网站啪啪| 日韩专区在线播放| 成人综合影院| 99精品视频一区| 国产日韩二区| 精品日韩毛片| 日韩中文字幕国产| 天堂а√在线中文在线| 国产传媒在线观看| 日韩激情一二三区| 亚洲va欧美va国产综合久久| 9191在线观看| 亚洲欧美激情小说另类| 茄子视频成人在线观看| 亚洲先锋影音| 久久综合免费视频影院| 91精品大全| 国产精品乱人伦中文| 日韩免费电影一区二区| 欧美gayvideo| 国产精品日韩精品| 青青草久久爱| 久久久久久香蕉网| 91超碰国产在线| 欧美一区二区三区四区高清| 日本免费不卡| 欧美伊人精品成人久久综合97 | 91亚洲va在线va天堂va国| 欧美jizz19性欧美| 国语自产精品视频在线看| 国产日韩欧美中文在线| 在线精品播放av| 日韩成人精品一区二区三区| 亚洲人成在线免费观看| 成年人在线观看网站| 91免费观看视频在线| 粉嫩av一区二区三区免费观看| 亚洲欧美综合| 欧美一区二区三区四区夜夜大片| 免费在线观看日韩欧美| 欧美一级视频免费看| 国产福利一区二区三区在线视频| a级黄色片网站| 97se亚洲国产综合自在线| 国产日韩精品一区观看| 亚洲最大的免费视频网站| 日韩一区二区三区在线| 日韩av电影免费| 欧美性大战久久久久久久蜜臀| 免费在线观看日韩视频| 欧美亚洲日本国产| 精品69视频一区二区三区| 日韩亚洲精品电影| 国产日韩另类视频一区| 日日骚av一区| 美女高潮视频在线看| 亚洲第一网中文字幕| 麻豆免费在线观看| 亚洲精品动漫久久久久| av手机在线观看| 亚洲成人网av| 久久av色综合| www.xxxx欧美| 欧美国产美女| 色噜噜狠狠色综合网| 精品一区二区三区久久| 淫视频在线观看| 日韩免费一区二区三区在线播放| 亚洲一区二区三区免费| 91精品在线播放| 国产一区二区三区香蕉 | 成人爽a毛片免费啪啪| 国产精品视频专区| 欧美性猛交xxxx乱大交极品| 中文字幕在线观看一区二区| 婷婷在线视频观看| 日韩国产高清污视频在线观看| 夜夜躁狠狠躁日日躁2021日韩| 宅男噜噜99国产精品观看免费| 中文字幕一区二区视频| 黄色成人在线网| 精品一区二区三区自拍图片区| 亚洲高清电影| 日日噜噜噜噜久久久精品毛片| 欧美羞羞免费网站| 久久久加勒比| 中文字幕99| 在线观看免费亚洲| 久久不见久久见中文字幕免费| 人妻激情另类乱人伦人妻| 免费欧美激情| 色中文字幕在线观看| 欧美色图免费看| 在线国产一区| 成人在线播放免费观看| 99久久无色码| 欧美日韩精品欧美日韩精品一| 欧美 日韩 国产精品免费观看| 午夜视频国产| 91九色视频在线| 欧美久久久久久蜜桃| 精品在线观看入口| 99re6在线视频| 999热视频在线观看| 欧美日韩一区二区在线观看视频| 亚洲午夜精品一区 二区 三区| 国产系列电影在线播放网址| 国产精品v欧美精品v日韩| 亚洲7777| 欧美成人福利| 99热最新在线| 亚洲日本一区二区| 超碰在线资源| 国产精品久久久久免费| 国产精品久久一级| 欧美aaa视频| 热re99久久精品国99热蜜月| 同产精品九九九| 成人自拍在线| 亚洲国产精品女人| 69久久夜色精品国产69蝌蚪网| 少妇一区二区视频| 99.玖玖.com| 欧美激情精品久久久久久变态| 国产成人av网站| av成人福利| 欧美在线一二三区| 欧美高清www午色夜在线视频| 亚洲综合色站| 涩涩视频在线观看免费| 国产精品第3页| 亚洲综合成人在线| av永久不卡| 一级在线免费观看| 国产精品久久久久久av福利| 中文字幕一区二区三区在线不卡| 在线日韩成人| 色综合色综合色综合色综合| 久久91超碰青草是什么| 久久久一区二区| 欧美视频二区欧美影视| 日韩av资源在线| 色综合色综合网色综合| 久久精品一区二区三区不卡| 清纯唯美激情亚洲| 最近中文字幕2019第二页视频 | 中文字幕精品网| 国产乱淫av一区二区三区| 日本久久免费| 日韩欧美亚洲天堂| 最新国产精品亚洲| 久久久久99精品国产片| 麻豆一区二区| 亚洲成人天堂| 久久久久久一区| 亚洲欧美日韩一区二区在线| 久久一区二区三区四区| 日韩精品社区| 黄色影院在线播放| 性欧美精品一区二区三区在线播放 | 国内精品国产成人| 精品国产鲁一鲁****| 国产色视频在线播放| 成人免费直播live| 4438x成人网最大色成网站| 国内外成人在线| 国产精品自在| 免费在线一级视频| 大桥未久一区二区三区| 久久久精品在线观看| 精品久久久一区| 国产在线精品一区二区夜色| 欧美国产不卡| 国产在线更新| 无码内射中文字幕岛国片| 91精品免费| 精品国产一区二区三区久久狼黑人| 亚洲乱码精品一二三四区日韩在线| 国产日韩视频| 激情av综合| av第一福利在线导航| 成视人a免费观看视频| 午夜精品电影在线观看| 欧美激情第99页| 91精品国产美女浴室洗澡无遮挡| 懂色av一区二区三区蜜臀| 日韩av片子| 全亚洲第一av番号网站| 一级黄色av| 老司机av福利| 国产91九色视频| 亚洲精品综合精品自拍| 欧美性生活大片免费观看网址| 粉嫩高潮美女一区二区三区| 午夜国产精品视频免费体验区| 国产高清精品二区|