C# 多網卡 Server Listen
2024-07-21 02:27:41
供稿:網友
vc和bcb中做一個server的監聽程序,只需要指定端口,然后監聽(listen)就行了.在c#找不到這個函數了,慢慢看msdn,怎么需要指定ip和port才能監聽,那么多網卡的機器應該怎么席程序呢?下面的程序可以解釋怎么去做.
tcplistener 類別會提供簡易的方法,用以在封鎖的同步模式中聆聽 (listen) 和接受輸入的連接要求。您可以使用 tcpclient 或 socket 來連接 tcplistener 。使用 ipendpoint 、本機 ip 地址和連接端口編號,或者就只用連接埠編號來建立 tcplistener 。如果您想要基礎服務供貨商為您指派那些值,請指定 any 給本機 ip 地址和 0 給本機連接埠編號。如果選擇要這樣做,您可以使用 localendpoint 來識別指派的信息。
使用 start 方法開始聆聽輸入的連接要求。 start 將會讓輸入的連接進入隊列等候,一直到不是呼叫了 stop 方法,就是已經將 maxconnections 排入隊列為止。使用 acceptsocket 或 accepttcpclient ,從輸入的連接要求隊列取出連接。這兩個方法將會封鎖。如果想要避免封鎖,您可以先使用 pending 方法來判斷連接要求是否可在隊列中取得。
呼叫 stop 方法關閉 tcplistener 。
這個建構函式可以讓您指定要聆聽輸入連接嘗試的本機 ip 地址和連接端口編號。使用這個建構函式之前,您必須使用所需的本機 ip 地址和連接端口編號來建立 ipendpoint 。將這個 ipendpoint 當作 localep 參數傳遞給建構函式。
如果您不在乎要指派哪個本機地址,則可使用 ipaddress.any 做為地址參數以建立 ipendpoint ,而基礎服務供貨商將會指派最適當的網絡地址。如果您有多個網絡接口,這可能有助于簡化應用程序。如果您不在乎要使用哪個本機連接埠,則可以指定 0 做為連接埠編號來建立 ipendpoint 。在這種情況下,服務供貨商將會指派介于 1024 和 5000 之間的可用連接埠編號。如果您使用這個途徑,則可以藉由使用 localendpoint 屬性來探索什么局域網絡地址和連接端口編號已經被指派。
呼叫 start 方法以開始聆聽輸入的連接嘗試。
ipendpoint 類別包含主機以及應用程序連接到主機服務所需的通訊端口信息。藉由結合主機的 ip 地址和服務的通訊端口編號, ipendpoint 類別形成連接至服務的連接點 (connection point)。
[c#]
//creates an instance of the tcplistener class by providing a local endpoint.
ipaddress ipaddress = dns.resolve(dns.gethostname()).addresslist[0];
ipendpoint iplocalendpoint = new ipendpoint(ipaddress, 11000);
try{
tcplistener tcplistener = new tcplistener(iplocalendpoint);
}
catch ( exception e ){
console.writeline( e.tostring());
}