【Socket與HTTP連接的區(qū)別】
?1. HTTP連接使用的是“請(qǐng)求—響應(yīng)”的方式,不僅在請(qǐng)求時(shí)需要先建立連接,而且需要客戶(hù)端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器端才能回復(fù)數(shù)據(jù)。
2. socket是可以監(jiān)聽(tīng),因此Socket連接一旦建立,通信雙方即可開(kāi)始相互發(fā)送數(shù)據(jù)內(nèi)容,直到雙方連接斷開(kāi)。保持客戶(hù)端與服務(wù)器數(shù)據(jù)的實(shí)時(shí)與同步。
參考:?Android客戶(hù)端與服務(wù)器交互方式-小結(jié)
解釋一下(舉個(gè)例子):
Http連接相當(dāng)于發(fā)送郵件,發(fā)送方先給接收方發(fā)送一條消息,接收方接收到消息后,再進(jìn)行回復(fù)
socket連接相當(dāng)于打電話,只要電話一接通,二者就可以相互發(fā)送消息,直到電話掛斷
Socket的使用
1. 添加internet權(quán)限
2. socket是網(wǎng)絡(luò)通信,是耗時(shí)操作,所以一定要開(kāi)辟一個(gè)新的線程
3. 在Activity中創(chuàng)建socket對(duì)象,并且進(jìn)行連接操作
(對(duì)button1進(jìn)行監(jiān)聽(tīng),下面代碼寫(xiě)在onclick里面)

ip地址為自己的ip地址,端口號(hào)是自己的端口號(hào)
4. 對(duì)服務(wù)器發(fā)送消息
(對(duì)button2進(jìn)行監(jiān)聽(tīng),下面代碼寫(xiě)在onclick里面)

使用DataOutputSteam類(lèi),將消息發(fā)送到服務(wù)器
5. 服務(wù)器進(jìn)行接收
這里使用的是eclipse建立的一個(gè)java文件進(jìn)行接收

創(chuàng)建ServerSocket對(duì)象,等待客戶(hù)端連接

6. 運(yùn)行java文件,再運(yùn)行Android文件
點(diǎn)擊Android文件中的button1和button2,Server端控制臺(tái)打印出:

這樣就實(shí)現(xiàn)了Android端向server端發(fā)送消息的功能