IPAddress ip = IPAddress.Parse(this.txtIP.Text);
IPEndPoint server = new IPEndPoint(ip, Int32.Parse(this.txtPort.Text));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(server);
//监听客户端连接
socket.Listen(10);
while (true)
{
newSocket = socket.Accept();
//显示客户IP和端口号
this.lbState.Items.Add("与客户 " + newSocket.RemoteEndPoint.ToString() + " 建立连接");
//创建一个线程接收客户信息
Control.CheckForIllegalCrossThreadCalls = false;
thread = new Thread(new ThreadStart(AcceptMessage));
thread.Start();
}
IPEndPoint server = new IPEndPoint(ip, Int32.Parse(this.txtPort.Text));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(server);
//监听客户端连接
socket.Listen(10);
while (true)
{
newSocket = socket.Accept();
//显示客户IP和端口号
this.lbState.Items.Add("与客户 " + newSocket.RemoteEndPoint.ToString() + " 建立连接");
//创建一个线程接收客户信息
Control.CheckForIllegalCrossThreadCalls = false;
thread = new Thread(new ThreadStart(AcceptMessage));
thread.Start();
}
解决方案 »
- 如何把byte数组中某几位的值以Int型返回?
- 简单
- 100分。c#怎样获取当前电脑上移动存储设备列表,以及文件复制到移动存储设备问题
- C#中for循环问题
- 急急急,初学者,这到底怎么回事
- 一道微软面试题(求解)!
- C#语法的技巧!
- 读取Cookie中的数据怎么成了这样test%252Easpx%253Fclassid%3D5????在线等!!
- 从数据库提取出的以前日期绑定在Label.text上,怎样显示其短日期型???
- 求助怎么用C#实现RSA2048带RSA/ECB/oaepwithsha-512andmgf1padding填充的加密算法
- 数据库里有N多网址,怎么用杀毒软件检测是否被挂马
- 在MaskedTextBox中怎么控制输入范围在00:00:00到23:59:59间。
Control.CheckForIllegalCrossThreadCalls = false;
这句,我不确定是不是要用 this.CheckForIllegalCrossThreadCalls 才有效.
而且,这样做.貌似多线程没有什么意义(我不确定)
所以我建议
newSocket = socket.Accept();
ThreadPool.QueueUserWorkItem(new WaitCallback(AcceptMessage), newSocket);
}
....
void AcceptMessage(object state){
Socket clientSocket = state as Socket;
...
}
因为是同步的,线程会阻塞在这句话这,接收连接请求的部分应该新起一个线程写
放在外面