C# Socket网络编程实例

2019-12-26 12:09:08王振洲

            //Any:提供一个 IP 地址,指示服务器应侦听所有网络接口上的客户端活动。此字段为只读。  
            IPAddress ip = IPAddress.Any;  
            //创建端口号对象;将txtPort.Text控件的值设为服务端的端口号  
            IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));  
            //监听  
            socketWatch.Bind(point);  
            ShowMsg("监听成功");  
            socketWatch.Listen(10);//连接队列的最大长度 ;即:一个时间点内最大能让几个客户端连接进来,超过长度就进行排队  
            //等待客户端连接;Accept()这个方法能接收客户端的连接,并为新连接创建一个负责通信的Socket  
            Thread th = new Thread(Listen); //被线程执行的方法如果有参数的话,参数必须是object类型  
            Control.CheckForIllegalCrossThreadCalls = false; //因为.net不允许跨线程访问的,所以这里取消跨线程的检查。.net不检查是否有跨线程访问了,所有就不会报: “从不是创建控件“txtLog”的线程访问它” 这个错误了,从而实现了跨线程访问  
            th.IsBackground = true; //将th这个线程设为后台线程。  
            //Start(object parameter); parameter:一个对象,包含线程执行的方法要使用的数据,即线程执行Listen方法,Listen的参数  
            th.Start(socketWatch);  //这个括号里的参数其实是Listen()方法的参数。因为Thread th = new Thread(Listen)这个括号里只能写方法名(函数名) 但是Listen()方法是有参数的,所有就要用Start()方法将它的参数添加进来  
        }  
        /// <summary>  
        /// 等待客户端连接,如果监控到有客户端连接进来就创建一个与之通信的Socket