TCPClient:
主要方法:
Connect(IPEndPoint),Connect(IPAddress,port),Connect(string dnsName,port)
构造函数的参数和Connect的一样,但是参数指定本定地址。
NetworkStream GetStream();获得向网络发送和接收数据的网络流,使用其 Write 和 Read 方法来发送和接收数据,Write和Read都为阻塞方法。
TcpListener:
主要方法:
构造函数:TcpListener(IPEndPoint),TcpListener(IPAddress,port)
Start(),Stop():侦听请求。如果有,将对请求进行排队并继续侦听直到调用 Stop 方法。如果排队的连接数达到最大值后接收到连接请求,将引发 SocketException。
AcceptTcpClient(),AcceptSocket():从传入连接队列移除连接。AcceptTcpClient 方法从队列移除连接,返回TcpClient。AcceptSocket 方法返回Socket。如果仅需要基本阻塞同步 I/O,可使用 AcceptTcpClient。要进行更加细化的行为控制,使用 AcceptSocket。
Pending():确定列队里是否有连接可用。
UDPClient:
主要方法:
Connect(IPEndPoint),Connect(IPAddress,port),Connect(string dnsName,port):使用指定的网络终结点建立默认远程主机
如果调用 Connect 方法,则从指定的默认地址以外的地址到达的任何数据报都将被丢弃。不能使用此方法将默认远程主机设置为广播地址,除非采用如下方法:从 UdpClient 继承,使用客户端方法获取基础 Socket,并将套接字选项设置为 SocketOptionName.Broadcast。
但是,如果在调用 Send 方法时指定了 IPAddress.Broadcast,则可以将数据广播到默认的广播地址:255.255.255.255。如果应用程序要求对广播地址有更好的控制,也可以恢复为使用 Socket 类。
构造函数的参数和Connect的一样,但是参数指定本定地址。
JoinMulticastGroup(IPAddress multicastAddr):将 UdpClient 添加到多路广播组。
DropMulticastGroup():退出多路广播组
public byte[] Receive(ref IPEndPoint remoteEP);返回已由远程主机发送的 UDP 数据文报
Send:将 UDP 数据文报发送到远程主机
关于多路广播:
JoinMulticastGroup 方法将 UdpClient 预订到使用指定 IPAddress 的多路广播组中。调用该方法后,基础 Socket 将 Internet 组管理协议 (IGMP) 包发送到路由器,请求成为多路广播组成员。多路广播地址的范围从 224.0.0.0 到 239.255.255.255。如果在此范围之外,或路由器不支持多路广播,则引发 SocketException。 UdpClient 成为多路广播组的成员,就能够接收发送到指定 IPAddress 的多路广播数据报了,但是不需要属于多路广播组,就可以将数据报发送到多路广播 IP 地址。
必须使用多路广播端口号创建 UdpClient,否则将无法接收多路广播数据报。不要在调用 JoinMulticastGroup 方法之前调用 Connect 方法,否则 Receive 方法将不起作用--见UDPClient的connect方法。???对否?
加入多路广播组以前,请确保该UDP套接字已经绑定到端口或结束点上。为此需调用一个接收端口或结束点作为参数的构造函数。
==========
IP 版本 4 地址使用 32 位指定网络地址。对于使用 255.255.255.0 网络掩码的 C 类地址,这些位被分为四个八位字节。当以十进制数表示时,这四个八位字节构成熟悉的以点分隔的四部分表示法,如 192.168.100.2。前两个八位字节(此示例中为 192.168)构成网络号;第三个八位字节 (100) 定义子网;最后一个八位字节 (2) 是主机标识符。
将 IP 地址的所有位均设置为 1(即 255.255.255.255)可构成有限的广播地址。将 UDP 数据文报发送到此地址可将消息传递到该广播网络上的任何主机。由于路由器从不转发发送到此地址的消息,因此只有已连接的网络上的主机才可看到这些广播。
通过将部分地址的所有位全都设置为 1,可以将广播定向到特定的网络部分。例如,若要将广播发送到以 192.168 打头的 IP 地址标识的网络上的所有主机,请将地址的子网和主机部分全都设置为 1,如 192.168.255.255。若要将广播限制在单个子网,则只将主机部分设置全都为 1,如 192.168.100.255。
UdpClient 类可向任何网络广播地址广播,但它无法侦听发送到网络的广播。必须使用 Socket 类才能侦听网络广播