Socket傳輸案例(上) 服務端

2021-07-29 14:55:03 字數 2171 閱讀 5311

這篇部落格呢主要是兩個手機進行 socket 通訊案例的分析

(話說老娘也算寫了幾篇部落格,為什麼訪問量就是少的可憐呢……)

什麼是 tcp/ip 協議,什麼是 socket ???

網路由下往上分為:

物理層–

資料鏈路層–

網路層– ip協議

傳輸層– tcp協議

會話層–

表示層和應用層– http協議

tcp/tp協議簡稱 網路傳輸層,主要用來傳輸資料

為了區別不同的應用程式程序和連線,許多計算機作業系統為應用程式與 tcp/ip 協議互動提供了套接字( socket )介面。應用層可以和傳輸層通過 socket 介面,區分來自不同應用程式程序或網路連線的通訊,實現資料傳輸的併發服務。

這個大神講的挺清楚的:

這兩個功能的實現我都把它封裝到兩個內部類裡面了

下面是這個工程的步驟

1.建立服務端 socket 監聽服務端的鏈結

等待客戶端的鏈結是乙個耗時操作,所以要放到子執行緒

class

serversocketthread

extends

thread

} catch (ioexception e) }}

步驟:

建立乙個serversocket 為它繫結ip位址和埠號,ip位址那一行需要更改

不斷地while迴圈 監聽客戶端的鏈結

注意:建立seversocket的時候ip位址要是服務端的ip位址(我在這裡跌倒過…)

最後是可以列印出以下的log日誌的:

2.接收客戶端的資訊並向客戶端反饋

同樣這裡要開啟乙個子執行緒,因為要不斷地接收客戶端的資訊,所以這個也定義在內部類中了

class

connectthread

extends

thread catch (ioexception e)

}@override

public

void run()

} catch (ioexception e)

}

因為要接收和向客戶端傳送資訊所以必須得到客戶端 socket 物件的輸入輸出流,所以在構造方法中要傳入和服務端結合的客戶端 socket

這樣就可以讀到客戶端發來的資訊系了

那麼怎麼給客戶端乙個反饋呢 ???—-就是向客戶端發出資訊

我把這個也放到了和服務端通訊的內部類中了

//向另一端寫資料的操作

public

void

write(byte buffer) catch (ioexception e)

}

最後是關閉流,只需要關閉 socket 即可

//關閉的方法

public

void

cancle() catch (ioexception e)

}

這個通訊類就寫完了,裡面包含開啟

子執行緒(run方法中)不斷地接收客戶端發來的資訊

向客戶端寫入資訊

關閉流的操作

3.connected(socket socket);方法的實現

在上面第乙個內部類繫結好客戶端後有個鏈結客戶端的方法,這個方法主要是做對客戶端訊息的監聽和反饋,對!就是對上面第二個類的例項化之類的操作

private

void

connected(socket socket)

connectthread = new connectthread(socket);

connectthread.start();

log.e("tag", "connect success");

}

把這個方法放到第乙個繫結客戶端的類裡面就行了

最後最後!! 別忘了 new serversocketthread().start();

原始碼在這裡 :

戳我!! 戳我呀!!!!

謝謝**~

服務端socket程式

socket是一種ipc方法,本文實現乙個簡單的服務端例程,用於了解socket程式框架。socket函式用於建立套接字。bind函式用於分配ip位址和埠號。listen函式將套接字轉為可接收連線狀態。accept函式受理連線請求。如果在沒有連線的情況下呼叫該函式,則不會返回,直到有連線請求為止。c...

IOCP 服務端案例

epoll 和 iocp效能比較每種作業系統 核心級 都會提供特有的i o模型以提高效能。其中linux的epoll bsd的kqueue windows的iocp。它們都是在作業系統級別上提供支援並且完成相關功能。那麼問題來了 到底是epoll優於iocp 還是後者優於前者呢?個人認為至少對於目前...

服務端 客戶端Socket通訊

服務端 using system using system.collections.generic using system.net using system.net.sockets using system.text using system.text.regularexpressions usi...