有一个客户端的FORM,一个登陆按钮的click事件:
private void button4_Click(object sender, EventArgs e)
{
sendmsg = "#submit#username#" + textBox4.Text + "#password#" + textBox3.Text + "#";
_netcnn = new Thread(new ThreadStart(chkusr));
_netcnn.Start();
}
chkusr方法的代码:
private void chkusr()
{
Ccs = new Connectclass();
Boolean flag1 = Ccs.connect();
if (flag1 == false)
{
MessageBox.Show("连接服务器失败,请检查网络连接");
chkflag = 3;
return;
}
bool returnflag;
returnflag= Ccs.CheckUser(sendmsg);
if (returnflag == true)
{
chkflag = 1;
}
else
{
chkflag = 2;
}
}
这里的
Ccs.connect()方法是:
public Boolean connect()
{
try
{
myclient = new TcpClient("192.168.1.3", 1234);
myclient.ReceiveTimeout = 100;
networkStream=myclient.GetStream();
streamReader = new StreamReader(networkStream);
streamWriter = new StreamWriter(networkStream);
}
catch
{
return false;
}
return true;
}
服务端的监听代码是:
private void Listen()
{
string IPadd="192.168.1.3";
IPAddress ipadds;
ipadds=IPAddress.Parse(IPadd);
tcpListener = new TcpListener(ipadds, 1234);
tcpListener.Start();
while (true)
{
socketForClient[i] = tcpListener.AcceptSocket();
try
{
if (socketForClient[i].Connected)
{
ListBox1.Items.Add("已经和客户端成功连接!");
_thread2[i] = new Thread(new ThreadStart(readmessage));
listBox2.Items.Add(i);
}
}
catch (Exception ey)
{
MessageBox.Show("listen,"+ey.ToString());
}
}
}现在的问题是我客户端点登陆按钮以后,服务端会收到两次连接信息,就是说在服务端,“已经和客户端成功连接!”的提示会出现两次,我在客户端进行单步跟踪,发现运行到Ccs.connect()方法的加红的TRY时,服务端已经提示一条“已经和客户端成功连接!”,在运行到myclient = new TcpClient("192.168.1.3", 1234)时,有提示一条,就等于连接了两次,不知道时怎么回事了,前两天在跑一直没有出这个问题的,今天一早醒来就这样了,晕了要,哪位手很高的指导一下,谢谢啦~
private void button4_Click(object sender, EventArgs e)
{
sendmsg = "#submit#username#" + textBox4.Text + "#password#" + textBox3.Text + "#";
_netcnn = new Thread(new ThreadStart(chkusr));
_netcnn.Start();
}
chkusr方法的代码:
private void chkusr()
{
Ccs = new Connectclass();
Boolean flag1 = Ccs.connect();
if (flag1 == false)
{
MessageBox.Show("连接服务器失败,请检查网络连接");
chkflag = 3;
return;
}
bool returnflag;
returnflag= Ccs.CheckUser(sendmsg);
if (returnflag == true)
{
chkflag = 1;
}
else
{
chkflag = 2;
}
}
这里的
Ccs.connect()方法是:
public Boolean connect()
{
try
{
myclient = new TcpClient("192.168.1.3", 1234);
myclient.ReceiveTimeout = 100;
networkStream=myclient.GetStream();
streamReader = new StreamReader(networkStream);
streamWriter = new StreamWriter(networkStream);
}
catch
{
return false;
}
return true;
}
服务端的监听代码是:
private void Listen()
{
string IPadd="192.168.1.3";
IPAddress ipadds;
ipadds=IPAddress.Parse(IPadd);
tcpListener = new TcpListener(ipadds, 1234);
tcpListener.Start();
while (true)
{
socketForClient[i] = tcpListener.AcceptSocket();
try
{
if (socketForClient[i].Connected)
{
ListBox1.Items.Add("已经和客户端成功连接!");
_thread2[i] = new Thread(new ThreadStart(readmessage));
listBox2.Items.Add(i);
}
}
catch (Exception ey)
{
MessageBox.Show("listen,"+ey.ToString());
}
}
}现在的问题是我客户端点登陆按钮以后,服务端会收到两次连接信息,就是说在服务端,“已经和客户端成功连接!”的提示会出现两次,我在客户端进行单步跟踪,发现运行到Ccs.connect()方法的加红的TRY时,服务端已经提示一条“已经和客户端成功连接!”,在运行到myclient = new TcpClient("192.168.1.3", 1234)时,有提示一条,就等于连接了两次,不知道时怎么回事了,前两天在跑一直没有出这个问题的,今天一早醒来就这样了,晕了要,哪位手很高的指导一下,谢谢啦~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货