Thank you very much Sven, I think this must be include in the pharo book, 
because it was hard to find good examples.


Cheers.


On Apr 21, 2011, at 08:22 , Sven Van Caekenberghe wrote:

> Oscar,
> 
> This is how I would write it, using first SocketStreams (which is better for 
> most users) and then plain Sockets. This works for me on Pharo 1.2.2 and 1.3.
> 
> HTH,
> 
> Sven
> 
> 
>       | serverSocket dataSent dataRead clientStream semaphore |
>       semaphore := Semaphore new.
>       serverSocket := Socket newTCP listenOn: 9191 backlogSize: 5.   
>       [ [ | clientSocket serverStream |
>       clientSocket := serverSocket waitForAcceptFor: 10.
>       serverStream := SocketStream on: clientSocket.
>       dataRead := serverStream upToEnd.
>       serverStream close.
>       semaphore signal ] ensure: [ serverSocket close ] ] forkAt: Processor 
> userBackgroundPriority.
>       (Delay forMilliseconds: 100) wait.
>       dataSent := 'Hello there!'.
>       clientStream := SocketStream openConnectionToHostNamed: 'localhost' 
> port: 9191.
>       clientStream nextPutAll: dataSent.
>       clientStream close.
>       semaphore wait.
>       self assert: dataSent = dataRead.
>       dataRead
> 
> 
> 
>       | serverSocket clientSocket dataSent dataRead semaphore |
>       semaphore := Semaphore new.
>       serverSocket := Socket newTCP listenOn: 9191 backlogSize: 5.   
>       [ [ | clientConnectionSocket |
>       clientConnectionSocket := serverSocket waitForAcceptFor: 10.
>       dataRead := clientConnectionSocket receiveData.
>       clientConnectionSocket close.
>       semaphore signal ] ensure: [ serverSocket close ] ] forkAt: Processor 
> userBackgroundPriority.
>       (Delay forMilliseconds: 100) wait.
>       dataSent := 'Hello there!'.
>       clientSocket := Socket newTCP connectToHostNamed: 'localhost' port: 
> 9191.
>       clientSocket sendData: dataSent.
>       clientSocket close.
>       semaphore wait.
>       self assert: dataSent = dataRead.
>       dataRead
> 
> 
> 
> On 21 Apr 2011, at 15:04, Oscar E A Callau wrote:
> 
>> 
>> Thanks all for your comments.
>> 
>> On Apr 21, 2011, at 07:13 , Sven Van Caekenberghe wrote:
>>> 
>>> I think the problem might be the #listenOn: 
>>> I use #listenOn:backlogSize:
>>> These are using different primitives.
>> 
>> I tested with #listenOn:backlogSize: too, with the same result, error on 
>> #waitForAcceptFor: .
>> 
>> Cheers
>> 
>> 
> 


Reply via email to