网络编程基础问题
来源:互联网 发布:数据网络开关 编辑:程序博客网 时间:2024/05/22 17:01
(1) UDP 接收、发送数据
1、发送数据
(1)publicint 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);
(3)publicint 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)。该方法将TTL与UdpClient一起添加到多路广播组。
UdpClientudpClient =new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse(“224.100.0.1”));
多路广播地址的范围从 224.0.0.1到239.255.255.254。如果指定的地址在此范围之外,或者所请求的路由器不支持多路广播,则UdpClient将引发SocketException异常。
(2)JoinMulticastGroup(IPAddressmulticastAddr,int timeToLive).该方法将TTL与UdpClient一起添加到多路广播组。
UdpClientudpClient=new UdpClient(8001);
udpClient.JoinMulticastGroup(IPAddress.Parse(“224.100.0.1”),50);其中,50为TTL值。
(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 字节出结束。
- 网络编程基础问题
- iOS基础之网络编程问题集
- 网络编程:网络基础
- 网络编程基础
- 网络编程基础
- c#网络编程基础
- 网络编程基础(1)
- 网络编程基础(2)
- 网络编程基础(3)
- 网络编程知识基础
- VC网络编程基础
- linux网络编程基础
- 网络编程基础篇
- VC网络编程基础
- VC网络编程基础
- VC网络编程基础
- Linux 网络编程基础
- Socket网络编程基础
- 重定向redirect与转发forward的区别
- 项目开发计划——机房收费系统
- 设计模式
- 学习笔记之PHP文件锁(flock)
- 会话的两大技术Session和Cookie的区别
- 网络编程基础问题
- 庞峰Opencv学习(四)--颜色空间转换
- java的面向对象
- 动态规划的优化
- 软件工程——需求分析
- 全排列之字典序法
- Google File System架构
- 软件需求说明书——机房收费系统
- python中的三个内置函数map,reduce,filter