home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sibdemo3.zip / SAMPLES.DAT / SAMPLES / TCPIP / TCPTEST.PAS < prev   
Pascal/Delphi Source File  |  1997-08-17  |  4KB  |  158 lines

  1. Program tcptest;
  2. {Current Bugs}
  3. {GetHostByAddr returns Nil. :(
  4. Need to determine method to get the Longint address
  5. from the HostEnt structure. }
  6. Uses Tcpip, scstring;
  7. Const Serv = 'sidney.ml.org'; {walnutcreek.ca.us.chatnet.org}
  8.       portst = '6667';
  9.       Nick = 'HWIRCTEST';
  10.       crlf = #13#10;
  11.  
  12. var rc: integer;
  13.     nym : string;
  14.     Port:word;
  15.     ircnick:pchar;
  16.     TmpMsg: cstring;
  17.     srbuf:array[0..511] of char;
  18.     RcBuf: Array[0..511] of char;
  19.     SrSz: integer;
  20.     Csocket: Integer;
  21.     CnameLength: integer;
  22.     Server: SockAddr_in;
  23.     HostName : PhostEnt;
  24.     HostNym : PHostEntInet;
  25.     ServAddr: Longword;
  26.     Tmpptr: PLongword;
  27.     TmpHost: HostEntInet;
  28.     tmplen: integer;
  29.     x,x2:integer;
  30.     Pc:Pchar;
  31.     servname: cstring;
  32.     Rre: Rrec;
  33.     Rretmpst : array[0..7] of cstring;
  34.     TmpLw:Longword;
  35.  
  36. {Tracer}
  37. var Tx: file of char;
  38. {end tracer}
  39.  
  40. Function NsLookup(HostNym:Cstring):LongWord;
  41. Var Rc: integer;
  42.     srbuf:array[0..511] of char;
  43.     RcBuf: Array[0..511] of char;
  44.     Header: Prrechead;
  45.     Answer: Plrrec;
  46.     Trace1 : Lrrec;
  47.     Tmpst : Cstring;
  48.     TmpLW: Longword;
  49. begin
  50.     rc := res_MkQuery(R_Query, @HostNym, C_IN, T_A, nil, 0, nil, @SrBuf, Sizeof(srbuf));
  51.     rc := Res_Send(@srbuf,rc,@rcbuf, Sizeof(rcbuf));
  52.     Header := Splitrrec(rcbuf,rc);
  53.     Answer := Header^.Answer;
  54.     Trace1 := answer^;
  55.     TmpSt := Answer^.rdata;
  56.     assign(tx,'cavewal.txt');
  57.     rewrite(tx);
  58.     For x2 := 0 to length(tmpst) do write(tx, tmpst[x2]);
  59.     close(tx);
  60.     TmpLw := longword(tmpst[0]) shl 24 + longword(tmpst[1]) shl 16 +
  61.                    longword(tmpst[2]) shl 8 + longword(tmpst[3]);
  62.     NsLookup := TmpLw;
  63. end;
  64.  
  65.  
  66. Begin
  67.   If Paramstr(1) = '' then
  68.   Begin
  69.        Writeln('Usage: TCPTest ServerName');
  70.        halt(1);
  71.   End;
  72.   ServName := ParamStr(1);
  73.  
  74.  
  75. {  If paramcount <> 3 then
  76.   begin
  77.     Writeln('Insufficent Parameters');
  78.     Writeln('Proper Format, '+Paramstr(0)+' <server> <port> <yernick>');
  79.     Readln;
  80.     Halt(3);
  81.   end;}
  82.  
  83.   Res_init;
  84.   Ircnick := 'NICK '+nick+crlf;
  85.   If Sock_init <> 0 then
  86.   begin
  87.     Writeln('TCP Not Loaded.');
  88.     readln;
  89.     Halt(1);
  90.   end;
  91.   port := String2Word(Portst);
  92.   server.sin_port := htons(port);
  93.  
  94.   If not checkIpaddress(servname) then
  95.   begin
  96. TmpLw := nslookup(servname);
  97. Write(GetDotted(Tmplw));
  98. Readln;
  99.  
  100.   end else
  101.   begin
  102.     ServAddr := Inet_addr(serv);
  103.   end;
  104.   csocket := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  105.   if Csocket < 0 then
  106.   begin
  107.     writeln('Socket Error');
  108.     readln;
  109.     Halt(2);
  110.   end;
  111.   server.sin_family := AF_INET;
  112.   server.sin_Addr := ServAddr;
  113.   rc := Connect(csocket, sockaddr(Server), Sizeof(server));
  114.   If Rc < 0 then
  115.   begin
  116.     psock_errno('Connect()');
  117.     readln;
  118.     Halt(5);
  119.   end;
  120. Writeln('Connected');
  121.   TmpMsg := 'NICK '+Nick+CRLF;
  122. //Tmpmsg := nym;
  123.   rc := send(csocket, @tmpmsg, length(tmpmsg), 0);
  124.   If RC < 0 then
  125.   Begin
  126.  
  127.     Psock_errno('Send()');
  128.     Readln;
  129.     halt(7);
  130.   end;
  131.   Write(tmpmsg);
  132.  
  133.   TmpMsg := 'USER kzinti host.name us.undernet.org :Kzinti RedClaw'+CRLF;
  134.  
  135.   rc := send(csocket, @tmpmsg, sizeof(tmpmsg), 0);
  136.   If RC < 0 then
  137.   Begin
  138.     Psock_errno('Send()');
  139.     Readln;
  140.     halt(7);
  141.   end;
  142.   Write(tmpmsg);
  143.  
  144.   rc := Recv(csocket, srbuf, Sizeof(srbuf), 0);
  145.   If Rc < 0 then
  146.   Begin
  147.     Psock_errno('Recv()');
  148.     readln;
  149.     halt(6);
  150.   end;
  151.  
  152.   Writeln(srbuf);
  153.  
  154.   Soclose(csocket);
  155.   Write('no errors, '); Readln;
  156.  
  157.  
  158. end.