久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 通過無線電跳頻技術想到的端口跳變通信 [打印本頁]

作者: liuyy    時間: 2015-1-11 19:49
標題: 通過無線電跳頻技術想到的端口跳變通信
server.java

  1. import java.io.InputStream;
  2. import java.io.OutputStream;
  3. import java.net.ServerSocket;
  4. import java.net.Socket;
  5. import java.util.Random;

  6. public class server {
  7. public static void main(String[] args) throws Exception {
  8. // 創建服務器端的socket對象
  9. ServerSocket ss = new ServerSocket(1989);
  10. // 監聽連接
  11. Socket socket = ss.accept();
  12. // 直到連接建立好之后代碼才會往下執行
  13. System.out.println("客戶端已連接...");
  14. // 獲得服務器端的輸入流,從客戶端接收信息
  15. InputStream is = socket.getInputStream();
  16. // 服務器端的輸出流,向客戶端發送信息
  17. OutputStream os = socket.getOutputStream();

  18. // 接收客戶端的初始握信息
  19. byte[] buffer = new byte[200];
  20. int length = 0;
  21. length = is.read(buffer);
  22. String str = new String(buffer, 0, length);
  23. System.out.println("客戶端握手連接口令為:" + str);

  24. // 需要使用跳端口發送的數據
  25. byte[] buffer1 = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
  26. 'k', 'l', 'm', 'n' };
  27. for (int i = 0; i < 14; i++) {
  28. // 一個標準的通信數據封包
  29. byte[] fengbao = new byte[3];// 2字節端口好1字節附加數據
  30. // 隨機生成下次連接的端口號,必須保證端口號范圍在1024~65535之間減少不必要的碰撞
  31. int nexthost = new Random().nextInt(60000) + 1;
  32. if (nexthost <= 1024)
  33. nexthost += 1024;
  34. // 封裝一個通信數據包
  35. fengbao[0] = buffer1[i]; // 填充附加數據
  36. byte[] nexthost_byte = toByteArray(nexthost, 2);// 整形數據轉換為字節數組
  37. fengbao[1] = nexthost_byte[0];// 填充下次連接端口號
  38. fengbao[2] = nexthost_byte[1];
  39. // 服務器端的輸出
  40. os.write(fengbao);// 發送一個3字節的標準通信數據包
  41. // 釋放此次連接用到資源
  42. is.close();
  43. os.close();
  44. socket.close();
  45. // 準備開始下一次跳端口連接
  46. if(i<13)
  47. {
  48. ss = new ServerSocket(nexthost);
  49. System.out.println("等待客戶端下一次連接...............");
  50. socket = ss.accept();
  51. System.out.println("客戶端已連接此次連接端口號為:" + nexthost);
  52. is = socket.getInputStream();
  53. os = socket.getOutputStream();
  54. }

  55. }

  56. }

  57. // 將一個iArrayLen長度的整型數據轉換為數組類型字節數組的低位是整型的低字節位
  58. public static byte[] toByteArray(int iSource, int iArrayLen) {
  59. byte[] bLocalArr = new byte[iArrayLen];
  60. for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
  61. bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);
  62. }
  63. return bLocalArr;
  64. }

  65. // 將byte數組bRefArr轉為一個整數,字節數組的低位是整型的低字節位
  66. public static int toInt(byte[] bRefArr, int iArrayLen) {
  67. int iOutcome = 0;
  68. byte bLoop;

  69. for (int i = 0; i < iArrayLen; i++) {
  70. bLoop = bRefArr[i];
  71. iOutcome += (bLoop & 0xFF) << (8 * i);
  72. }
  73. return iOutcome;
  74. }

  75. }

  76. import java.io.InputStream;
  77. import java.io.OutputStream;
  78. import java.net.Socket;

  79. client.java
  80. public class client {
  81. public static void main(String[] args) throws Exception {
  82. Socket socket = new Socket("192.168.0.61", 1989);
  83. // 客戶端的輸出流
  84. OutputStream os = socket.getOutputStream();
  85. // 將握手口令信息寫入流,把這個信息傳遞給服務器
  86. os.write("你好服務端測試下跳端口通信...".getBytes());
  87. // 從服務器端接收信息
  88. InputStream is = socket.getInputStream();

  89.    for(int i=0;i<14;i++)
  90.    {
  91. byte[] fengbao = new byte[3];
  92. byte[] host = new byte[2];
  93. int nexthost;
  94. is.read(fengbao);
  95. host[0]=fengbao[1];
  96. host[1]=fengbao[2];
  97. nexthost=toInt(host,2);
  98. System.out.println("下次連接端口為為:"+nexthost+"此次連接收到的附加數據為:"+(char)fengbao[0]);
  99. //釋放此次連接用到的資源
  100. is.close();
  101. os.close();
  102. socket.close();
  103. //準備開始下一次跳端口連接
  104. if(i<13)
  105. {
  106. socket = new Socket("192.168.0.61", nexthost);
  107. os = socket.getOutputStream();
  108. is = socket.getInputStream();
  109. }
  110.    }

  111. }
  112. //將一個iArrayLen長度的整型數據轉換為數組類型字節數組的低位是整型的低字節位
  113. public static byte[] toByteArray(int iSource, int iArrayLen) {
  114.    byte[] bLocalArr = new byte[iArrayLen];
  115.    for (int i = 0; (i < 4) && (i < iArrayLen); i++) {
  116.        bLocalArr[i] = (byte) (iSource >> 8 * i & 0xFF);
  117.    }
  118.    return bLocalArr;
  119. }

  120. // 將byte數組bRefArr轉為一個整數,字節數組的低位是整型的低字節位
  121. public static int toInt(byte[] bRefArr,int iArrayLen) {
  122.    int iOutcome = 0;
  123.    byte bLoop;

  124.    for (int i = 0; i <iArrayLen; i++) {
  125.        bLoop = bRefArr[i];
  126.        iOutcome += (bLoop & 0xFF) << (8 * i);
  127.    }
  128.    return iOutcome;
  129. }

  130. }

復制代碼







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 免费的黄网站 | 91精品国产99久久久久久红楼 | 欧美国产一区二区三区 | 精品福利在线 | 在线免费国产 | 大尺度做爰床戏呻吟舒畅 | 欧美a级成人淫片免费看 | 亚洲一区二区免费 | 国产成人午夜精品 | 午夜小视频在线观看 | 国产美女永久免费无遮挡 | 国产一区二区视频在线观看 | 欧美www.| 四虎海外| 欧美精品日韩少妇 | 国产区精品 | 二区三区在线观看 | 九色在线视频 | 日韩毛片在线播放 | 欧美一级特黄视频 | 99re在线观看视频 | 黄色三级免费 | 欧美性生活网站 | 九色在线视频 | 日韩亚洲一区二区 | 日本欧美久久久久免费播放网 | 色黄大色黄女片免费中国 | 亚洲乱码一区二区 | 午夜精品视频 | 国产女人高潮视频 | 日韩精品国产精品 | 久久av片 | 超碰在线免费 | 色伊人网 | 成人精品在线视频 | 欧美性生交 | 久久精品视频99 | 成年人国产 | 午夜激情福利视频 | 在线播放毛片 | 免费毛片观看 |