<div>For whatever reason the Socket class did not include these (class methods) as examples, so I offer these:<br></div><div><br></div><div><div>---------------------------------------------Client-------------------------------------------------</div>
<div><br></div>remoteTestClientTCP</div><div><br>        &quot;FIRST start up another image, and execute: Socket remoteTestServerTCP.<br>        THEN come back to this image and execute:&quot;<br><br>        &quot;Socket remoteTestClientTCP&quot;<br>
<br>        &quot;Performa 6400/200, Linux-PPC 2.1.24, both images on same CPU:<br>                remoteClient TCP test done; time = 5680<br>                250 packets, 1000000 bytes sent (176 kBytes/sec)<br>                60 packets, 1000000 bytes received (176 kBytes/sec)&quot;<br>
<br>    | socket bytesToSend sendBuf receiveBuf done bytesSent bytesReceived packetsSent packetsReceived t |<br><br>       Smalltalk garbageCollect.<br><br>   Transcript show: &#39;starting client/server TCP test&#39;; cr.<br>
   Transcript show: &#39;initializing network ... &#39;.<br>   Transcript show: &#39;ok&#39;; cr.<br><br>   socket := Socket newTCP.<br>   socket connectTo: (NetNameResolver addressForName: &#39;localhost&#39;) port: 54321.<br>
      [<br>             socket waitForConnectionFor: self standardDeadline.<br>             Transcript show: &#39;client endpoint created&#39;;         cr.<br>             bytesToSend := 1000000.<br>             sendBuf := String new: 4000 withAll: $x.<br>
             receiveBuf := String new: 50000.<br>             done := false.<br>             bytesSent := bytesReceived := packetsSent := packetsReceived := 0.</div><div><br>             t := Time millisecondsToRun:[[done] whileFalse: <br>
                                                         [(socket sendDone and: [bytesSent &lt; bytesToSend]) ifTrue: <br>                                                                            [ packetsSent := packetsSent + 1.<br>                                                                              bytesSent := bytesSent + (socket sendData: sendBuf)].<br>                                                              socket dataAvailable ifTrue: <br>
                                                                                 [ packetsReceived := packetsReceived + 1.<br>                                                                                   bytesReceived := bytesReceived + (socket receiveDataInto: receiveBuf) ].<br>                                                              done := bytesSent &gt;= bytesToSend ].<br>
                                          [bytesReceived &lt; bytesToSend] whileTrue: <br>                                                              [ socket dataAvailable ifTrue: <br>                                                                                  [ packetsReceived := packetsReceived + 1.<br>                                                                                    bytesReceived := bytesReceived + (socket receiveDataInto: receiveBuf)]]].<br>
              socket closeAndDestroy.<br>             Transcript show: &#39;remoteClient TCP test done; time = &#39; , t printString; cr.<br>             Transcript<br>                      show: packetsSent printString , &#39; packets, &#39; , bytesSent printString , <br>
                   &#39; bytes sent (&#39; , (bytesSent * 1000 // t) printString , <br>                   &#39; bytes/sec)&#39;; cr.<br>             Transcript<br>                      show: packetsReceived printString , &#39; packets, &#39; , </div>
<div>          bytesReceived printString , &#39; bytes received (&#39; , <br>                                        (bytesReceived * 1000 // t) printString , &#39; bytes/sec)&#39;; cr.</div><div><br>  ] forkAt: Processor userBackgroundPriority.</div>
<div><br></div><div>---------------------------------------------Server-------------------------------------------------</div><div><br>remoteTestServerTCP</div><div><br>&quot;See remoteTestClientTCP for instructions on running this method.&quot;<br>
&quot;Socket remoteTestServerTCP&quot;<br><br>    | socket client buffer n |</div><div><br>   Transcript show: &#39;initializing network ... &#39;.<br>   self initializeNetwork.<br>   Transcript show: &#39;ok&#39;; cr.<br>
   socket := Socket newTCP.</div><div>   socket</div><div>       listenOn: 54321<br>              backlogSize: 5<br>              interface: (NetNameResolver addressForName: &#39;localhost&#39;).<br>        </div><div><br></div><div>    Transcript show: &#39;server endpoint created -- run client test in other image&#39;; cr.</div>
<div><br>    buffer := String new: 4000.<br>        <br>    [<br>               client := socket waitForAcceptFor: self standardDeadline.<br><br>          [ client isConnected] whileTrue: <br>                         [ client dataAvailable ifTrue: <br>
                                            [ n := client receiveDataInto: buffer.<br>                                              client sendData: buffer count: n ]].<br>            client closeAndDestroy.<br>            socket closeAndDestroy.<br>            Transcript cr; show: &#39;server endpoint destroyed&#39;; cr.</div>
<div><br></div><div>   ] forkAt: Processor userBackgroundPriority.<br><br></div>