zoukankan      html  css  js  c++  java
  • socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

    1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样转化

    直接上程序

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            //定义委托
            public delegate void ShowMessageHandel(string msg);
            //向控件添加显示信息
            public void showMsg(string msg)
            {
                listBox1.Items.Add(msg);
            }
            private void Form1_Load(object sender, EventArgs e)
            {
    
                //Control.CheckForIllegalCrossThreadCalls = false;
                Thread th = new Thread(new ThreadStart(ServerSocket));
                th.Start();
                // ServerSocket();
            }
            Socket client;
            public void ServerSocket()
            {
                IPEndPoint ipP = new IPEndPoint(IPAddress.Parse("192.168.1.104"), 6000);
    
                Socket socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socketServer.Bind(ipP);
                while (true)
                {
                    socketServer.Listen(5);
                    client = socketServer.Accept();
    
                    Thread thClient = new Thread(new ThreadStart(ClientSocket));
                    thClient.Start();
    
                }
            }
            public void ClientSocket()
            {
                ShowMessageHandel smh = showMsg;
               
                byte[] byteMsg = new byte[1024];
                while (true)
                {
                    client.Receive(byteMsg, byteMsg.Length, SocketFlags.None);
                    client.Send(System.Text.ASCIIEncoding.UTF8.GetBytes("你好"));
                    client.Send(UTF8Encoding.GetEncoding("GB2312").GetBytes("你好"));
    
                    // listBox1.Items.Add(Encoding .ASCII.GetString(byteMsg));
    
                    //可收发汉字
                    string strMsg = UTF8Encoding.GetEncoding("GB2312").GetString(byteMsg);
                    this.BeginInvoke(smh, strMsg);//委托简单调用
                }
            }
        }

    上面代码仅供参考,有肯多不足,请多指教

    Top
    收藏
    关注
    评论
  • 相关阅读:
    截图、贴图神器——Snipaste
    MySQL (InnoDB)在什么情况下无法使用索引
    美化博客园样式
    《快速阅读》全书脉络梳理
    MySQL 配置统计数据
    使用 MWeb + Typora 写作并发布到博客园
    浅谈操作系统的用户态和内核态
    一个后端工程师的开发软件
    程序写日志文件时该不该加锁 & PHP 写日志为什么加锁
    《小岛经济学》读书笔记
  • 原文地址:https://www.cnblogs.com/smiler/p/2995641.html
Copyright © 2011-2022 走看看