C# 多网卡 Server Listen

原创 2004年05月23日 16:26:00

时间: 2004/5/20
作者: Robert
参考: MSDN
电邮: zsc771120@yahoo.com.cn
关键词: TcpListener IPEndPoint IPAddress IPAddress.Any
目的: 帮助受监听多网卡IP地址困扰的朋友<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

VCBCB中做一个Server的监听程序,只需要指定端口,然后监听(Listen)就行了.C#找不到这个函数了,慢慢看MSDN,怎么需要指定IPPort才能监听,那么多网卡的机器应该怎么席程序呢?下面的程序可以解释怎么去做.

 

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

}

多网卡的广播

1)多网卡广播时,每个网卡都绑定一次,广播一次
  • ljh081231
  • ljh081231
  • 2014年04月07日 20:45
  • 2008

Linux TCP server系列(4)-浅谈listen与大并发TCP连接

背景:    服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接。如果这时候又大量的用户并发发起connect...
  • SUKHOI27SMK
  • SUKHOI27SMK
  • 2013年09月22日 17:07
  • 5533

UDP多网卡广播问题解决方案

楼主最近遇到了一个多网卡广播的问题,问题描述如下: 服务器上安装了多个网卡,当程序广播到255.255.255.255这个地址上时,只有主网卡网段上的机子可以收到UDP数据,其他网段并不能收到数据. ...
  • wmx313880747
  • wmx313880747
  • 2015年04月08日 16:15
  • 765

高性能TCPServer

最近两天正在学习TCPServer,在网上看到比较好的两篇文章,z
  • jjp837661103
  • jjp837661103
  • 2014年05月04日 09:24
  • 7150

C#获得本机物理网卡的MAC地址(备忘)

因项目需求,需要自动收集网卡的相关信息,在网上找了一大堆,但是完全符合要求的不多,有些看似符合要求,但是运行出来的结果,和真实情况有所偏差,所以根据真实环境,在网上搜来的代码上进行了一些修改,不一定完...
  • yw1688
  • yw1688
  • 2016年09月01日 16:33
  • 1122

socket listen函数详解及TCP链接过程简要说明

int listen(int fd, int backlog); socket系统调用listen只被tcp 服务器使用,他做两件事: 1. 将未链接的套接口转换为被动套接口,指示内核接受...
  • sfdazsdf
  • sfdazsdf
  • 2015年10月17日 14:47
  • 2348

nginx模块开发—HTTP初始化之listen

1、知识百科 nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解。与网络有关的配置命令主要有两个:listen和sever_nam...
  • midion9
  • midion9
  • 2015年11月19日 16:51
  • 421

Linux TCP server系列(4)-浅谈listen与大并发TCP连接

背景:    服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接。如果这时候又大量的用户并发发起connect...
  • newyoung518
  • newyoung518
  • 2013年06月05日 22:47
  • 1372

linux多网卡多ip多网关同时在线的设置方法20130509

linux多网卡多ip多网关同时在线的设置方法20130509 因之前对linux的策略路由不了解,且受linux只有一条默认路由的深刻影响,导致在多线多ip的情况下,采用手工修改默认路由的方式同时...
  • xuyaqun
  • xuyaqun
  • 2013年05月15日 17:14
  • 5328

Nginx入门(一)

nginx的基础知识
  • Tracyclock
  • Tracyclock
  • 2017年01月09日 14:41
  • 126
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# 多网卡 Server Listen
举报原因:
原因补充:

(最多只允许输入30个字)