socket相关

        private void btn_start_Click(object sender, EventArgs e)
        {
            //socket服务器端逻辑
            //1、创建socket对象(用于服务器端监听)
            //para1:使用ipv4的网络寻址协议。
            //para2:数据传输方式 stream流式协议.
            //para3:通信协议的设置(tcp协议)
            Socket serverSoc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            //2、绑定IP和端口
            IPAddress ip = IPAddress.Parse("");//将字符串转换成IP地址
            IPEndPoint ipendPoint = new IPEndPoint(ip, int.Parse(""));//给出端口号
            serverSoc.Bind(ipendPoint);

            //3、开启侦听
            serverSoc.Listen(10);//挂起队列的最大长度。超过这个数之后,就会将最早的给删掉
            //4、开始接受客户端连接


            ThreadPool.QueueUserWorkItem(new WaitCallback(this.SartAcceptClient), serverSoc);
        }
        public void SartAcceptClient(object state)
        {
            var serverSoc = (Socket)state;
            while (true)
            {
                Socket proxSocket = serverSoc.Accept();//accept方法一执行,当前线程阻塞。一直等客户端连接上。
                //将字符串转换成字节数组
                byte[] data = Encoding.Default.GetBytes("Hello World");
                proxSocket.Send(data, 0, data.Length, SocketFlags.None);//最后一个参数,当在同一个局域网内进行访问的时候,就使用None,如果是外网访问的话,那么需要设置其他参数
                //proxSocket.Shutdown(SocketShutdown.Both);//关闭服务器端的socket对象。发送一个0字节的消息,告知对方,此次通信结束。
                //proxSocket.Close();
                //serverSoc.Close();
            }            
        }

猜你喜欢

转载自www.cnblogs.com/vichin/p/8987681.html