In the C world you need to set the SO_REUSEADDR option on
the datagram (UDP) socket.
The setReuseAddress() has been added to JDK 1.4 for this purpose.
I'm not sure how you can go about this in JDK1.2.
Alexander
On Sun, Sep 23, 2001 at 09:56:25PM -0700, Dustin Lang wrote:
>
> Hi,
>
> I checked the archives but didn't find anything that sounds like this...
>
> For a homework assignment I have to write a datagram-driven client and
> server pair. They are meant to be used by higher-level classes to handle
> the underlying communication.
>
> The client sends out numbered requests and waits for matching numbered
> responses. In order to handle multiple simultaneous requests, I have
> given the client a dedicated receiving thread. When a request is made,
> the requesting thread sends a packet from a DatagramSocket, adds itself to
> the list of waiting threads, and goes to sleep. When the receiving thread
> receives a matching response packet from the server, it wakes up the
> sleeping client.
>
> All this information is a bit extraneous, but the point is this: there are
> multiple threads using the same DatagramSocket for sends and receives. I
> was under the impression that this was a valid and reasonable thing to do.
>
> With JDK-1.2.2-FCS, I get strange behaviour. It seems that the receiver
> thread is okay until the sender thread does a send() on the DatagramSocket
> that the receiver is receive()-ing on. When this happens, the receiver
> thread gets a "SocketException: socket closed" exception. This seems
> strange because I did not connect() the socket, and I never call
> close() in my code - the socket gets reused.
>
> I created a smallish test class that demonstrates the behaviour. I ran it
> on a Solaris box and got the behaviour I think is correct. A small
> tarball containing the test source, output from running on my machine and
> the Solaris box, plus version information from the two JDKs is available:
>
> http://taz.cs.ubc.ca/~dustinl/socket-test.tar
>
> (By the way, the output is of the form "[ <thread name> <time (s)>]
> <message>". )
>
> This is on kernel 2.2.19, libc 2.1.3, jdk 1.2.2-fcs, native
> threads/sunwjit and green threads.
>
> Thanks for your help!
> dstn.
>
>
> ----------------------------------------------------
> -- Dustin Lang, [EMAIL PROTECTED] --
> User, n.: a particularly slow and unreliable input/
> output device that is attached by default to the
> standard input and output streams.
> ----------------------------------------------------
>
>
>
>
> ----------------------------------------------------------------------
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
----------------------------------------------------------------------
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]