C#socket网络编程-一个服务器与多个客户端通信
时间: 2023-08-08 16:07:15 浏览: 296
C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)
在C#中进行socket网络编程可以实现一个服务器与多个客户端的通信,以下是一个简单的示例:
服务器端代码:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace Server
{
class Program
{
static void Main(string[] args)
{
// 创建一个TCP/IP socket对象
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 绑定IP地址和端口号
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 8888);
listener.Bind(localEndPoint);
// 开始监听连接请求
listener.Listen(10);
Console.WriteLine("等待客户端连接...");
while (true)
{
// 接受来自客户端的连接请求
Socket handler = listener.Accept();
// 接收客户端发送的数据
byte[] buffer = new byte[1024];
int bytesRead = handler.Receive(buffer);
string data = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine($"接收到客户端数据:{data}");
// 向客户端发送响应数据
byte[] responseBytes = Encoding.ASCII.GetBytes("收到你的消息了!");
handler.Send(responseBytes);
// 关闭连接
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
}
}
```
客户端代码:
```csharp
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace Client
{
class Program
{
static void Main(string[] args)
{
// 创建一个TCP/IP socket对象
Socket sender = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
// 连接服务器
IPAddress ipAddress = IPAddress.Parse("127.0.0.1");
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 8888);
sender.Connect(remoteEP);
Console.WriteLine("连接服务器成功!");
// 向服务器发送数据
string message = "Hello, Server!";
byte[] bytes = Encoding.ASCII.GetBytes(message);
sender.Send(bytes);
// 接收服务器的响应数据
byte[] buffer = new byte[1024];
int bytesRead = sender.Receive(buffer);
string response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine($"接收到服务器响应:{response}");
// 关闭连接
sender.Shutdown(SocketShutdown.Both);
sender.Close();
Console.ReadKey();
}
}
}
```
以上代码可以实现一个简单的服务器与客户端通信,如果想实现多个客户端同时连接服务器,可以使用多线程或异步编程来处理。
阅读全文