C#客户端

控件

打开链接

cs 复制代码
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;
                }
            }
        }
    });
}

断开连接

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

发送信息

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

    }
}
相关推荐
SuperEugene13 分钟前
Axios + Vue 错误处理规范:中后台项目实战,统一捕获系统 / 业务 / 接口异常|API 与异步请求规范篇
前端·javascript·vue.js·前端框架·axios
行走的陀螺仪14 分钟前
手写 Vue3 极简 i18n
前端·javascript·vue.js·国际化·i18n
春日见22 分钟前
云服务器开发与SSH
运维·服务器·人工智能·windows·git·自动驾驶·ssh
羽沢3122 分钟前
一篇简单的STOMP教程QAQ
前端·javascript·stomp
code_Bo22 分钟前
使用AI完成Swagger接口类型在前端自动生成的工具
前端·后端·架构
加个鸡腿儿1 小时前
从"包裹器"到"确认按钮"——一个组件的三次重构
前端·vue.js·设计模式
子兮曰1 小时前
AI写代码坑了90%程序员!这5个致命bug,上线就炸(附避坑清单)
前端·javascript·后端
猪八宅百炼成仙1 小时前
PanelSplitter 组件:前端左右布局宽度调整的实用解决方案
前端
锋利的绵羊1 小时前
【解决方案】微信浏览器跳出到浏览器打开、跳转到app,安卓&ios
前端
终端鹿1 小时前
Vue3 核心 API 补充解析:toRef / toRefs / unref / isRef
前端·javascript·vue.js