checkin from browser
authorClaus Gittinger <cg@exept.de>
Mon, 03 Nov 1997 16:30:26 +0100
changeset 589 b76269eef694
parent 588 677527917896
child 590 4494ce0d7d58
checkin from browser
Socket.st
--- a/Socket.st	Sun Nov 02 18:54:14 1997 +0100
+++ b/Socket.st	Mon Nov 03 16:30:26 1997 +0100
@@ -438,261 +438,265 @@
 examples
 "
     example (get help info from an nntp server):
-									[exBegin]
-	|sock host|
-
-	host := OperatingSystem getEnvironment:'NNTPSERVER'.
-
-	sock := Socket newTCPclientToHost:host port:'nntp'.
-	Transcript showCR:sock nextLine.
-	sock buffered:false.
-
-	sock nextPutAll:'HELP'; cr.
-	[:exit |
-	    |line|
-
-	    line := sock nextLine.
-	    line = '.' ifTrue:[exit value:nil].
-	    Transcript showCR:line.
-	] loopWithExit.
-	sock close
-									[exEnd]
+                                                                        [exBegin]
+        |sock host|
+
+        host := OperatingSystem getEnvironment:'NNTPSERVER'.
+
+        sock := Socket newTCPclientToHost:host port:'nntp'.
+        Transcript showCR:sock nextLine.
+        sock buffered:false.
+
+        sock nextPutAll:'HELP'; cr.
+        [:exit |
+            |line|
+
+            line := sock nextLine.
+            line = '.' ifTrue:[exit value:nil].
+            Transcript showCR:line.
+        ] loopWithExit.
+        sock close
+                                                                        [exEnd]
 
 
     example (connect to finger daemon, get users entry):
-									[exBegin]
-	|sock host entry|
-
-	host := OperatingSystem getHostName.
-
-	sock := Socket newTCPclientToHost:host port:'finger'.
-	sock useCRLF:true.
-	sock buffered:false.
-	sock isNil ifTrue:[
-	    Transcript showCR:'cannot connect to local finger daemon'
-	] ifFalse:[
-	    sock nextPutAll:(OperatingSystem getLoginName).
-	    sock cr.
-
-	    entry := sock nextLine.
-	    Transcript showCR:entry.
-
-	    sock close
-	]
-									[exEnd]
+                                                                        [exBegin]
+        |sock host entry|
+
+        host := OperatingSystem getHostName.
+
+        sock := Socket newTCPclientToHost:host port:'finger'.
+        sock isNil ifTrue:[
+            self warn:'no finger daemon is running'.
+            ^ self
+        ].
+        sock useCRLF:true.
+        sock buffered:false.
+        sock isNil ifTrue:[
+            Transcript showCR:'cannot connect to local finger daemon'
+        ] ifFalse:[
+            sock nextPutAll:(OperatingSystem getLoginName).
+            sock cr.
+
+            entry := sock nextLine.
+            Transcript showCR:entry.
+
+            sock close
+        ]
+                                                                        [exEnd]
 
     example (connect to an ftp server):
-									[exBegin]
-	|sock host|
-
-	host := OperatingSystem getHostName.
-	sock := Socket newTCPclientToHost:host port:'ftp'.
-
-	sock buffered:false.
-	Transcript showCR:sock nextLine.
-	sock nextPutAll:('USER ' , 'anonymous'); cr.
-	Transcript showCR:sock nextLine.
-	sock nextPutAll:('PASS ' , 'fooBar'); cr.
-	Transcript showCR:sock nextLine.
-	sock nextPutAll:'LIST'; cr.
-	Transcript showCR:sock nextLine.
-	sock close.
-
-	'dont know enough of the ftp protocol to continue here ...'
-									[exEnd]
+                                                                        [exBegin]
+        |sock host|
+
+        host := OperatingSystem getHostName.
+        sock := Socket newTCPclientToHost:host port:'ftp'.
+
+        sock buffered:false.
+        Transcript showCR:sock nextLine.
+        sock nextPutAll:('USER ' , 'anonymous'); cr.
+        Transcript showCR:sock nextLine.
+        sock nextPutAll:('PASS ' , 'fooBar'); cr.
+        Transcript showCR:sock nextLine.
+        sock nextPutAll:'LIST'; cr.
+        Transcript showCR:sock nextLine.
+        sock close.
+
+        'dont know enough of the ftp protocol to continue here ...'
+                                                                        [exEnd]
 
 
     example (connect to an snmp server [UDP]):
-									[exBegin]
-	|sock port|
-
-	sock := Socket newUDP.
-	port := Socket portOfService:'snmp'.
-	sock connectTo:(OperatingSystem getHostName) port:port.
-	sock buffered:false.
-	Transcript showCR:'got it'.
-	sock close.
-									[exEnd]
+                                                                        [exBegin]
+        |sock port|
+
+        sock := Socket newUDP.
+        port := Socket portOfService:'snmp'.
+        sock connectTo:(OperatingSystem getHostName) port:port.
+        sock buffered:false.
+        Transcript showCR:'got it'.
+        sock close.
+                                                                        [exEnd]
 
 
     example (await connection from a client and read some data):
-	|connectSock sock|
-
-	connectSock := Socket newTCPserverAtPort:9998.  
-	connectSock isNil ifTrue:[
-	    Transcript showCR:'socket setup failed.'.
-	] ifFalse:[
-	    Transcript showCR:'listen ..'.
-	    (connectSock listenFor:5) ifFalse:[
-		Transcript showCR:'listen failed.'.
-	    ] ifTrue:[
-		Transcript showCR:'wait'.
-		connectSock readWait.  
-		Transcript showCR:'accept'.
-		sock := connectSock accept.
-		sock isNil ifTrue:[
-		    Transcript showCR:'accept failed.'.
-		] ifFalse:[
-		    sock buffered:false.
-		    Transcript showCR:'server: got it'.
-		    'can now do transfer via sock'.
-		    Transcript showCR:'read'.
-		    Transcript showCR:('got: ' , sock nextLine).
-
-		    Transcript showCR:'close'.
-		    sock close
-		].
-		connectSock close.
-	    ]
-	]
+        |connectSock sock|
+
+        connectSock := Socket newTCPserverAtPort:9998.  
+        connectSock isNil ifTrue:[
+            Transcript showCR:'socket setup failed.'.
+        ] ifFalse:[
+            Transcript showCR:'listen ..'.
+            (connectSock listenFor:5) ifFalse:[
+                Transcript showCR:'listen failed.'.
+            ] ifTrue:[
+                Transcript showCR:'wait'.
+                connectSock readWait.  
+                Transcript showCR:'accept'.
+                sock := connectSock accept.
+                sock isNil ifTrue:[
+                    Transcript showCR:'accept failed.'.
+                ] ifFalse:[
+                    sock buffered:false.
+                    Transcript showCR:'server: got it'.
+                    'can now do transfer via sock'.
+                    Transcript showCR:'read'.
+                    Transcript showCR:('got: ' , sock nextLine).
+
+                    Transcript showCR:'close'.
+                    sock close
+                ].
+                connectSock close.
+            ]
+        ]
 
 
     example (connect to above server and send some data):
-	|sock|
-
-	sock := Socket newTCPclientToHost:(OperatingSystem getHostName) port:9998.
-	sock isNil ifTrue:[
-	    Transcript showCR:'nope'
-	] ifFalse:[
-	    sock buffered:false.
-	    Transcript showCR:'client: got it'.
-	    'can now do transfer via sock'.
-	    Transcript showCR:'sending <hello>'.
-	    sock nextPutLine:'hello'.
-	    sock close
-	]
+        |sock|
+
+        sock := Socket newTCPclientToHost:(OperatingSystem getHostName) port:9998.
+        sock isNil ifTrue:[
+            Transcript showCR:'nope'
+        ] ifFalse:[
+            sock buffered:false.
+            Transcript showCR:'client: got it'.
+            'can now do transfer via sock'.
+            Transcript showCR:'sending <hello>'.
+            sock nextPutLine:'hello'.
+            sock close
+        ]
 
     example: UNIX domain socket (await connection from a client and read some data):
 
-	|connectSock sock|
-
-	'/tmp/ud_socket' asFilename remove.
-	connectSock := Socket newUNIXserverAt:'/tmp/ud_socket'.  
-	connectSock isNil ifTrue:[
-	    Transcript showCR:'socket setup failed.'.
-	] ifFalse:[
-	    Transcript showCR:'listen ..'.
-	    (connectSock listenFor:5) ifFalse:[
-		Transcript showCR:'listen failed.'.
-	    ] ifTrue:[
-		Transcript showCR:'wait'.
-		connectSock buffered:false.
-		connectSock readWait.  
-		Transcript showCR:'accept'.
-		sock := connectSock accept.
-		sock isNil ifTrue:[
-		    Transcript showCR:'accept failed.'.
-		] ifFalse:[
-		    sock buffered:false.
-		    Transcript showCR:'server: got it'.
-		    'can now do transfer via sock'.
-		    Transcript showCR:'read'.
-		    Transcript showCR:('got: ' , sock nextLine).
-
-		    Transcript showCR:'close'.
-		    sock close
-		].
-		connectSock close.
-	    ]
-	]
+        |connectSock sock|
+
+        '/tmp/ud_socket' asFilename remove.
+        connectSock := Socket newUNIXserverAt:'/tmp/ud_socket'.  
+        connectSock isNil ifTrue:[
+            Transcript showCR:'socket setup failed.'.
+        ] ifFalse:[
+            Transcript showCR:'listen ..'.
+            (connectSock listenFor:5) ifFalse:[
+                Transcript showCR:'listen failed.'.
+            ] ifTrue:[
+                Transcript showCR:'wait'.
+                connectSock buffered:false.
+                connectSock readWait.  
+                Transcript showCR:'accept'.
+                sock := connectSock accept.
+                sock isNil ifTrue:[
+                    Transcript showCR:'accept failed.'.
+                ] ifFalse:[
+                    sock buffered:false.
+                    Transcript showCR:'server: got it'.
+                    'can now do transfer via sock'.
+                    Transcript showCR:'read'.
+                    Transcript showCR:('got: ' , sock nextLine).
+
+                    Transcript showCR:'close'.
+                    sock close
+                ].
+                connectSock close.
+            ]
+        ]
 
 
     example (connect to above server and send some data;
-	     Notice, this fails, if above server code is executed in the same ST/X image
-		     (at least on LINUX), since the OS does not correctly handle
-		     a connect from within an interrupted accept system call
-		     On SGI's SVR4, this works ok
-
-	|sock|
-
-	sock := Socket newUNIXclientTo:'/tmp/ud_socket'.
-	sock isNil ifTrue:[
-	    Transcript showCR:'nope'
-	] ifFalse:[
-	    sock buffered:false.
-	    Transcript showCR:'client: got it'.
-	    'can now do transfer via sock'.
-	    Transcript showCR:'sending <hello>'.
-	    sock nextPutLine:'hello'.
-	    sock close
-	]
+             Notice, this fails, if above server code is executed in the same ST/X image
+                     (at least on LINUX), since the OS does not correctly handle
+                     a connect from within an interrupted accept system call
+                     On SGI's SVR4, this works ok
+
+        |sock|
+
+        sock := Socket newUNIXclientTo:'/tmp/ud_socket'.
+        sock isNil ifTrue:[
+            Transcript showCR:'nope'
+        ] ifFalse:[
+            sock buffered:false.
+            Transcript showCR:'client: got it'.
+            'can now do transfer via sock'.
+            Transcript showCR:'sending <hello>'.
+            sock nextPutLine:'hello'.
+            sock close
+        ]
 
 
     example: pingWalk (try to ping hosts on the local network)
-									[exBegin]
-	|myName myAddress list top hosts walkProcess port|
-
-	myName := OperatingSystem getHostName.
-	myAddress := Socket ipAddressOfHost:myName.
-
-	port := Socket portOfService:'echo'.
-	port isNil ifTrue:[
-	    self error:'dont know echo port'.
-	    ^ self
-	].
-
-	top := StandardSystemView new.
-	top label:'PING net walk'.
-
-	list := ScrollableView for:ListView in:top.
-	list origin:0.0@0.0 corner:1.0@1.0.
-
-	top openAndWait.
-
-	walkProcess := [
-	    |l low hi direction tryHostID dottedName hostName conn addr|
-
-	    l := SortedCollection new.
-
-	    ' only works with type C-net
-	      the code below could simply do 1 to:254 do:[:hostID }
-	      but, to probe likely hosts earlier, the probing is done
-	      ping-pong like around my ip-address (assuming, that other machines
-	      have numbers around my own)'.
-
-	    low := hi := (myAddress at:4).
-	    direction := 1.
-
-	    [low > 0 or:[hi < 255]] whileTrue:[
-		direction > 0 ifTrue:[
-		    hi := hi + 1.
-		    tryHostID := hi.
-		    direction := -1.
-		] ifFalse:[
-		    low := low - 1.
-		    tryHostID := low.
-		    direction := 1.
-		].
-		(tryHostID between:1 and:254) ifTrue:[
-		    dottedName := (myAddress at:1) printString
-				  , '.' , (myAddress at:2) printString
-				  , '.' , (myAddress at:3) printString
-				  , '.' , tryHostID printString.
-
-		    top label:'PING net walk - trying ' , dottedName.
-
-		    top windowGroup withCursor:Cursor wait do:[
-			conn := Socket newTCPclientToHost:dottedName port:port withTimeout:1000.
-			conn notNil ifTrue:[
-			    addr := Socket ipAddressOfHost:dottedName.
-			    hostName := Socket hostWithIpAddress:addr.
-			    hostName isNil ifTrue:[
-				hostName :='?'
-			    ].
-			    l add:(dottedName paddedTo:15 with:Character space) 
-				   , ' ' 
-				   , (hostName paddedTo:15 with:Character space)
-				   , ' up & reachable'.
-			    list list:l.
-			    conn close.
-			]
-		    ].
-		].
-	    ].
-	    top label:'PING reachable hosts'.
-	] forkAt:(Processor userBackgroundPriority).
-	walkProcess name:'ping net walker'.
-									[exEnd]
+                                                                        [exBegin]
+        |myName myAddress list top hosts walkProcess port|
+
+        myName := OperatingSystem getHostName.
+        myAddress := Socket ipAddressOfHost:myName.
+
+        port := Socket portOfService:'echo'.
+        port isNil ifTrue:[
+            self error:'dont know echo port'.
+            ^ self
+        ].
+
+        top := StandardSystemView new.
+        top label:'PING net walk'.
+
+        list := ScrollableView for:ListView in:top.
+        list origin:0.0@0.0 corner:1.0@1.0.
+
+        top openAndWait.
+
+        walkProcess := [
+            |l low hi direction tryHostID dottedName hostName conn addr|
+
+            l := SortedCollection new.
+
+            ' only works with type C-net
+              the code below could simply do 1 to:254 do:[:hostID }
+              but, to probe likely hosts earlier, the probing is done
+              ping-pong like around my ip-address (assuming, that other machines
+              have numbers around my own)'.
+
+            low := hi := (myAddress at:4).
+            direction := 1.
+
+            [low > 0 or:[hi < 255]] whileTrue:[
+                direction > 0 ifTrue:[
+                    hi := hi + 1.
+                    tryHostID := hi.
+                    direction := -1.
+                ] ifFalse:[
+                    low := low - 1.
+                    tryHostID := low.
+                    direction := 1.
+                ].
+                (tryHostID between:1 and:254) ifTrue:[
+                    dottedName := (myAddress at:1) printString
+                                  , '.' , (myAddress at:2) printString
+                                  , '.' , (myAddress at:3) printString
+                                  , '.' , tryHostID printString.
+
+                    top label:'PING net walk - trying ' , dottedName.
+
+                    top windowGroup withCursor:Cursor wait do:[
+                        conn := Socket newTCPclientToHost:dottedName port:port withTimeout:1000.
+                        conn notNil ifTrue:[
+                            addr := Socket ipAddressOfHost:dottedName.
+                            hostName := Socket hostWithIpAddress:addr.
+                            hostName isNil ifTrue:[
+                                hostName :='?'
+                            ].
+                            l add:(dottedName paddedTo:15 with:Character space) 
+                                   , ' ' 
+                                   , (hostName paddedTo:15 with:Character space)
+                                   , ' up & reachable'.
+                            list list:l.
+                            conn close.
+                        ]
+                    ].
+                ].
+            ].
+            top label:'PING reachable hosts'.
+        ] forkAt:(Processor userBackgroundPriority).
+        walkProcess name:'ping net walker'.
+                                                                        [exEnd]
 "
 ! !
 
@@ -3996,5 +4000,5 @@
 !Socket class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.100 1997-10-10 13:01:38 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/Socket.st,v 1.101 1997-11-03 15:30:26 cg Exp $'
 ! !