高手请帮忙,关于TClientSocket方面疑难杂症!!!!
tsk 2005-08-22 05:19:22 我在编写客户端与服务器端通信时,用到ClientSocket和ServerSocket控件,采用的是非阻塞通信!
服务器端 IP: 192.168.0.1 端口号:5678
首先写义全局变量:
int ConnectState=1; //此变量是作为成功建立Socket时的标志,初始为1表示未连接.
//----------------------------------------------------------
Socket初始化函数原型:
InitSocket(AnsiString ServerIP,int Port)
{
ClientSocket1->Host=ServerIP; //服务器端IP
ClientSocket1->Port=Port; //服务器端端口号
ClientSocket1->Active=true; //激活连接
}
//----------------------------------------------------------
在 ClientSocket控件的OnConnect()事件中写入下面代码:
void __fastcall TForm1::ClientSocketConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
ConnectState=0; //表示双方成功建立连接
}
//----------------------------------------------------------
在窗体上放置Button按钮,执行下面代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
InitSocket("192.168.0.1",5678);
if(ConnectState==0)//如果是连接是成功的.
{
Login("用户名","密码"); //登录到服务器用的函数
}
}
//----------------------------------------------------------
我的问题是:
在Button1Click函数里,if内的语句始终得不到执行,当Button1Click执行后,
才会产生OnConnect()事件,这是为什么,我在执行InitSocket()函数后,
Sleep(1000); 也不管用,
请问怎样更改代码,才能满足我的要求? 谢谢各位!
秒