![]() |
java socket programming question
I am trying to write a simple server and client in java to send text back and forth. The way it is written now, My client must wait for a response message each time it sends one before it can send another. Is there a way to check the input stream and if there is no data then move on? Right now it just sits and waits for new data when I try to check for it.
Thanks |
Man I wish I could help you but this is interesting. I am wanting to write this exact same thing.
|
Haha, it doesn't happen to be for a school project does it? :-P
|
No, but it may be in the future. I took a relatively simple java class last term and I may need to write some java apps for my senior project in a few terms.
Actually I just want to write a standalone application that can communicate over a network or tcp/ip. :-) |
Well, it turns out I can get away with going back and forth since the client and server are both console based, meaning that the client just send a message and then exits. As far as the asynchronise communication, I think it would be fine just to use 2 sockets on each end, one for send and one for receive. There are some kind of non-blocking java classes, but I have never used them.
|
As always, if it's Java-related, first thing to check is:
java.sun.com It has a great socket/server related tutorial with a "knock, knock, who's there?" joke server - client example (text based). Worth a read: http://java.sun.com/docs/books/tutor...ets/index.html have fun! |
sockets have a timeout property setable with setSoTimeout(int). it makes the socket's streams only block for so many milliseconds before continuing on....stick it in a while loop and let it go to town.
good luck. |
Wow thanks, that makes things a whole lot easier. :-)
|
Actually, when you set a timeout, and the socket doesn't get any response, it says it will throw an error. Is this a good way to deal with the problem? I had thought that I would need 2 pairs of sockets, one for send and one for receive.
|
There is a method for checking if a stream is empty, check the API.
However, it might be simpler to write a listening class and a sending class and multi-thread each side. Have a look at the examples under Knock Knock. |
checking if the stream is empty is hugely processor-intensive...itll run every available clock cycle if you give it a chance. using sotimeout throws a special timeout error that you can catch and ignore. writing a listening thread and a sending thread works as well.
|
All times are GMT -8. The time now is 09:38 AM. |
Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Optimization by vBSEO 3.6.0 PL2
© 2002-2012 Tilted Forum Project