首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi关于winsock 的tcp通讯异常

2013-01-09 
delphi关于winsock 的tcp通讯错误proceduretcpclientvarwsadada:wsadata tclient:TSocket i:Integerso

delphi关于winsock 的tcp通讯错误
procedure   tcpclient;
var  wsadada:wsadata ;
     tclient:TSocket ;
     i:Integer;
     socketversion:Word ;
     serveaddr:sockaddr_in ;
     buffer:array [0..255] of Char;
     recichar:array [0..255] of Char;
     ip:string;
begin
     
      WSAStartup(MakeWord(2,2),wsadada );
      tclient :=socket(AF_INET ,SOCK_STREAM ,IPPROTO_ip );
     if tclient = INVALID_socket then
     ShowMessage('error');
     serveaddr.sin_family :=aF_INET ;
     serveaddr .sin_port :=htonl(7002); 
     serveaddr .sin_addr.S_addr :=inet_addr('127.0.0.1');
      [color=#FF0000]if connect(tclient,serveaddr,SizeOf(serveaddr) ) =SOCKET_ERROR  then
    begin
       MessageBox(Application.Handle,'error','error',MB_OK or MB_ICONERROR ) ;
       closesocket(tclient );
    end;
    为什么会执行if语句啊,,按理来说我没有写错啊

    
[解决办法]
你用的不是WINSOCKET2?2的话这里要加地址符。
connect(tclient,@serveaddr,SizeOf(serveaddr) ) 

另,是不是你的服务器没开启?
[解决办法]
if connect(tclient,serveaddr,SizeOf(serveaddr) ) =SOCKET_ERROR then begin
  S := SysErrorMessage(WSAGetLastError());
  MessageBox(Application.Handle,PChar(S),'error',MB_OK or MB_ICONERROR );
end;
把错误信息打出来看看.

热点排行