根据提供的文件信息,我们可以归纳出以下几个关键的知识点:
### 1. Socket编程基础
- **定义**:Socket(套接字)是网络编程中的一个重要概念,它为应用程序提供了访问网络服务的能力。在C#中,Socket是.NET Framework提供的用于网络通信的类库之一。
- **类型**:Socket支持多种类型,包括流式套接字(`SocketType.Stream`)和数据报套接字(`SocketType.Dgram`)。前者通常用于TCP协议,后者则常用于UDP协议。
### 2. 简单的TCP服务器端实现
- **初始化服务器**:通过创建`TcpListener`实例并绑定到指定端口来启动服务器。
```csharp
private static int port = 1234; // 示例端口号
private static TcpListener TcpListen;
TcpListen = new TcpListener(port);
TcpListen.Start();
```
- **处理客户端连接**:调用`AcceptSocket()`方法等待客户端连接。
```csharp
Socket stRead = TcpListen.AcceptSocket();
EndPoint tempRemoteEP = stRead.RemoteEndPoint;
IPEndPoint tempRemoteIP = (IPEndPoint)tempRemoteEP;
IPHostEntry host = Dns.GetHostByAddress(tempRemoteIP.Address);
string sHostName = host.HostName;
```
- **通信循环**:服务器接收来自客户端的数据,并发送响应。
```csharp
while (bListener)
{
stRead.Send(Encoding.ASCII.GetBytes("Hello"));
Byte[] byRead = new Byte[1024];
int iRead = stRead.ReceiveFrom(byRead, ref tempRemoteEP);
Byte[] byText = new Byte[iRead];
Array.Copy(byRead, 0, byText, 0, iRead);
string line = System.Text.Encoding.Default.GetString(byRead);
}
```
### 3. 简单的TCP客户端实现
- **初始化客户端**:创建`Socket`对象并连接到服务器。
```csharp
string hostIPString = "127.0.0.1";
string hostPortString = "1234";
IPAddress hostIP = IPAddress.Parse(hostIPString);
IPEndPoint dateTimeHost = new IPEndPoint(hostIP, Int32.Parse(hostPortString));
Socket conn = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
conn.Connect(dateTimeHost);
```
- **接收数据**:读取服务器发送的信息。
```csharp
int bytes = 0;
Byte[] RecvBytes = new Byte[256];
bytes = conn.Receive(RecvBytes, RecvBytes.Length, 0);
string RecvString = Encoding.ASCII.GetString(RecvBytes, 0, bytes);
Console.WriteLine(RecvString);
```
### 4. 获取本机IP地址
- **获取本地IP地址列表**:
```csharp
IPAddress[] addressList = Dns.GetHostByName(Dns.GetHostName()).AddressList;
string localIP = null;
for (int i = 0; i < addressList.Length; i++)
{
localIP += addressList[i].ToString() + "\n";
}
Console.WriteLine(localIP);
```
### 5. UDP端对端通信
- **初始化客户端**:创建一个`UdpClient`实例并绑定到特定端口。
```csharp
UdpClient client = new UdpClient(1234); // 示例端口号
IPAddress a = IPAddress.Parse("127.0.0.1");
IPEndPoint receivePoint = new IPEndPoint(a, 1234); // 示例端点
```
- **发送与接收数据**:使用`Send`和`Receive`方法进行数据交换。
```csharp
byte[] data = Encoding.ASCII.GetBytes("Hello UDP!");
client.Send(data, data.Length, receivePoint);
IPEndPoint remoteEp = new IPEndPoint(IPAddress.Any, 1234);
byte[] receivedData = client.Receive(ref remoteEp);
string receivedMessage = Encoding.ASCII.GetString(receivedData);
Console.WriteLine(receivedMessage);
```
以上就是从给定文件中提取的关键知识点。这些知识点覆盖了基本的Socket编程概念、TCP服务器与客户端的实现、获取本机IP地址的方法以及UDP端对端通信的基础实现方式。对于初学者来说,这些内容是学习网络编程的重要基础。