Gnutella Forums

Gnutella Forums (https://www.gnutellaforums.com/)
-   General Gnutella Development Discussion (https://www.gnutellaforums.com/general-gnutella-development-discussion/)
-   -   Question about java.net.SocketException (https://www.gnutellaforums.com/general-gnutella-development-discussion/18072-question-about-java-net-socketexception.html)

lut321 December 20th, 2002 10:13 AM

Question about java.net.SocketException
 
Hi,
I am developing a Gnutella network Crawler in Java (version 1.4). To make sure that my crawler is healthy to the network, I am trying to make it behave exactly like a normal Gnutella client (responding to Ping, Pong, Query, Query Hit messages according to the protocol).
My program is working, but I think there are some bugs. When I forward messages, sometime it throws the following Exceptions:
java.net.SocketException: Software caused connection abort: socket write error
at java.net.SocketOutputStream.socketWrite0(Native Method)
at java.net.SocketOutputStream.socketWrite(SocketOutp utStream.java:92)
at java.net.SocketOutputStream.write(SocketOutputStre am.java:136)
at java.io.DataOutputStream.write(DataOutputStream.ja va:85)
All I did for forwarding a message is to convert the message to byte array and call socket.getDataOutputStream.write(bytearray), then socket.getDataOutputStream.flush(); This send() method and any other methods that manipulate the socket are declared as synchronized. Before I actually call the write() and flush methods, i checked (socket!=null && !socket.closed() && !socket.isOutputClosed(). I spent a lot of time trying to debug, but didn't get anywhere.
I would really appreciate any comment and help.
Thanks,
Lu

cultiv8r December 23rd, 2002 08:38 PM

Are you checking the result for write() before you do a flush()? Also, I think that if you try to write zero bytes, it'll give the same error message (ie, you didn't check the result for read() )

lut321 December 24th, 2002 10:59 AM

Hi,
Thank you Cultiv8r for your reply. I will check if I am trying to write 0 byte. But i am not sure how can I check the result for write(). this method returns void.
Thanks.
Lu


All times are GMT -7. The time now is 10:44 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.

Copyright © 2020 Gnutella Forums.
All Rights Reserved.