网络编程基础问题

来源:互联网 发布:数据网络开关 编辑:程序博客网 时间:2024/05/22 17:01

      

(1) UDP 接收、发送数据

1发送数据

1publicint Send(byte[] data,int length,IPEndPoint iep)。该方法将UDP数据报发送到位于指定远程端点的主机。

UdpClientudpClient=new UdpClient();

//下面一句仅为了方便本机调试,实际使用时应将IP和端口号改为远程主机的IP和端口号

IPAddressremoteIPAdress =Dns.GetHostAddresses(Dns.GetHostName())[0];

IPEndPointremoteIPEndPoint=new IPEndPoint(remoteIPAdress,51666); Byte[]sendBytes=Encoding.Unicode.GetBytes(“你好!”);udpClient.Send(sendBytes, sendBytes.Length,remoteIPEndPoint);

(2)publicint Send(byte[] data,int length,string hostname,int port).该方法将UDP数据报发送到指定的远程主机上的指定端口。

UdpClientudpClient=new udpClient(); byte[] sendBytes=Encoding.Unicode.GetBytes(“你好”);udaClient.Send(sendBytes,sendBytes.Length,www.abcd.com,51666);

3publicint Send(byte[] data,int length).该方法假定已经通过Connect方法指定了默认远程主机,因此,只需要用Send方法指定发送的数据和希望发送的字节数即可,返回值为成功发送的字节数。

UdpClientudpClient=new UdpClient(www.abcd.com,51666);

          byte[]sendByte=Encoding.Unicode.GetBytes(“你好!”);          udpClient.Send(sendBytes,sendBytes.Length);

2接收数据

UdpClient 对象的 Receive 方法用于获取从远程主机发送的UDP数据报。

publicbyte[] Receive(ref IPEndPoint remoteEP)

该方法只有一个 IPEndPoint参数,表示发送方的IP地址和端口号。返回值为接收到的字节数组。利用此方法即可以接收指定远程主机的数据报,也可以接收所有远程主机的数据报。如果希望接收所有远程主机发来的数据报,可以用下面的代码创建IPEndPoint对象:

 

 

UdpClientudpClient=new UdpClient(Dns.GetHostAddress(Dns.GetHostName())[0],18001);IPEndPoint remoteIpEndPoint=new IPEndPoint(IPAddress.Any,0); try

{

Byte[]receiveBytes=udpClient.Receive(ref remoteIpEndPoint); stringreceiveData=Encoding.Unicode.GetString(receiveBytes);

Console.WriteLine(“接收到信息:”+receiveData);

}

catch(Exceptione)

{

MessageBox.Show(e.ToString());

(2) 加入和退出组播

(1)加入多路广播组

         UdpClient 类提供了JoinMulticastGroup方法,用于将UdpClient加入到使用指定

IPAdress 的多路广播组成员。一旦成为组播组成员,就可以接收该组播组的数据报。

JoinMulticastGroup(IPAddressmulticastAddr,int timeToLive)。该方法将TTLUdpClient一起添加到多路广播组。

UdpClientudpClient =new UdpClient(8001);

udpClient.JoinMulticastGroup(IPAddress.Parse(“224.100.0.1”));

多路广播地址的范围从 224.0.0.1239.255.255.254。如果指定的地址在此范围之外,或者所请求的路由器不支持多路广播,则UdpClient将引发SocketException异常。

2JoinMulticastGroup(IPAddressmulticastAddr,int timeToLive).该方法将TTLUdpClient一起添加到多路广播组。

 

UdpClientudpClient=new UdpClient(8001);

udpClient.JoinMulticastGroup(IPAddress.Parse(“224.100.0.1”),50);其中,50TTL值。


(3) 下载指定范围数据

       HttpWebRequest 提供了一个AddRange方法,该方法的常用格式为

AddRange(StartPosition,EndPosition)

通过这个方法,即可指定下载的文件数据范围。try

{

HttpWebRequestrequest=(HttpWebRequest)HttpWebRequest.Create(SourceUri);

//接收的范围(起始位置,终止位置)

Request.AddRange(5001,10000);

//获得接收流

Streamstream =request.GetResponse().GetResponseStream(); byte[] receiveBytes=newbyte[512]; int readBytes=stream.Read(receiveBytes,0,receiveBytes.Length);while(readBytes>0)

{

fs.Write(receiveBytes,0,readBytes);

readBytes=stream.Read(receiveBytes,0,receiveBytes.Length);

}

stream.Close();

 }

catch(Exceptionex)

{

MessageBox.Show(“接收出错:”+ex.Message);

}

这段代码中的 requset.AddRange(5001,10000)表示下载的范围为从5001字节开始到

10000 字节出结束。

0 0