C#编程实现Socket监听功能,监听到连接socket建立一个通信socket, 输出一个完整的案例
时间: 2024-10-09 15:01:36 浏览: 27
在C#中,Socket编程用于网络通信,监听功能通常是服务器端程序的一部分,它允许服务器等待客户端的连接请求。以下是一个简单的示例,展示了如何使用System.Net.Sockets命名空间下的Socket类来创建一个TCP服务器监听,并当接收到连接时创建一个新的Socket进行通信:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
public class Server
{
private static TcpListener listener;
private const int Port = 8080; // 设置监听端口
public static void Main()
{
try
{
// 创建一个TcpListener实例并开始监听
listener = new TcpListener(IPAddress.Any, Port);
listener.Start();
Console.WriteLine($"Server started on port {Port}...");
// 当有新连接时,获取新的Socket并处理连接
while (true)
{
Socket clientSocket = listener.AcceptSocket();
Console.WriteLine($"Accepted connection from: {clientSocket.RemoteEndPoint}");
using (clientSocket)
{
HandleClientConnection(clientSocket);
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Error occurred: {ex.Message}");
}
}
private static void HandleClientConnection(Socket clientSocket)
{
NetworkStream networkStream = clientSocket.GetStream();
byte[] buffer = new byte[1024];
string data = null;
try
{
// 读取数据
int bytesRead = networkStream.Read(buffer, 0, buffer.Length);
if (bytesRead > 0)
{
data = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine($"Received message: {data}");
// 向客户端发送响应,例如:"Hello, Client!"
byte[] response = Encoding.UTF8.GetBytes("Hello, Client!");
networkStream.Write(response, 0, response.Length);
}
}
finally
{
networkStream.Close();
}
}
}
```
在这个例子中,`Main`函数首先创建了一个`TcpListener`,然后进入无限循环等待连接。每当有新连接到来时,通过`listener.AcceptSocket()`获取一个新的Socket对象,并将`HandleClientConnection`方法应用于这个新Socket,实现了客户端的数据接收和回应。
注意,这只是一个基础的示例,实际应用可能需要添加错误处理、线程管理以及更复杂的数据交互逻辑。
阅读全文