android學習筆記--socket程式設計
inonoclas
十三、socket程式設計
socket基本通訊模型
使用基於tcp協議的socket
使用基於udp協議的socket
socket套接字 用於描述ip位址和埠是乙個通訊鏈的控制代碼 以你公用程式通過「套接字」向網路發出請求或者應答網路請求
tcp協議:要求接受方接收到資料給乙個回應;沒有傳送資料報資料大小的限制;速度慢
outputsteam輸出流、inputstream輸入流
tcp協議:
在伺服器socket中設定
呼叫serversocket的accept方法接收客戶端所傳送的請求:
socket socket = serversocket.accetp()(客戶端沒有傳送資料,就一直阻塞;如接收到資料,則返回socket物件)
從socket當中得到inputstream物件
inputstream inputstream = socket.getinputstream();
利用 buffer 讀取inputstream中客戶端傳送的資料
byte buffer = new byte[1024*4];
while((temp = inputstream.read(buffer)) != -1)
關掉serversocket:serversoket.close();
客戶端socket設定
new socket("伺服器ip位址",埠號)
用inputstream讀取硬碟檔案、從socket中得到inputstream inputstream = new fileinputstream("硬碟檔案完整位址");
outputstream outputstream = socket.getoutputstream();
//講『inputstream當中取出資料,寫入outputstream中
while((int temp = inputstream.read(buffer))!= -1)
udp協議:
伺服器設定
byte data = new byte[1024]
建立乙個空的datagrampacket物件:new datagrampacket(data,data.length)
使用receive方法接收客戶端所傳送的資料
socket.receive(packet)(客戶端沒有傳送資料,就一直阻塞)將接受的資料放到data中
string result = new string(packet.getdata(),packet.getoffset(),packet.getlenght());
客戶端設定
建立乙個datagramsocket物件 socket
inetaddress serveraddress = inetaddress.getbyname("伺服器ip位址");
string str = "hello";
byte data = str.getbytes();
datagrampacket packet = new datagrampacket(data,data.length,serveraddress,4567)
呼叫socket物件的sent方法傳送資料
socket.sent(packet)
注:new string(packet.getdata(),packet.getoffset(),packet.getlenght());
接收packet位元組陣列,設定位元組量開始位址,設定接收位元組的總長度
sock程式設計學習2
面向連線的服務sock stream sock seqpacket,在開始交換資料之前,需要在請求服務的程序套接字和提供服務的程序套接字之間建立乙個連線 客戶端通過呼叫connect.int connect int sockfd const struct addr,socklen t len 在co...
Android學習筆記
android系列 第一期 第一課 android初步認識 今天我們來初步了解一下安卓吧。首先,說到android,大家都非常熟悉了,相信都用過android手機吧,android給我們的第一印象應該是它的logo 乙個小機械人,如下圖1所示。圖1 android logo 嗯,好,認識了andro...
Android學習筆記
1 android四大天王 1 activity 介面元件,使用者介面,整個應用程式的門面 2 intent 用於應用之間傳輸資料 3 service 承擔資料處理的工作 4 content provider 為應用提供資料 android檔案目錄 1 assets 2 res drawable 放...