小弟我最近做一个c/s结构的软件,当接收多个客户端连接时用到线程的问题,我对线程的理解也不是很模糊,都是自学的,网上讲得也没看懂。各位大侠帮看看,我要怎么修改
//开启服务器
private void button1_Click(object sender, EventArgs e)
{
if (watchflag == 1)
{
MessageBox.Show("服务器已经启动", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
watchflag = 1;
textBox1.Text += "服务器于"+System.DateTime.Now.ToLocalTime()+"启动!\r\n";
Thread mythread = new Thread(new ParameterizedThreadStart(Form_sever.accListen));
}
}//监听
public void accListen()
{ //初始化
IPEndPoint Sever = new IPEndPoint(HostIP, Port);
newsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //绑定服务器并开始进行监听
newsocket.Bind(Sever);
//接受服务器连接
while (true)
{
newsocket.Listen(25);
Socket accsocket = newsocket.Accept();
}
}
前面也没有啥内容,关于委托小弟实在是不知道要怎么弄,有高手给指点下,最好给下代码,也让小弟学习一下
//开启服务器
private void button1_Click(object sender, EventArgs e)
{
if (watchflag == 1)
{
MessageBox.Show("服务器已经启动", "信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
watchflag = 1;
textBox1.Text += "服务器于"+System.DateTime.Now.ToLocalTime()+"启动!\r\n";
Thread mythread = new Thread(new ParameterizedThreadStart(Form_sever.accListen));
}
}//监听
public void accListen()
{ //初始化
IPEndPoint Sever = new IPEndPoint(HostIP, Port);
newsocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //绑定服务器并开始进行监听
newsocket.Bind(Sever);
//接受服务器连接
while (true)
{
newsocket.Listen(25);
Socket accsocket = newsocket.Accept();
}
}
前面也没有啥内容,关于委托小弟实在是不知道要怎么弄,有高手给指点下,最好给下代码,也让小弟学习一下
mythread.Start();
给你个连接里边有好多socket的和多线程配合处理的
http://www.cnblogs.com/wzd24/
里边源码很多
“acclisten”的重载均于委托“ParameterizedThreadStart”不匹配,有这个错误,不知道是为什么
你开线程的时候用ThreadStart这个委托,这个不需要参数正好和你的方法accListen匹配