我在用clientsocker和serversocket做的通讯程序中用到clientsocket1connect,clientsocket1error,clientsocket1read几个过程,但是在测试时发现以下问题:当我第一次输入正确的clientsocket1.Host值时,可以连接成功,取得正确的连接数据,第二次输入错误的clientsocket1.Host值时,程序运行到clientsocket1error,并提示连接错误信息“connect error”。第三次输入正确的clientsocket1.Host值时,却又显示connect error”,只有第四次输入正确的clientsocket1.Host值时,才显示连接成功,取得连接数据。
这是什么原因呢?clientsocket1connect, clientsocket1error, clientsocket1read的激发顺序是什么样的呢?
这是什么原因呢?clientsocket1connect, clientsocket1error, clientsocket1read的激发顺序是什么样的呢?
解决方案 »
- 如何在DateTimePicker上不但显示日期,而且显示时间?
- 如何实行以表格的形式设置参数,要实行以下图的效果
- 怎么样在同一个Socket收发不同结构的包?
- 请问怎样在客户端的SocketConnection组件的Address属性中动态的写入服务器端的IP地址?
- 利用excel制作报表,Excel表内置于form中,采用什么方法最好?
- >>>>>>五十分献给最可爱的人(关于托盘问题,俄晕,快要不行了5555555)
- 为什么在别人的程序上只有加一个空FORM然后运行就出错了,这样这样帮这人改程序呀究竟这人的程序做了什么手脚
- 我在玩的反恐精英时,一碰到我军与敌军打仗时,硬盘灯猛闪,速度奇慢,分辨率已到640*480,怎么办?
- 貌似安装XE后导致ACCESS数据库出错,期待行家
- 怎么知道用户选择的ComboBox的哪个选项?
- 组件面版不见了
- Delphi中的一个小问题而已,请你有空来看看,举手之劳啊!
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode := 0;
showmessage('connect error');
end;
var WSData:TWSAData;
begin
if WSAstartup(2,WSData)<>0 then begin //为程序使用WS2_32.DLL初始化
showmessage('WS2_32.DLL初始化失败!');
halt;
end;
clientsocket1.Close;
clientsocket1.Host:=dserver;
ClientSocket1.Port:=10050; serveropen:=false; //是否连接上的标识变量
timer1.Enabled:=true;//用来监听连接是否建立的时钟 ClientSocket1.Open;
end;
begin
if WSAstartup(2,WSData)<>0 then begin //为程序使用WS2_32.DLL初始化
showmessage('WS2_32.DLL初始化失败!');
不需要吧?我从来没写过;呵呵;
begin
if serveropen then
begin
bitbtn1.Enabled :=true;//允许设置服务器名
login.Enabled :=true;//允许登录
exit.Enabled :=true;
label5.Caption :='服务器 '+dserver+' 连接成功!'; closetimer;//关闭时钟
loginname.SetFocus;
end
else
begin
bitbtn1.Enabled:=true;
login.Enabled :=false;
exit.Enabled :=true;
combobox1.Items.Clear;
combobox1.Text:='';
if label5.Caption<>'没有检测到服务器的设置,请按设置!' then
label5.Caption :='正在连接服务器 '+dserver+' !';
end;
end;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
if ErrorCode>0 then
begin
错误处理
end;
我用你的方法试过了,可是在用一个错误的服务器名做测试时,运行到显示消息框“connect error”后,系统就报错:Esocketerror with message ' windows socket error: 不知道这样的主机'。procedure Tfrmlogin.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
if ErrorCode>0 then
begin
//错误处理
showmessage('connect error');
clientsocket1.Close;
end;
end;