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

简介: 1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样转化 直接上程序   public partial class Form1 : Form { pub...

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

 

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

 

目录
相关文章
|
3月前
|
Python
python socket 简单通信
python socket 简单通信
43 1
|
3月前
|
网络协议 安全 网络安全
网络编程:基于socket的TCP/IP通信。
网络编程:基于socket的TCP/IP通信。
233 0
|
1月前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【10月更文挑战第10天】网络协议定义了机器间通信的标准格式,确保信息准确无损地传输。主要分为两种模型:OSI七层模型与TCP/IP模型。
|
1月前
|
Java Python
python知识点100篇系列(16)-python中如何获取线程的返回值
【10月更文挑战第3天】本文介绍了两种在Python中实现多线程并获取返回值的方法。第一种是通过自定义线程类继承`Thread`类,重写`run`和`join`方法来实现;第二种则是利用`concurrent.futures`库,通过`ThreadPoolExecutor`管理线程池,简化了线程管理和结果获取的过程,推荐使用。示例代码展示了这两种方法的具体实现方式。
python知识点100篇系列(16)-python中如何获取线程的返回值
|
2月前
|
存储 消息中间件 资源调度
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
该文章总结了操作系统基础知识中的十个关键知识点,涵盖了进程与线程的概念及区别、进程间通信方式、线程同步机制、死锁现象及其预防方法、进程状态等内容,并通过具体实例帮助理解这些概念。
「offer来了」进程线程有啥关系?10个知识点带你巩固操作系统基础知识
|
5月前
|
Java
Java Socket编程与多线程:提升客户端-服务器通信的并发性能
【6月更文挑战第21天】Java网络编程中,Socket结合多线程提升并发性能,服务器对每个客户端连接启动新线程处理,如示例所示,实现每个客户端的独立操作。多线程利用多核处理器能力,避免串行等待,提升响应速度。防止死锁需减少共享资源,统一锁定顺序,使用超时和重试策略。使用synchronized、ReentrantLock等维持数据一致性。多线程带来性能提升的同时,也伴随复杂性和挑战。
101 0
|
2月前
|
网络协议 Linux 应用服务中间件
Socket通信之网络协议基本原理
【9月更文挑战第14天】网络协议是机器间交流的约定格式,确保信息准确传达。主要模型有OSI七层与TCP/IP模型,通过分层简化复杂网络环境。IP地址全局定位设备,MAC地址则在本地网络中定位。网络分层后,数据包层层封装,经由不同层次协议处理,最终通过Socket系统调用在应用层解析和响应。
|
4月前
|
Java
如何在Java中实现多线程的Socket服务器?
在Java中,多线程Socket服务器能同时处理多个客户端连接以提升并发性能。示例代码展示了如何创建此类服务器:监听指定端口,并为每个新连接启动一个`ClientHandler`线程进行通信处理。使用线程池管理这些线程,提高了效率。`ClientHandler`读取客户端消息并响应,支持简单的文本交互,如发送欢迎信息及处理退出命令。
|
3月前
|
网络协议
socket编程(2) -- TCP通信
socket编程(2) -- TCP通信
43 0
|
5月前
|
Java API 开发者
Java网络编程基础与Socket通信实战
Java网络编程基础与Socket通信实战