我用ServerSocket和ClientSocket分别做了一个服务器站的程序,一个客户端的
但有一种情况就是:服务器的ServerSocket.avtive:=false; 如果这时再用客户连服务器就会出错了.有没有方法,测试现在服务器是否可以连接呢?如果关闭的话就不连接,直接提示客户!
还有就是,有时服务器地址错,也会出错的。所以我想先PING一下比较好吧?具体怎么做?
但有一种情况就是:服务器的ServerSocket.avtive:=false; 如果这时再用客户连服务器就会出错了.有没有方法,测试现在服务器是否可以连接呢?如果关闭的话就不连接,直接提示客户!
还有就是,有时服务器地址错,也会出错的。所以我想先PING一下比较好吧?具体怎么做?
解决方案 »
- 用POP3写邮件读取的程序问题 ?
- TIdTCPClient Connect的问题
- 一个关于硬件加密的问题
- arr如何关闭TWebBrowser打开的文档?
- 有关Barcode控件的应用,各位高手帮帮忙
- TApplication.HintMouseMessage和application.ActivateHint是作什么的?
- 两个简单的问题~~帮忙啊!!!
- 怎样把用户选中的图片和MP3文件合成一个EXE文件。
- ★★屏幕取词源代码(for delphi)★★快去下载啦!
- 怎样取得SQL执行后的返回值,比如:。。。。。
- http1.0和1.1协议规定client提交表单时候的内容用怎样的格式编码?
- 有用过INDY,SAKMAIL,MAIL2000n控件做过邮件接收程序的朋友请进来
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结了
----------------------------------------------------------------