C# Sockets实现服务器与多个客户端进行通讯

学习一个新的东西,首先要知道其原理,对于Sockets的学习,可先看一下文档:http://blog.csdn.net/hulihui/article/details/3230503#st     点击打开链接

PS: /*附有源码*/

刚开始是写代码实现了一个客户端和服务器的通讯,后来完善代码,实现了多个客户端与服务器端的通讯,由于原理是差不多的,这里就直接介绍多个客户端与服务器进行通讯。

第一部分  窗体设计

1.服务器端

2.客户端

第二部分  代码

1.服务器端:
– 申请一个socket (socketWatch)用来监听的
– 绑定到一个IP地址和一个端口上
– 开启侦听,等待接授客户端的连接
– 当有连接时创建一个用于和连接进来的客户端进行通信的socket(socketConnection)
– 即续监听,等侍下一个客户的连接

 

//服务器端
using System.IO;
using System.Net;
using System.Threading;
using System.Net.Sockets;

namespace SocketsServer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        Socket socketWatch = null;
        Thread threadWatch = null;

        private void startconn_Click(object sender, EventArgs e)
        {
            socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPAddress ipaddress = IPAddress.Parse(localip.Text.Trim());
            IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse(porttext.Text.Trim()));
            socketWatch.Bind(endpoin
  • 7
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面是使用 C#TCPClient 写一个简单的服务器客户端进行通讯的示例: 服务器代码: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; class Program { static void Main() { // 创建一个监听的 Socket 对象 TcpListener listener = new TcpListener(IPAddress.Any, 8888); listener.Start(); Console.WriteLine("服务器已启动,等待客户端连接..."); // 等待客户端连接 TcpClient client = listener.AcceptTcpClient(); Console.WriteLine("客户端已连接!"); // 获取客户端的网络流对象 NetworkStream stream = client.GetStream(); // 接收客户端发送的消息 byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string message = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("收到客户端消息: " + message); // 回复客户端 string response = "Hello, client!"; byte[] responseBytes = Encoding.ASCII.GetBytes(response); stream.Write(responseBytes, 0, responseBytes.Length); Console.WriteLine("已回复客户端消息"); // 关闭连接 client.Close(); listener.Stop(); } } ``` 客户端代码: ```csharp using System; using System.Net.Sockets; using System.Text; class Program { static void Main() { // 创建一个 TCPClient 对象,并连接到服务器 TcpClient client = new TcpClient(); client.Connect("服务器地址", 8888); // 获取网络流对象 NetworkStream stream = client.GetStream(); // 发送消息给服务器 string message = "Hello, server!"; byte[] messageBytes = Encoding.ASCII.GetBytes(message); stream.Write(messageBytes, 0, messageBytes.Length); Console.WriteLine("已发送消息给服务器"); // 接收服务器的响应 byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); string response = Encoding.ASCII.GetString(buffer, 0, bytesRead); Console.WriteLine("收到服务器响应: " + response); // 关闭连接 client.Close(); } } ``` 在上面的代码中,服务器端通过创建一个 TcpListener 对象监听指定的 IP 地址和端口号,然后等待客户端连接。一旦有客户端连接成功,就获取客户端的网络流对象,接收客户端发送的消息,并回复消息给客户端。最后关闭连接。 客户端通过创建一个 TcpClient 对象,并连接到服务器的 IP 地址和端口号。然后获取网络流对象,发送消息给服务器,并接收服务器的响应。最后关闭连接。 需要注意的是,这只是一个简单的示例,实际应用中可能需要更多的错误处理和异常处理。另外,具体使用方式可能因不同的场景和需求而有所不同,这里只是简单展示了一个基本的 TCPClient 的使用示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值