C#网络编程基础知识一
1.IPAddress类 用于表示一个IP地址。IPAddress默认构造函数
public IPAddress(long address);一般不用
其中Parse()方法最常用于创建IPAddress实例,语法如下
public static IPAddress Parse(string ipString);
IPAddress类还提供了一些只读字段
Any 0.0.0.0
Broadcast 255.255.255.255
Loopback 127.0.0.1
None 255.255.255.255
2.Dns类
静态类 提供域名解析功能
常用方法
GetHostEntry 将主机名或IP地址解析为IPHostEntry实例
GetHostName 获取本地计算机的主机名
Resolve 将DNS主机名或IP地址解析为IPHostEntry实例
1 //参数 www.163.com 2 3 if (args.Length != 1) 4 5 { 6 7 Console.WriteLine("Parameter error!"); 8 9 return; 10 11 } 12 13 14 15 //获得主机名 16 17 IPHostEntry results = Dns.GetHostEntry(args[0]); 18 19 Console.WriteLine("Host name:" + results.HostName); 20 21 22 23 24 25 //使用循环显示别名列表 26 27 foreach(string alias in results.Aliases) 28 29 { 30 31 Console.WriteLine("Alias:" + alias); 32 33 } 34 35 36 37 //遍历地址列表 38 39 foreach(IPAddress address in results.AddressList) 40 41 { 42 43 Console.WriteLine("Address:" + address); 44 45 }
结果:
Host name:1st.xdwscache.ourwebpic.com
Address:218.77.2.32
Address:218.76.105.75
Address:218.75.225.188
请按任意键继续. . .
3.IPEndPoint类 将网络端点表示为IP地址和端口号
构造函数
1 public IPEndPoint(long address,int port); 2 3 public IPEndPoint(IPAddress address,int port); 4 5
示例:
1 IPAddress newAddress = IPAddress.Parse("192.168.10.12"); 2 3 //创建IPEndPoint实例 4 5 IPEndPoint ex = new IPEndPoint(newAddress, 8000); 6 7 8 9 Console.WriteLine("The IPEndPoint is:{0}",ex.ToString()); 10 11 Console.WriteLine("The AddressFamily is:{0}", ex.AddressFamily); 12 13 Console.WriteLine("The Address is:" + ex.Address + ",and the port is:" + ex.Port); 14 15 Console.WriteLine("The Max Port Number is:{0}", IPEndPoint.MaxPort); 16 17 Console.WriteLine("The Min Port Number is:{0}", IPEndPoint.MinPort); 18 19 20 21 //用Port属性单独改变IPEndPoint对象的端口值 22 23 ex.Port = 80; 24 25 Console.WriteLine(ex.ToString()); 26 27
4.套接字
多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议商品传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字的接口,区分不同应用程序进程间的通信和连接
套接字原型
1 System.Net.Sockets.Socket 2 3 public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);
套接字与协议对应关系
套接字类型 |
协议对应关系 |
Dgram(UDP) |
无连接通信 |
Stream(TCP) |
面向连接的通信 |
Raw(ICMP) |
ICMP协议 |
Raw(Raw) |
简单IP包 |
//使用套接字传输数据
服务器端:
1 //1.创建一个套接字 2 //2.将所创建的套接字与本地的IPEndPoint绑定 3 //3.设置套接字的模式为侦听模式 4 //4.在套接字上接受接入的连接 5 6 //设置IP地址和端口 7 IPEndPoint newipep = new IPEndPoint(IPAddress.Any, 8030); 8 //设置套接字 9 Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 10 //绑定套接字 11 newSocket.Listen(10); 12 Socket client = newSocket.Accept();
客户端:
1 //1.打开套接字 2 //2.连接远程主机 3 //3.发送/接收数据 4 //4.关闭套接字 5 6 //设置IP地址和端口 7 IPEndPoint newipep = new IPEndPoint(IPAddress.Parse("192.168.1.1"), 8050); 8 //创建Socket对象 9 Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);