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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3379|回復: 0
打印 上一主題 下一主題
收起左側

通過無線電跳頻技術想到的端口跳變通信

[復制鏈接]
跳轉到指定樓層
樓主
ID:72008 發表于 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. }

復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕亚洲精品 | 久久久久久久久久久久久九 | 激情五月婷婷 | 一区二区不卡视频 | 亚洲国产18| 久久综合久久综合久久综合 | 欧美乱码精品一区二区三区 | 日本黄色不卡视频 | 国产剧情一区 | 天天影视网天天综合色在线播放 | 欧美日韩精品亚洲 | 久久99精品久久久 | 女同久久另类99精品国产 | 久久久久久久久久久久91 | 99re视频在线免费观看 | 亚洲欧洲小视频 | 殴美成人在线视频 | 成人一级黄色毛片 | 波多野结衣一区二区 | 国产福利在线小视频 | 二区三区视频 | 91亚洲精品久久久电影 | 亚洲一区二区三区在线 | 日韩在线一区二区三区 | 亚洲一区视频在线 | 久久久www成人免费精品 | www4虎| 久久久日韩精品一区二区三区 | 成人久久网| 精品久久久久久久久久久久久久 | 黄色网络在线观看 | 亚洲天堂一区 | 在线观看视频你懂得 | 亚洲国产精品精华素 | 日本成人中文字幕 | 三级黄视频在线观看 | 特黄特色大片免费视频观看 | 国产一区中文字幕 | 久久久网 | h视频免费看 | 日日摸日日碰夜夜爽亚洲精品蜜乳 |