home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Professional / OS2PRO194.ISO / os2 / prgramer / rexx / rxsock / test_c.cmd < prev    next >
Encoding:
Text File  |  1993-03-11  |  4.1 KB  |  149 lines

  1. /*------------------------------------------------------------------
  2.  * test_c.cmd :
  3.  *------------------------------------------------------------------
  4.  * 08-05-92 originally by Patrick J. Mueller
  5.  *------------------------------------------------------------------*/
  6.  
  7. trace off
  8.  
  9. /*------------------------------------------------------------------
  10.  * get server name
  11.  *------------------------------------------------------------------*/
  12. parse arg server .
  13.  
  14. if (server = "?") then
  15.    Usage()
  16.  
  17. if (server = "") then
  18.    server = SockGetHostId()
  19.  
  20. else
  21.    do
  22.    rc = SockGetHostByName(server,"host.!")
  23.    if (rc = 0) then
  24.       do
  25.       say "Error" h_errno "calling SockGetHostByName("server")"
  26.       exit
  27.       end
  28.  
  29.    server = host.!addr;
  30.    end
  31.  
  32. /*------------------------------------------------------------------
  33.  * choose port number
  34.  *------------------------------------------------------------------*/
  35. port = 923
  36.  
  37. /*------------------------------------------------------------------
  38.  * load function package
  39.  *------------------------------------------------------------------*/
  40. if RxFuncQuery("SockLoadFuncs") then
  41.    do
  42.    rc = RxFuncAdd("SockLoadFuncs","RxSock","SockLoadFuncs")
  43.    rc = SockLoadFuncs()
  44.    end
  45.  
  46. /*---------------------------------------------------------------
  47.  * open socket
  48.  *---------------------------------------------------------------*/
  49. socket  = SockSocket("AF_INET","SOCK_STREAM",0)
  50. if (socket = -1) then
  51.    do
  52.    say "Error on SockSocket:" errno
  53.    exit
  54.    end
  55.  
  56. /*------------------------------------------------------------------
  57.  * catch breaks
  58.  *------------------------------------------------------------------*/
  59. signal on halt
  60.  
  61. /*---------------------------------------------------------------
  62.  * connect socket
  63.  *---------------------------------------------------------------*/
  64. server.!family = "AF_INET"
  65. server.!port   = port
  66. server.!addr   = server
  67.  
  68. rc = SockConnect(socket,"server.!")
  69. if (rc = -1) then
  70.    do
  71.    say "Error on SockConnect:" errno
  72.    exit
  73.    end
  74.  
  75. /*------------------------------------------------------------------
  76.  * get some data to send over
  77.  *------------------------------------------------------------------*/
  78. data = random(10000,99999)
  79.  
  80. say "Sending  '"data"' to  " server
  81.  
  82. /*------------------------------------------------------------------
  83.  * send the data over
  84.  *------------------------------------------------------------------*/
  85. rc = time("r")
  86. rc = SockSend(socket,data)
  87. elapsed = time("e")
  88.  
  89. if (rc = -1) then
  90.    do
  91.    say "Error on SockSend:" errno
  92.    exit
  93.    end
  94.  
  95. /*------------------------------------------------------------------
  96.  * receive the result from the server
  97.  *------------------------------------------------------------------*/
  98. rc = time("r")
  99. rc = SockRecv(socket,"newData",length(data))
  100. elapsed = elapsed + time("e")
  101.  
  102. if (rc = -1) then
  103.    do
  104.    say "Error on SockRecv:" errno
  105.    exit
  106.    end
  107.  
  108. /*------------------------------------------------------------------
  109.  * print results
  110.  *------------------------------------------------------------------*/
  111. if (reverse(data) <> newData) then
  112.    say "Unexpected results from the server: '"newData"'"
  113.  
  114. else
  115.    do
  116.    say "Received '"newData"' from" server "(successful!!)"
  117.    say "Elapsed network transit time:" elapsed "seconds"
  118.    end
  119.  
  120. /*------------------------------------------------------------------
  121.  * close socket (and catch signals)
  122.  *------------------------------------------------------------------*/
  123. halt:
  124.  
  125. rc = SockSoClose(socket)
  126. if (rc = -1) then
  127.    do
  128.    say "Error on SockSoClose:" errno
  129.    exit
  130.    end
  131.  
  132. exit
  133.  
  134. /*------------------------------------------------------------------
  135.  * some simple help
  136.  *------------------------------------------------------------------*/
  137. Usage: procedure
  138.    parse source . . me .
  139.    parse value filespec("name",me) with me "." .
  140.  
  141.    say "usage:"
  142.    say "   " me "<server>"
  143.    say "is used to run the rxSock tester"
  144.    say
  145.    say "where:"
  146.    say "   <server> - tcp/ip host name running test_s (default = current host)"
  147.  
  148.    exit
  149.