C#中简单Socket编程
引言
Socket编程是网络编程的基础,通过Socket编程,可以实现计算机之间的通信。本文将介绍如何在C#中进行简单的Socket编程,包括服务器端和客户端的实现。示例将展示TCP连接的基本操作,适用于理解网络通信的基本概念和实现方法。
准备工作
确保您的开发环境中安装了.NET SDK,可以通过Visual Studio或其他C#开发工具进行编码和调试。
创建Socket服务器
服务器需要监听特定端口,接受客户端连接,并进行数据收发。以下是一个简单的C# Socket服务器示例:
服务器代码
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
class Program
{
static void Main(string[] args)
{
// 设置服务器IP和端口
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
int port = 11000;
// 创建一个TcpListener对象
TcpListener listener = new TcpListener(ipAddress, port);
// 开始监听客户端请求
listener.Start();
Console.WriteLine("服务器已启动,等待客户端连接...");
while (true)
{
// 接受客户端连接
TcpClient client = listener.AcceptTcpClient();
Console.WriteLine("客户端已连接!");
// 启动一个新线程处理客户端请求
Thread clientThread = new Thread(HandleClient);
clientThread.Start(client);
}
}
static void HandleClient(object obj)
{
TcpClient client = (TcpClient)obj;
// 获取网络流
NetworkStream stream = client.GetStream();
byte[] buffer = new byte[1024];
int bytesRead;
// 读取客户端发送的数据
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) != 0)
{
string data = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到客户端消息: " + data);
// 回应客户端消息
byte[] response = Encoding.UTF8.GetBytes("服务器已收到消息");
stream.Write(response, 0, response.Length);
}
// 关闭连接
client.Close();
}
}
创建Socket客户端
客户端需要连接服务器并发送数据。以下是一个简单的C# Socket客户端示例:
客户端代码
using System;
using System.Net.Sockets;
using System.Text;
class Program
{
static void Main(string[] args)
{
// 设置服务器IP和端口
string server = "127.0.0.1";
int port = 11000;
// 创建一个TcpClient对象
TcpClient client = new TcpClient(server, port);
// 获取网络流
NetworkStream stream = client.GetStream();
// 发送消息到服务器
string message = "Hello, Server!";
byte[] data = Encoding.UTF8.GetBytes(message);
stream.Write(data, 0, data.Length);
Console.WriteLine("发送消息到服务器: " + message);
// 接收服务器回应消息
byte[] buffer = new byte[1024];
int bytesRead = stream.Read(buffer, 0, buffer.Length);
string response = Encoding.UTF8.GetString(buffer, 0, bytesRead);
Console.WriteLine("收到服务器回应: " + response);
// 关闭连接
client.Close();
}
}
运行示例
- 先运行服务器代码。服务器将开始监听指定的IP和端口,等待客户端连接。
- 然后运行客户端代码。客户端将连接到服务器并发送消息。
- 服务器接收到消息后,将回应客户端,并在控制台上显示接收到的消息。
- 客户端接收到服务器的回应消息,并在控制台上显示。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!