国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

在C#中實現Socket端口復用

2019-11-18 16:33:04
字體:
來源:轉載
供稿:網友

一、什么是端口復用:
  因為在winsock的實現中,對于服務器的綁定是可以多重綁定的,在確定多重綁定使用誰的時候,根據一條原則是誰的指定最明確則將包遞交給誰,而且沒有權限之分。這種多重綁定便稱之為端口復用。

二、我們如何實現Socket端口復用:

  其實我們要實現端口復用很簡單,我們只要使用SetSocketOption函數設置Socket選項就可以了。MSDN是這樣解釋的:
Socket 選項確定當前 Socket 的行為。對于具有 Boolean 數據類型的選項,指定非零值可啟用該選項,指定零值可禁用該選項。對于具有整數數據類型的選項,指定適當的值。Socket 選項按照協(xié)議支持程度來分組。

我們來看看這個函數是怎么用的:

public void SetSocketOption (
    SocketOptionLevel optionLevel,
    SocketOptionName optionName,
    int optionValue
)
 

參數
optionLevel
SocketOptionLevel 值之一。

optionName
SocketOptionName 值之一。

optionValue
該選項的值。

以上參數大家可以去看看MSDN。我這里就不多講了。

在這里我們optionLevel 參數傳SocketOptionLevel.Socket;optionName參數傳SocketOptionName.ReuseAddress;optionValue參傳一個非零值,我傳的是True,如果要禁用的話,就傳False。

如:

socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
具體我們看看下面的代碼:

我們首先建立第一個Socket:

        Socket socket1;
        ipEndPoint localEP = new IPEndPoint(IPAddress.Any, 20000);
        socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, PRotocolType.Tcp);
        socket1.Bind(localEP);
再建立第二個Socket:

        Socket socket2
        IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 20000);
        socket2= new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        socket2.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
       //請注意這一句。ReuseAddress選項設置為True將允許將套接字綁定到已在使用中的地址。
        socket2.Bind(localEP);
這樣Socket1和Socket2便綁定在同一個端口上了。

例程源代碼我上傳到我的資源里面大家可以到http://m.survivalescaperooms.com/Files/wzd24/28135640620.rar去下載。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 平和县| 垦利县| 灯塔市| 肇源县| 涿州市| 平远县| 乌鲁木齐县| 镇雄县| 社会| 宁明县| 类乌齐县| 锡林浩特市| 胶州市| 双牌县| 三明市| 陈巴尔虎旗| 右玉县| 监利县| 保靖县| 大姚县| 天柱县| 神池县| 文成县| 朝阳区| 新郑市| 汽车| 昭苏县| 固镇县| 西昌市| 加查县| 将乐县| 莆田市| 平山县| 句容市| 秦皇岛市| 高雄县| 平果县| 元谋县| 额尔古纳市| 伊吾县| 原阳县|