我用ServerSocket和ClientSocket分别做了一个服务器站的程序,一个客户端的
但有一种情况就是:服务器的ServerSocket.avtive:=false; 如果这时再用客户连服务器就会出错了.有没有方法,测试现在服务器是否可以连接呢?如果关闭的话就不连接,直接提示客户!
还有就是,有时服务器地址错,也会出错的。所以我想先PING一下比较好吧?具体怎么做?
但有一种情况就是:服务器的ServerSocket.avtive:=false; 如果这时再用客户连服务器就会出错了.有没有方法,测试现在服务器是否可以连接呢?如果关闭的话就不连接,直接提示客户!
还有就是,有时服务器地址错,也会出错的。所以我想先PING一下比较好吧?具体怎么做?
try
正常访问服务器语句
except
访问失败后的处理
如:showmessage('访问失败');
end;
很好用,没有英文提示呀!!!
如果我客户的服务器IP指向错的话,就会出现
as.. socket error 10049
服务器关了的话,是
as.. socket error 10061
private
MsgHost:string;
TheStream: TWinSocketStream;
buffer: string;
CSocket: TClientSocket;
s:tsocket;
error:integer;
server:tsockaddrin;
protected
procedure Execute;override;
procedure MsgError(Sender: TObject;Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent;var ErrorCode: Integer);
public
constructor Create(const RemoteHost:string);
end;constructor TSendMessage.Create(const RemoteHost:string);
begin
MsgHost:=RemoteHost;
inherited create(false);
end;procedure TSendMessage.Execute;
begin
FreeOnTerminate:=True;
if MsgHost<>'' then
begin
server.sin_addr.S_addr:=inet_addr(pchar(MsgHost));
s:=socket(AF_INET, SOCK_STREAM, 0);
server.sin_port:=htons(8113);
server.sin_family:=AF_INET;
error:=connect(s,server,sizeof(server));
if error=0 then
begin
try
CSocket:=TClientSocket.Create(nil);
CSocket.Host:=MsgHost;
CSocket.port:=8113;
Csocket.OnError:=MsgError;
//CSocket.OnWrite:=Form1.ClientSocket1.OnWrite;
CSocket.ClientType:=ctBlocking;
CSocket.Active:=true;
except
exit;
end;
try
TheStream := TWinSocketStream.Create(Csocket.Socket, 60000);
TheStream.Write(amsg,length(amsg)+1);
finally
CSocket.Free;
TheStream.Free;
end;
end;
end;
end;procedure TSendMessage.MsgError(Sender: TObject;Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent;var ErrorCode: Integer);
begin
if ErrorEvent=eeConnect then
Socket.Close
else if ErrorEvent=eeSend then
Socket.Close;
ErrorCode:=0;
end;写的不好,见笑了
在什么时让ErrorCode:=0;??
在什么时让ErrorCode:=0;??
----------------------------------------------------------------
原贴内容:
不是這個意思的, 而是在控件自己還有一個 onError的事件, 在事件中處理!
OK结了
----------------------------------------------------------------