C#客户端

控件

打开链接

Socket socket;
// 打开连接
private void button1_Click(object sender, EventArgs e)
{
    button1.Enabled = false;
    button2.Enabled = true;
    //1 创建socket客户端对象
    socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    // 2 连接指定tcp服务器地址和端口号
    socket.Connect(new IPEndPoint(IPAddress.Parse("192.168.107.73"), 3000));
    // 3 开始接受连接 需要使用异步接受,一直处于接受状态
    StartReceive();
}
public void StartReceive()
{
    Task.Run(() =>
    {
        while (true)
        {
            byte[] buffer = new byte[1024];// 自定义字节数组
            while (true)
            {
                try
                {
                    int length = socket.Receive(buffer);
                    if (length == 0)
                    {
                        // 如果客户端接受的数据长度为0,证明服务器断开了
                        this.richTextBox1.Invoke((Action)(() =>
                        {
                            richTextBox1.AppendText("服务器已经断开");
                        }));
                        break;
                    }
                    else
                    { 
                        // 把接收到的数据转成字符串
                        string value = Encoding.UTF8.GetString(buffer, 0, length);
                        this.richTextBox1.Invoke((Action)(() =>
                        {
                            richTextBox1.AppendText("服务器发来消息:" + value + "\t\n");
                        }));
                    }
                }
                catch (Exception)
                {
                    // 证明客户关闭
                    socket.Close();
                    BeginInvoke(new Action(() =>
                    {
                        button1.Enabled = true;
                        button2.Enabled = false;
                    }));
                    break;
                }
            }
        }
    });
}

断开连接

 // 断开连接
 private void button2_Click(object sender, EventArgs e)
 {
     button1.Enabled = true;
     button2.Enabled = false;
     socket.Shutdown(SocketShutdown.Both);// 关闭双向通信
     socket.Close();// 把客户端关闭
 }

发送信息

 发送消息
private void button3_Click(object sender, EventArgs e)
{
    if (socket != null)
    {
        byte[] bs = Encoding.UTF8.GetBytes("李克兢:"+this.textBox1.Text);
        socket.Send(bs);

    }
}

相关推荐

  1. C++客户服务器TCP创建

    2024-06-12 11:38:05       53 阅读
  2. C#实现简单同步Echo服务客户

    2024-06-12 11:38:05       41 阅读
  3. C++ TCP 服务客户通信的例子

    2024-06-12 11:38:05       35 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-12 11:38:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-12 11:38:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-12 11:38:05       82 阅读
  4. Python语言-面向对象

    2024-06-12 11:38:05       91 阅读

热门阅读

  1. 服务器硬件基础知识

    2024-06-12 11:38:05       26 阅读
  2. Linux基础命令

    2024-06-12 11:38:05       23 阅读
  3. 大数据知识分享:Python中的变量

    2024-06-12 11:38:05       28 阅读
  4. 力扣981.基于时间的键值存储

    2024-06-12 11:38:05       27 阅读
  5. 【rust 第三方库】serde 序列化反序列化框架

    2024-06-12 11:38:05       27 阅读
  6. 分布式系统

    2024-06-12 11:38:05       24 阅读
  7. Python语言在金融领域的应用探索

    2024-06-12 11:38:05       25 阅读
  8. Thymeleaf 2升级到Tymeleaf 3导致Layout不起作用

    2024-06-12 11:38:05       22 阅读
  9. Android单例的几种实现方式

    2024-06-12 11:38:05       29 阅读
  10. idea自动生成单元测试工具

    2024-06-12 11:38:05       30 阅读
  11. linux中sed命令和awk命令如何使用??????

    2024-06-12 11:38:05       29 阅读
  12. Django里的模板变量

    2024-06-12 11:38:05       27 阅读
  13. SQL题——连续问题

    2024-06-12 11:38:05       19 阅读