legongju.com
我们一直在努力
2025-01-12 20:43 | 星期天

c# winform的网络通信实现

在C# WinForm中实现网络通信,可以使用.NET框架提供的System.Net.Sockets命名空间中的类。以下是一个简单的TCP客户端和服务器端的示例。

首先,创建一个服务器端应用程序:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;

namespace ServerApp
{
    public partial class Form1 : Form
    {
        private TcpListener _listener;
        private Thread _acceptThread;

        public Form1()
        {
            InitializeComponent();
            StartServer();
        }

        private void StartServer()
        {
            _listener = new TcpListener(IPAddress.Any, 8000);
            _listener.Start();
            _acceptThread = new Thread(AcceptClients);
            _acceptThread.Start();
        }

        private void AcceptClients()
        {
            while (true)
            {
                TcpClient client = _listener.AcceptTcpClient();
                Thread clientThread = new Thread(HandleClient);
                clientThread.Start(client);
            }
        }

        private 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 message = Encoding.UTF8.GetString(buffer, 0, bytesRead);
                Invoke((MethodInvoker)delegate { textBoxMessages.AppendText($"Received: {message}{Environment.NewLine}"); });
            }

            client.Close();
        }
    }
}

接下来,创建一个客户端应用程序:

using System;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;

namespace ClientApp
{
    public partial class Form1 : Form
    {
        private TcpClient _client;
        private NetworkStream _stream;

        public Form1()
        {
            InitializeComponent();
            ConnectToServer();
        }

        private void ConnectToServer()
        {
            _client = new TcpClient("127.0.0.1", 8000);
            _stream = _client.GetStream();
        }

        private void buttonSend_Click(object sender, EventArgs e)
        {
            string message = textBoxMessage.Text;
            byte[] buffer = Encoding.UTF8.GetBytes(message);
            _stream.Write(buffer, 0, buffer.Length);
            textBoxMessage.Clear();
        }
    }
}

这个示例中,服务器端监听8000端口,接受客户端连接,并在收到消息时将其显示在文本框中。客户端连接到服务器后,可以通过点击“发送”按钮发送消息。

请注意,这只是一个简单的示例,实际应用中可能需要考虑更多的错误处理和功能。

未经允许不得转载 » 本文链接:https://www.legongju.com/article/104604.html

相关推荐

  • C#中token是什么及其作用

    C#中token是什么及其作用

    在C#中,token通常指的是一个代表特定字符串或数据的标识符 身份验证和授权:在许多Web应用程序和API中,使用令牌(如JWT,JSON Web Token)进行身份验证和授权。...

  • 在C#中如何对token进行加密

    在C#中如何对token进行加密

    在C#中,对token进行加密通常使用的是对称加密算法,如AES(Advanced Encryption Standard)。以下是一个使用AES加密和解密token的示例:
    首先,需要引入Sy...

  • C#中token传递方式有哪些

    C#中token传递方式有哪些

    在C#中,token传递方式主要有以下几种: 查询字符串(Query String):将token作为URL的一部分,通过查询字符串传递。这种方式简单易用,但不太安全,因为URL可能...

  • C#中token与session的对比

    C#中token与session的对比

    在C#中,Token和Session都是用于身份验证和授权的技术,但它们之间存在一些关键区别。 存储方式: Token:通常以JWT(JSON Web Token)形式存储在客户端,如Web浏...

  • c# winform的数据库操作

    c# winform的数据库操作

    在C# WinForm中,可以使用ADO.NET或Entity Framework等技术进行数据库操作。这里我将介绍如何使用ADO.NET进行数据库操作。 首先,需要添加对System.Data和System...

  • c# winform的多线程处理

    c# winform的多线程处理

    在C# WinForms中,可以使用多线程来执行耗时操作,从而避免UI线程被阻塞,导致应用程序无响应 使用System.Threading.Thread类创建线程: using System;
    usi...

  • c# winform的数据绑定方法

    c# winform的数据绑定方法

    在C# WinForm中,数据绑定是一种将数据源与界面控件关联起来的技术,以便在数据发生变化时自动更新界面。以下是一些常用的数据绑定方法: 使用BindingSource组件...

  • c# winform中的控件使用技巧

    c# winform中的控件使用技巧

    在C# WinForm中,有许多控件使用技巧可以提高开发效率和应用程序的功能。以下是一些建议: 使用锚定(Anchor)属性:锚定属性可以确保控件在窗体大小改变时保持其...