home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 18 REXX
/
18-REXX.zip
/
RXSOCK.ZIP
/
test_c2.cmd
< prev
next >
Wrap
OS/2 REXX Batch file
|
1993-07-16
|
6KB
|
213 lines
/*------------------------------------------------------------------
* test_c.cmd :
*------------------------------------------------------------------
* 08-05-92 originally by Patrick J. Mueller
*------------------------------------------------------------------*/
trace off
/*------------------------------------------------------------------
* choose port number
*------------------------------------------------------------------*/
port = 1923
/*------------------------------------------------------------------
* initialize socket package
*------------------------------------------------------------------*/
parse source os .
if (os = "OS/2") then
do
if RxFuncQuery("SockLoadFuncs") then
do
rc = RxFuncAdd("SockLoadFuncs","RxSock","SockLoadFuncs")
rc = SockLoadFuncs()
end
end
if (os = "AIX/6000") then
do
rc = SysAddFuncPkg("rxsock.dll")
end
/*------------------------------------------------------------------
* get server name
*------------------------------------------------------------------*/
parse arg server .
if (server = "?") then
Usage()
if (server = "") then
server = SockGetHostId()
else
do
rc = SockGetHostByName(server,"host.!")
if (rc = 0) then
do
say "Error" h_errno "calling SockGetHostByName("server")"
exit
end
server = host.!addr;
end
/*---------------------------------------------------------------
* open socket
*---------------------------------------------------------------*/
socket = SockSocket("AF_INET","SOCK_STREAM",0)
if (socket = -1) then
do
say "Error on SockSocket:" errno
exit
end
/*------------------------------------------------------------------
* catch breaks
*------------------------------------------------------------------*/
signal on halt
/*---------------------------------------------------------------
* connect socket
*---------------------------------------------------------------*/
server.!family = "AF_INET"
server.!port = port
server.!addr = server
rc = SockConnect(socket,"server.!")
if (rc = -1) then
do
say "Error on SockConnect:" errno
exit
end
/*---------------------------------------------------------------
* set non-blocking mode
*---------------------------------------------------------------*/
rc = SockIoctl(socket,"FIONBIO",1)
/*------------------------------------------------------------------
* open another socket
*------------------------------------------------------------------*/
socket2 = SockSocket("AF_INET","SOCK_STREAM",0)
rc = SockIoctl(socket2,"FIONBIO",1)
call doSelect socket, socket2
call doSelect socket, socket2, 0
call doSelect socket, socket2, 1
/*------------------------------------------------------------------
* get some data to send over
*------------------------------------------------------------------*/
data = random(10000,99999)
say "Sending '"data"' to " server
/*------------------------------------------------------------------
* send the data over
*------------------------------------------------------------------*/
rc = SockSend(socket,substr(data,1,2))
do x = 1 to 1000
nop
end
rc = SockSend(socket,substr(data,3,3))
if (rc = -1) then
do
say "Error on SockSend:" errno
exit
end
/*------------------------------------------------------------------
* receive the result from the server
*------------------------------------------------------------------*/
newData = ""
do while (length(newData) < 5)
rc = SockRecv(socket,"dataChunk",1000)
say "received" length(dataChunk) "bytes"
newData = newData || dataChunk
call doSelect socket, socket2, 1
end
/*------------------------------------------------------------------
* print results
*------------------------------------------------------------------*/
if (reverse(data) <> newData) then
say "Unexpected results from the server: '"newData"'"
else
do
say "Received '"newData"' from" server "(successful!!)"
end
/*------------------------------------------------------------------
* close socket (and catch signals)
*------------------------------------------------------------------*/
halt:
rc = SockSoClose(socket)
if (rc = -1) then
do
say "Error on SockSoClose:" errno
exit
end
exit
/*------------------------------------------------------------------
* call select
*------------------------------------------------------------------*/
doSelect: procedure
s.1 = arg(1)
s.2 = arg(2)
t = arg(3)
r.0 = 2
w.0 = 2
e.0 = 2
do i = 1 to 2
r.i = s.i
w.i = s.i
e.i = s.i
end
if (arg() = 2) then
rc = SockSelect("r.","w.","e.")
else
rc = SockSelect("r.","w.","e.",t)
say "rc =" rc "from SockSelect():"
do i = 1 to r.0
say " ready for read: " r.i
end
do i = 1 to w.0
say " ready for write: " w.i
end
do i = 1 to e.0
say " ready for except:" e.i
end
return ""
/*------------------------------------------------------------------
* some simple help
*------------------------------------------------------------------*/
Usage: procedure
parse source . . me .
say "usage:"
say " " me "<server>"
say "is used to run the rxSock tester"
say
say "where:"
say " <server> - tcp/ip host name running test_s (default = current host)"
exit