Android Socket網路程式設計

2021-09-19 17:34:00 字數 2524 閱讀 4414

今天簡單記錄下,android下的socket網路程式設計,socket網路程式設計最為廣泛的為tcp協議和udp協議

伺服器端首先宣告乙個servcersocket物件,並指定埠號,然後呼叫serversocket的accept()方法介面客戶端傳送的資料,accepter()方法在沒有接收到資料時,一直是阻塞狀態,一旦接收到資料了,會通過inputstream 讀取資料流。

客戶端建立socket物件,指定伺服器的ip位址和埠號,通過inputstream讀取資料,獲取伺服器發出的資料,傳送資料的時候,獲取outputstream (outputstream outputstream = socket.getoutputstream() ),最後將要傳送的資料寫到outputstream即可進行tcp協議的socket資料傳輸

服務端(接收資料)流程

1、伺服器先建立乙個datagramsocket物件,並指點監聽的埠

datagramsocket socket =newdatagramsocket (8888);

2、byte資料來接收資料

byte data = new byte[1024];

3、datagrampackage以包的形式裝在byte陣列

datagrampacket packet =newdatagrampacket(data, data.length);

4、使用datagrampacket的receive方法接收傳送方所傳送的資料,是乙個阻塞的方法

packet.receive()

5、 將接收到的資料發轉化為字串

string result =newstring(packet.getdata(), packet.getoffset(), packet.getlength());

客戶端(傳送資料)流程

1、生成datagramsocket物件,引數為埠號

datagramsocket socket =newdatagramsocket (8888);

2、建立乙個inetaddress物件,用於確定server客戶端(資料接收方),引數為ip位址,如我的ip位址為192.168.1.103

inetaddress serveraddress = inetaddress.getbyname("192.168.127.181");

3、需要傳送的資料轉化為byte陣列

string senddata="hello word";

bytedata = senddata.getbytes();

4、生成乙個datagrampacket物件,包含需要傳送的byte陣列,byte陣列長度,已設定ip位址的serveraddress,和服務端一致的埠號(這裡是8888)

datagrampacket packet =newdatagrampacket(data, data.length, serveraddress,8888);

5、傳送資料,呼叫datagramsocket物件的send方法

socket.send(packet);

三、tcp和udp的區別

1、tcp使用的是流的方式傳送,udp使用的是資料報的方式

2、tcp基於連線協議,即客戶端和伺服器交換資料前,必須要建立乙個tcp連線,才能傳輸資料,乙個tcp連線需要進行三次握手,並且提供超時重發,丟棄重發資料,檢驗資料,保證資料從一端傳到另一端。udp使用者資料報協議,只是把應用層資料報傳給ip包,但不能保證資料到達目的,不用建立連線,所以傳輸資料快

6.tcp的三次握手

第一次:建立連線,客戶端傳送建立連線的請求報文給伺服器。

第二次:伺服器收到並返回確認資料報文,再把請求資訊放到乙個請求建立連線報文段中傳送給客戶端。

第三次:客戶端收到並返回確認資料報文, 伺服器和客戶端均進入就緒狀態。

7.tcp四次揮手

第一次:客戶端傳送請求關閉連線fin報文給服務端

第二次:服務端確認並返回乙個ack,關閉receiver通道。客戶端收到ack後關閉send通道

第三次:服務端發出fin給客戶端請求關閉連線

第四次:客戶端收到fin並發回ack等待2個msl單位後關閉receiver通道,服務端收到ack後關閉send通道

Android Socket程式設計

android socket程式設計 建立伺服器的步驟 1.指定埠例項化乙個serversocket。2.呼叫serversocket的accept 以在等待連線期間造成阻塞。3.獲取位於該底層socket的流以進行讀寫操作。4.將資料封裝成流。5.對scoket進行讀寫。6.關閉開啟流。注意 不要...

Android socket程式設計

socket分為兩種 udp和tcp 特點 1.資料要進行打包傳送。2.資料的大包大小有限制 3.面向無連線 4.安全性低不可靠 5.速度快 使用場景 qq群聊 如下 傳送端 public class sendsocket byte bytes line.getbytes 第二步將資料大包,資料報裡...

android Socket 程式設計

socket 通訊 1.udp實現 datagramsocket 客戶端 首先建立乙個datagramsocket物件 datagramsocket socket new datagramsocket 4567 建立乙個inetaddress inetaddress serveraddress in...