C# 多网卡 Server Listen

2016-02-19 11:11 106 1 收藏

图老师设计创意栏目是一个分享最好最实用的教程的社区,我们拥有最用心的各种教程,今天就给大家分享C# 多网卡 Server Listen的教程,热爱PS的朋友们快点看过来吧!

【 tulaoshi.com - 编程语言 】

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()); 

来源:http://www.tulaoshi.com/n/20160219/1596717.html

延伸阅读
一、简介 大家都知道,目前比较流行的网络浏览器如Mozilla FireFox以及MyIE2等都具有多页面浏览功能,每打开一个新的页面都自动产生一个新的选项卡页面,页面的关闭也十分简便。这种设计思想使得用户在浏览多个网页时桌面十分简洁,也避免了用户等待单页面显示的苦恼。由于这些浏览器一般都支持操作多种文件格式,所以当浏览本地机...
数组是一种数据结构,其声明方式如下: type[] arrayName; 数组具有以下属性:     1.数组可以是一维、多维或交错的。     2.数值数组元素的默认值设置为零,而引用元素的默认值设置为 null。     3.交错数组是数组的数组,因此,它的元素是引用类型,初始化为 null。     ...
1。2 自动化的内存管理(Automatic memory management) 手动管理内存需要程序员自行分配和释放内存块。这要求程序员有清晰的头脑和对整个运行过程有十分的 把握(好难!)。而c#把程序员从这难以承担的任务中解放出来。在多数的情况下,这种自动内存管理提 高代码的质量和程序员的生产力。并且,不会对程序的意图和执行产生幅面的影响(?...
1。5 数组类型(Array types) 数组可以是一维的,也可是多维的。数祖的成员可以是整齐的,也可以是变长(jagged)的。 一维的数组是最普通,最简单的。这里值给出一个例子,就不多解释了。*/ using System; class Test {  static void Main() {   int[] arr = new int[5];   for (int i = 0; i arr.Length; i++) &n...
1。3 类型 c#支持两种基本的类型:一种是值(value types),一种是引用(reference types)。值包括简单类型 (char、int、和float),枚举(enum)和结构(struct)。引用包括类(class),界面(interface), 代表(delegate)和数组阵列(array)。值与引用不同之处在于:值直接存储它的数据内容;而引用存储对象 的引用。是不是粉费解...

经验教程

772

收藏

94
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部