[Cuis-dev] finding an open port
Jon Raiford
raiford at labware.com
Thu Oct 24 09:45:18 PDT 2024
For what it’s worth, the way I looked at his code was that the “listenOn: port” should have thrown an RTE as the OS knows immediately that the port is not available. Of course Mark’s code below doesn’t handle errors there, but that would have been resolved during debugging. Whether or not the rest of the code is sane is another matter entirely 😊.
Jon
From: Cuis-dev <cuis-dev-bounces at lists.cuis.st> on behalf of Gerald Klix via Cuis-dev <cuis-dev at lists.cuis.st>
Date: Thursday, October 24, 2024 at 12:25 PM
To: cuis-dev at lists.cuis.st <cuis-dev at lists.cuis.st>
Cc: Gerald Klix <cuis.01 at klix.ch>
Subject: Re: [Cuis-dev] finding an open port
Dear Mark,
why in name of Alan (Perlis) do you expect a connection to your newly
created server socket pop out of nowhere?
Increase the time out to 60 in `connected := socket
waitForConnectionFor: 1 ifTimedOut: [ false ].`,
send the #openPortFrom: message to your object.
Switch to Terminal window, and start telnet like this
`telnet 127.0.0.1<http://127.0.0.1> 3000` and marvel at the results.
Sorry for my harsh words: This issue has nothing to do with Cuis,
but a lot with socket, bind and listen.
See man 2 bind, man 2 listen
Just my 0,01€,
Gerald
On 10/24/24 2:29 AM, Mark Volkmann via Cuis-dev wrote:
> I wrote the following code to take a port number and return the first port
> starting from that number that is open. For example, if ports 3000 and 3001
> are in use and I send "MyClass openPortFrom: 3000" then I expect it to
> return 3002. Can you spot why this never finds an open port and loops
> forever?
>
> openPortFrom: aNumber
> | connected port socket |
>
> connected := false.
> port := aNumber.
>
> [ connected ] whileFalse: [
> 'trying port {1}' format: { port } :: print.
> socket := Socket newTCP.
> socket listenOn: port.
> connected := socket waitForConnectionFor: 1 ifTimedOut: [ false ].
> connected ifTrue: [socket disconnect] ifFalse: [ port := port + 1 ].
> ].
>
> ^port.
>
>
--
Cuis-dev mailing list
Cuis-dev at lists.cuis.st
https://lists.cuis.st/mailman/listinfo/cuis-dev<https://lists.cuis.st/mailman/listinfo/cuis-dev>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20241024/837ebff4/attachment.htm>
More information about the Cuis-dev
mailing list