首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

作者头像
hbbliyong
发布2018-03-05 15:16:06
5440
发布2018-03-05 15:16:06
举报
文章被收录于专栏:hbbliyonghbbliyong

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);//委托简单调用
            }
        }
    }

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-04-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档