客户端登陆界面
先定义三个窗口级变量(全局变量)
private TcpClient client;
private NetworkStream stream;
private bool control = false;
//ip地址与端口号要与服务器端在监听的一样
IPAddress myip = IPAddress.Parse("127.0.0.1");
int myport = 8686;IPEndPoint myserver=new IPEndPoint(myip,myport);
client = new TcpClient();
client.Connect(myserver);
string strsql ="!!!" +textBox1.Text+"-"+textBox2.Text;
byte[] bta = System.Text.Encoding.Default.GetBytes(strsql.ToCharArray());
//client是tcp连接时的标记,需要在跳转页面时将client传到另外一个界面
stream = client.GetStream();
//写入流
stream.Write(bta, 0, bta.Length);
//清空流,并强制发送
stream.Flush();control = true;
//不在客户端使用线程的方法
while (control)
{
Byte[] sta = new Byte[4096];
int p, q;
if (stream.DataAvailable)//表示有信息可以接收
{
p = stream.Read(sta, 0, 4096);
string s1 = System.Text.Encoding.Default.GetString(sta, 0, p);
if (s1 == "true")//执行登陆操作
{
hei = true;
control = false;
//将tcp连接的用静态类传值
ctzh.client = client;}
else
{
MessageBox.Show("账号或密码错误!");
return;
}
}
}
//跳转入新界面后
先定义三个全局变量
private TcpClient client;
private NetworkStream stream;
private bool control = false;
//标记tcp连接对象
client = ctzh.client;
//发送信息给服务器端
string msg = "***" + this.Tag;
Byte[] bta = new Byte[1024];
bta = System.Text.Encoding.Default.GetBytes(msg.ToCharArray());
try
{
stream = client.GetStream();
stream.Write(bta, 0, bta.Length);
stream.Flush();
control = true;
//开启一个线程去接收服务器端发回的信息
Thread thread = new Thread(new ThreadStart(targett));
thread.Start();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
//接受信息的事件,并在事件中处理接收到的信息
private void targett()
{
while (control)
{
Byte[] bta = new Byte[4096];
try
{
int p, q;
if (stream.DataAvailable)//表示有信息可以接收
{
p = stream.Read(bta, 0, 4096);
//将接收到的信息转化成string的类型,用于显示或者赋值等等操作
string s1 = System.Text.Encoding.Default.GetString(bta, 0, p);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}