![]() |
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 |
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() ) |
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 07:13 AM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
SEO by vBSEO 3.6.0 ©2011, Crawlability, Inc.
Copyright © 2020 Gnutella Forums.
All Rights Reserved.