日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

[导入]C#中实现Socket端口复用

發(fā)布時(shí)間:2023/11/27 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [导入]C#中实现Socket端口复用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是端口復(fù)用:
  因?yàn)樵趙insock的實(shí)現(xiàn)中,對(duì)于服務(wù)器的綁定是可以多重綁定的,在確定多重綁定使用誰(shuí)的時(shí)候,根據(jù)一條原則是誰(shuí)的指定最明確則將包遞交給誰(shuí),而且沒有權(quán)限之分。這種多重綁定便稱之為端口復(fù)用。

二、我們?nèi)绾螌?shí)現(xiàn)Socket端口復(fù)用:

  其實(shí)我們要實(shí)現(xiàn)端口復(fù)用很簡(jiǎn)單,我們只要使用SetSocketOption函數(shù)設(shè)置Socket選項(xiàng)就可以了。MSDN是這樣解釋的:
Socket 選項(xiàng)確定當(dāng)前 Socket 的行為。對(duì)于具有 Boolean 數(shù)據(jù)類型的選項(xiàng),指定非零值可啟用該選項(xiàng),指定零值可禁用該選項(xiàng)。對(duì)于具有整數(shù)數(shù)據(jù)類型的選項(xiàng),指定適當(dāng)?shù)闹?。Socket 選項(xiàng)按照協(xié)議支持程度來(lái)分組。

我們來(lái)看看這個(gè)函數(shù)是怎么用的:

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

參數(shù)
optionLevel
SocketOptionLevel 值之一。

optionName
SocketOptionName 值之一。

optionValue
該選項(xiàng)的值。

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

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

如:

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

我們首先建立第一個(gè)Socket:

??????? Socket socket1;
??????? IPEndPoint localEP = new IPEndPoint(IPAddress.Any, 20000);
??????? socket1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
??????? socket1.Bind(localEP);
再建立第二個(gè)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);
?????? //請(qǐng)注意這一句。ReuseAddress選項(xiàng)設(shè)置為True將允許將套接字綁定到已在使用中的
地址。
??????? socket2.Bind(localEP);
這樣Socket1和Socket2便綁定在同一個(gè)端口上了。


文章來(lái)源:http://meymz.blog.163.com/blog/static/38120921200771292837966

轉(zhuǎn)載于:https://www.cnblogs.com/raindust/archive/2007/08/13/854231.html

總結(jié)

以上是生活随笔為你收集整理的[导入]C#中实现Socket端口复用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。