《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > Android中實現TCP和UDP傳輸的方法
Android中實現TCP和UDP傳輸的方法
摘要: TCP和UDP在網絡傳輸中非常重要,在Android開發中同樣重要。
Abstract:
Key words :

  TCPUDP在網絡傳輸中非常重要,在Android開發中同樣重要。

  首先我們來看一下什么是TCP和UDP。

  什么是TCP?

  TCP:Transmission Control Protocol 傳輸控制協議TCP是一種面向連接(連接導向)的、可靠的、基于字節流的運輸層(Transport layer)通信協議,由IETF的RFC 793說明(specified)。在簡化的計算機網絡OSI模型中,它完成第四層傳輸層所指定的功能。應用層向TCP層發送用于網間傳輸的、用8位字節表示的數據流,然后TCP把數據流分割成適當長度的報文段(通常受該計算機連接的網絡的數據鏈路層的最大傳送單元(MTU)的限制)。之后TCP把結果包傳給IP層,由它來通過網絡將包傳送給接收端實體的TCP層。TCP為了保證不發生丟包,就給每個字節一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據(假設丟失了)將會被重傳。TCP用一個校驗和函數來檢驗數據是否有錯誤;在發送和接收時都要計算校驗和。

  首先,TCP建立連接之后,通信雙方都同時可以進行數據的傳輸,其次,他是全雙工的;在保證可靠性上,采用超時重傳和捎帶確認機制。

  在流量控制上,采用滑動窗口協議[1],協議中規定,對于窗口內未經確認的分組需要重傳。

  在擁塞控制上,采用慢啟動算法。

  什么是UDP?

  UDP 是User Datagram Protocol的簡稱, 中文名是用戶數據包協議,是 OSI 參考模型中一種無連接的傳輸層協議,提供面向事務的簡單不可靠信息傳送服務。它是IETF RFC 768是UDP的正式規范。在網絡中它與TCP協議一樣用于處理數據包。在OSI模型中,在第四層——傳輸層,處于IP協議的上一層。UDP有不提供數據報分組、組裝和不能對數據包的排序的缺點,也就是說,當報文發送之后,是無法得知其是否安全完整到達的。 UDP用來支持那些需要在計算機之間傳輸數據的網絡應用。包括網絡視頻會議系統在內的眾多的客戶/服務器模式的網絡應用都需要使用UDP協議。UDP協議從問世至今已經被使用了很多年,雖然其最初的光彩已經被一些類似協議所掩蓋,但是即使是在今天,UDP仍然不失為一項非常實用和可行的網絡傳輸層協議。

  與所熟知的TCP(傳輸控制協議)協議一樣,UDP協議直接位于IP(網際協議)協議的頂層。根據OSI(開放系統互連)參考模型,UDP和TCP都屬于傳輸層協議。

  UDP協議的主要作用是將網絡數據流量壓縮成數據報的形式。一個典型的數據報就是一個二進制數據的傳輸單位。每一個數據報的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。

  TCP和UDP在android中的使用和在Java里是完全一樣的。

  首先我們看看TCP連接,下圖為TCP連接的一個示意圖:

  

        TCP傳輸原理

  是不是很好理解,這里就不多說了,直接看代碼吧!實踐出真知。

  TCP服務器端代碼:

  try {

  Boolean endFlag = false;

  ServerSocket ss = new ServerSocket(12345);

  while (!endFlag) {

  // 等待客戶端連接

  Socket s = ss.accept();

  BufferedReader input = new BufferedReader(newInputStreamReader(s.getInputStream()));

  //注意第二個參數據為true將會自動flush,否則需要需要手動操作output.flush()

  PrintWriter output = newPrintWriter(s.getOutputStream(),true);

  String message = input.readLine();

  Log.d(“Tcp Demo”, “message from Client:”+message);

  output.println(“message received!”);

  //output.flush();

  if(“shutDown”.equals(message)){

  endFlag=true;

  }

  s.close();

  }

  ss.close();

  } catch (UnknownHostException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

  TCP客戶端代碼:

  try {

  Socket s = new Socket(“localhost”, 12345);

  // outgoing stream redirect to socket

  OutputStream out = s.getOutputStream();

  // 注意第二個參數據為true將會自動flush,否則需要需要手動操作out.flush()

  PrintWriter output = new PrintWriter(out, true);

  output.println(“Hello IdeasAndroid!”);

  BufferedReader input = new BufferedReader(newInputStreamReader(s

  .getInputStream()));

  // read line(s)

  String message = input.readLine();

  Log.d(“Tcp Demo”, “message From Server:” + message);

  s.close();

  } catch (UnknownHostException e) {

  e.printStackTrace();

  } catch (IOException e) {

  e.printStackTrace();

  }

 

  下面我們看看UDP:

  

  UDP傳輸原理

  UDP服務器端代碼:

  // UDP服務器監聽的端口

  Integer port = 12345; // 接收的字節大小,客戶端發送的數據不能超過這個大小

  byte[] message = new byte[1024];

  try {

  // 建立Socket連接

  DatagramSocket datagramSocket = new DatagramSocket(port);

  DatagramPacket datagramPacket = new DatagramPacket(message,

  message.length);

  try {

  while (true) {

  // 準備接收數據

  datagramSocket.receive(datagramPacket);

  Log.d(“UDP Demo”, datagramPacket.getAddress()

  .getHostAddress().toString()

  + “:” + new String(datagramPacket.getData()));

  }

  } catch (IOException e) {

  e.printStackTrace();

  }

  } catch (SocketException e) {

  e.printStackTrace();

  }

  UDP客戶端代碼:

  public static void send(String message) {

  message = (message == null ? “Hello IdeasAndroid!” : message);

  int server_port = 12345;

  DatagramSocket s = null;

  try {

  s = new DatagramSocket();

  } catch (SocketException e) {

  e.printStackTrace();

  }

  InetAddress local = null;

  try {

  // 換成服務器端IP

  local = InetAddress.getByName(“localhost”);

  } catch (UnknownHostException e) {

  e.printStackTrace();

  }

  int msg_length = message.length();

  byte[] messagemessageByte = message.getBytes();

  DatagramPacket p = new DatagramPacket(messageByte, msg_length, local,

  server_port);

  try {

  s.send(p);

  } catch (IOException e) {

  e.printStackTrace();

  }

  }

  代碼中需要注意的地方已做了注釋,希望本文對您有所幫助!

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美精品国产一区| 欧美日韩一区免费| 一区二区三区**美女毛片| 欧美伊人久久大香线蕉综合69| 欧美日韩一卡二卡| 老司机午夜精品| 久久久久久9| 欧美一区二区| 香蕉久久夜色精品国产| 亚洲欧美欧美一区二区三区| 一区二区三区精品国产| 亚洲免费在线播放| 一区二区电影免费观看| 9色精品在线| 99热在这里有精品免费| 日韩午夜在线播放| 欧美jizzhd精品欧美巨大免费| 99在线精品观看| 亚洲激情图片小说视频| 在线看成人片| 亚洲国产综合视频在线观看| 一区免费观看| 影音先锋久久久| 国产精品视频网站| 国产精品国产三级国产专区53 | 国产精品爽黄69| 国产精品男女猛烈高潮激情| 国产乱码精品一区二区三| 欧美绝品在线观看成人午夜影视| 欧美在线网站| 久久久国产一区二区三区| 老司机成人网| 欧美精品一区二区三区高清aⅴ| 久久国产精品色婷婷| 欧美一区二区视频观看视频| 久久精品中文字幕免费mv| 久久亚洲春色中文字幕久久久| 午夜在线一区| 一二三区精品福利视频| 日韩一级精品| 亚洲综合色自拍一区| 亚洲一区在线免费| 欧美一区二区三区在线看| 久久性色av| 欧美日本中文字幕| 国产精品男女猛烈高潮激情| 欧美女主播在线| 欧美午夜在线一二页| 国产在线一区二区三区四区 | 久久久久欧美| 欧美成人免费网| 欧美日韩在线视频一区二区| 国产毛片一区二区| 亚洲缚视频在线观看| 一区二区三区高清| 99国产精品久久久久久久| 亚洲一区二区三区四区在线观看| 国产精品区免费视频| 国产亚洲美州欧州综合国| 亚洲激情小视频| 亚洲一区二区黄| 在线日韩日本国产亚洲| 在线一区观看| 欧美中文字幕| 最新69国产成人精品视频免费| 亚洲娇小video精品| 国产麻豆91精品| 在线观看一区二区精品视频| 夜夜嗨av色综合久久久综合网| 亚洲欧洲一级| 亚洲综合日本| 中文在线资源观看网站视频免费不卡 | 国产亚洲制服色| 国产精品专区一| 亚洲大胆av| 午夜精品网站| 亚洲最新色图| 久久人人爽人人| 国产精品激情偷乱一区二区∴| 国产精品久久一区二区三区| 狠狠色狠狠色综合人人| 一区二区av| 亚洲精品视频中文字幕| 久久国产成人| 欧美日韩在线高清| 亚洲第一区中文99精品| 午夜在线电影亚洲一区| 亚洲午夜久久久久久尤物| 久久九九久精品国产免费直播| 久久久国产精彩视频美女艺术照福利| 久久精品国产免费观看| 久久婷婷综合激情| 国产精品国产a级| 国产目拍亚洲精品99久久精品 | 亚洲国产影院| 一本大道久久a久久精二百| 久久成年人视频| 亚洲国产婷婷香蕉久久久久久99| 欧美精品1区| 国产欧美精品在线| 一区二区高清在线观看| 亚洲精品视频在线播放| 久久噜噜噜精品国产亚洲综合| 欧美成在线视频| 国产欧美高清| 艳女tv在线观看国产一区| 亚洲激情在线观看视频免费| 久久九九久精品国产免费直播| 欧美+日本+国产+在线a∨观看| 欧美福利影院| 雨宫琴音一区二区在线| 欧美一区国产在线| 欧美一区二区播放| 国产精品视频一区二区三区| 日韩视频在线观看| 新狼窝色av性久久久久久| 亚洲一区二区黄色| 欧美一区2区三区4区公司二百| 日韩视频一区二区三区在线播放免费观看| 99精品99久久久久久宅男| 亚洲国产高清自拍| 亚洲精品亚洲人成人网| 久久深夜福利| 狠狠干综合网| 久久精品国产清自在天天线| 久久久久一区二区| 欧美另类女人| 亚洲国产视频直播| 亚洲欧洲日本mm| 欧美精品不卡| 亚洲电影免费在线观看| 最新亚洲激情| 欧美成人69av| 亚洲片在线观看| 一个色综合导航| 欧美丝袜一区二区| 黄色精品网站| 久久精品免视看| 欧美不卡高清| 亚洲精品国产视频| 国产精品a级| 亚洲精品久久视频| 午夜精品一区二区三区电影天堂 | 国产精品www网站| 中文网丁香综合网| 欧美一级午夜免费电影| 欧美日韩一区在线观看视频| 99热免费精品在线观看| 亚洲欧美一区二区三区在线| 国产片一区二区| 亚洲国产美女久久久久| 欧美国产91| 亚洲色图综合久久| 久久久777| 精品1区2区| 一区二区精品国产| 国产精品国产三级国产aⅴ9色| 亚洲美女视频在线免费观看| 亚洲一区二区三区四区五区午夜| 欧美激情亚洲精品| 亚洲精品久久久久中文字幕欢迎你| 亚洲男同1069视频| 亚洲国产欧美不卡在线观看| 麻豆亚洲精品| 亚洲人成在线观看一区二区| 亚洲午夜精品福利| 国产欧美精品一区二区色综合 | 亚洲欧美日韩国产一区二区| 久久成人资源| 亚洲国产成人精品视频 | 日韩视频免费在线| 性8sex亚洲区入口| 国产精品亚洲第一区在线暖暖韩国| 亚洲每日更新| 亚洲在线成人精品| 黄色精品在线看| 宅男精品导航| 黄色日韩精品| 亚洲你懂的在线视频| 欧美三级在线播放| 欧美一区二区三区视频免费| 欧美精品久久久久久久| 亚洲综合精品| 欧美精品久久久久久久免费观看 | 亚洲专区一区| 久久久一二三| 一本在线高清不卡dvd | 久久精品国产亚洲高清剧情介绍| 国产女人aaa级久久久级| 亚洲国产女人aaa毛片在线| 国产精品乱子久久久久| 亚洲在线观看| 欧美高清在线视频| 欧美一区二区三区喷汁尤物| 欧美午夜精品一区二区三区| 亚洲区一区二区三区| 国产欧美日韩综合一区在线观看 | 久久一区二区三区国产精品| 中文av一区特黄| 欧美激情一区二区三区四区|