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