socket 出错提示! ( 积分: 100 )

  • 主题发起人 主题发起人 wenxh1202
  • 开始时间 开始时间
W

wenxh1202

Unregistered / Unconfirmed
GUEST, unregistred user!
异步出错先出现10053,后出现 socket error 10061,该如何解决?什么原因导致
主要是clientsocket连接serversocket的时候弹出的!
qq 191256153
 
异步出错先出现10053,后出现 socket error 10061,该如何解决?什么原因导致
主要是clientsocket连接serversocket的时候弹出的!
qq 191256153
 
Socket Error=10061 连接被拒绝

procedure TForm1.ServerClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
//Error Conditions
Case ErrorCode Of
10054:MemoLog.lines.add('错误代码10054,一个连接被远方重新设置');
10053:MemoChuCuo10053.Lines.Add('10053 退出的ID:'+Inttostr(Socket.SocketHandle));
Else
MemoLog.Lines.Add('Error Happen, Error Code:'+InttoStr(errorCode));
End;
ErrorCode:=0; //加这一句可以避免出现错误提示框
end;
 
jfyes:我编写的不是server端程序,而且,我的client处理方式与你的类似。只是我想避免10053和10061错误的出现。如何处理好些?
 
我有一个转换错误码的函数给你吧:
function SocketError(SocketCode: Integer):String;
begin
case SocketCode of
WSAEINTR : Result:='操作被中止';
WSAEACCES: Result:='访问被拒绝';
WSAEMFILE: Result:='打开太多的Socket';
WSAEINPROGRESS: Result:='一个阻塞操作正在执行中';
WSAENOTSOCK: Result:='在一个非法Sock对象上操作';
WSAEMSGSIZE: Result:='数据太长';
WSAEADDRINUSE: Result:='地址已被使用';
WSAEADDRNOTAVAIL: Result:='设置地址失败';
WSAENETDOWN: Result:='网络关闭';
WSAENETUNREACH: Result:='网络不可达';
WSAENETRESET: Result:='网络被重置';
WSAECONNABORTED: Result:='对方断开连接';
WSAECONNRESET: Result:='连接被重置';
WSAENOBUFS: Result:='缓冲不足';
WSAEISCONN: Result:='SOCK已连接';
WSAENOTCONN: Result:='SOCK未连接';
WSAESHUTDOWN: Result:='SOCK已经关闭';
WSAETIMEDOUT: Result:='连接服务器超时';
WSAECONNREFUSED: Result:='连接被拒绝';
WSAEHOSTDOWN: Result:='主机已关机';
WSAEHOSTUNREACH: Result:='找不到路由';
WSAEPROCLIM: Result:='进程太多';
WSAHOST_NOT_FOUND:Result:='找不到主机';
else Result:='未知网络错误';
end;
end;
 
出錯了10061是你根本沒有連接上服務器端,你想避免當然要確保連上服務器端了,首先:設定要服務器端並至少運行一次以注冊,然後設定socket的host為服務器端地址(如服務器端在本機可設為127.0.0.1。在運行客戶端之前,要首先運行socket應用程序(這是一個單獨的程序,搜索一下C:盤就知道了)。
當然,如果你只是想不看見錯誤信息框,那麼可以用下面的方式進行。:)
try
socket.astive := true;
except
//這裡為空就不會彈出錯誤對話框了,當然調試的時候是必然會彈出的。
end;
 
后退
顶部