Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 249
  • Last Modified:

Problem sending a value from a server to a client program (very basic)

I'm trying to send a String from a server program to a client program using writeUTF().

Follow the code below.
It connects to the server but wont read the message for some reason!  It gets to the "here 1" stage and goes no further.

Anyone got any ideas?
Thanks.

Heres my code:

*************************SERVER******************************
import java.net.*;
import java.io.*;
import java.util.*;

public class TestServer
{
      public static void main (String args[]) throws IOException
      {            
            ServerSocket server = new ServerSocket (9835);
            DataOutputStream out;
            Socket client = null;
            
            while (true)
            {
                  client = server.accept ();

                  //send to Client
                  out = new DataOutputStream (new BufferedOutputStream (client.getOutputStream ()));
                  out.writeUTF ("hi");
            }
      }
}

*******************************************************************

*************************CLIENT*************************************
import java.net.*;
import java.io.*;
import java.util.*;

class Test
{
      public static void main(String[] args)
      {
            DataInputStream i;

            try
            {
                  Socket s = new Socket("localhost", 9835);      
                  i = new DataInputStream (new BufferedInputStream (s.getInputStream()));  //create DataInputStream
                  System.out.println("here 1");

                  String number = i.readUTF ();
                  System.out.println("here 2");
                  System.out.println(number);
            } catch (Exception e) {
                  System.out.println(e); }
      }
}
*******************************************************************
0
credit
Asked:
credit
  • 2
1 Solution
 
searlasCommented:
You have a BufferedOutputStream on your server.  It may not have written the string before you are trying to read it, and so hangs.
Try this:
while (true)
          {
               client = server.accept ();

               //send to Client
               out = new DataOutputStream (new BufferedOutputStream (client.getOutputStream ()));
               out.writeUTF ("hi");
               out.flush();
               out.close();
          }
0
 
Tommy BraasCommented:
You always have to close() input and output streams when you're done with them, especially when it comes to network programming!
0
 
searlasCommented:
Yes.  And you should always flush output streams when you have finished sending a chunk of data (i.e. if you send some data, do intensive calculation, send more data... etc.)
0
 
creditAuthor Commented:
Got it working.
Thanks alot!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now