Simple TCP Client Program Problems

The Code:
import java.io.*;
import java.net.*;
class TCPClient {
     public static void main(String argv[]) throws Exception
          String sentence;
          String modifiedSentence;
          BufferedReader inFromUser = new BufferedReader(
               new InputStreamReader(System.in));
          Socket clientSocket = new Socket("www.utm.edu", 80);
          DataOutputStream outToServer = new DataOutputStream(
               clientSocket.getOutputStream());
          BufferedReader inFromServer =
               new BufferedReader(new InputStreamReader(
                    clientSocket.getInputStream()));
          sentence = inFromUser.readLine();
          outToServer.writeBytes(sentence + "\r\n");
          modifiedSentence = inFromServer.readLine();
          System.out.println("FROM SERVER: " +
                                   modifiedSentence);
          clientSocket.close();
So...when the program loads the console...I type
GET /staff/bbradley/200640/cs360/test1.txt
And I'm supposed to get what's at the URL:
http://www.utm.edu/staff/bbradley/200640/cs360/test1.txt
But Instead I just get the first line of the text...any ideas?

Change the code to
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String argv[]) throws Exception
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(
new InputStreamReader(System.in));
Socket clientSocket = new Socket("www.utm.edu", 80);
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(new InputStreamReader(
clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + "\r\n");
modifiedSentence = inFromServer.readLine();
while(modifiedSentence!=null)
System.out.println("FROM SERVER: " +
modifiedSentence);
modifiedSentence = inFromServer.readLine();
clientSocket.close();
}

Similar Messages

  • Ftp Client program problem ...

    Hi all .
    I m trying to develope a simple FTP client program which will connect to the FTP server for download a file .. Now in the start i m just trying to get the current directory of the server using -- pwd -- command . My programs executes correct , but the Temporary file in which i m trying to store the outpur from server displays INVALID COMMAND (for my command) - and INVALID LOGIN (for user name) ---. What i think is there is a prlem with the syntax of my FTP configuration file .
    There are three files in the program:
    1.FTPClient.java
    2.ftp.txt (FTP Configuration File)
    3.temp.txt (File for storing the output from server)
    ----------- code for the JAVA file --------
    import java.net.*;
    import java.io.*;
    public class FtpClient {
    public static void main(String args[]) {
    try {
    Runtime rt = Runtime.getRuntime();
    String tempFile = "temp.txt";
    Process pr = rt.exec("ftp -s:ftp.txt 190.166.1.9");
    PrintStream out = new PrintStream(new FileOutputStream(tempFile),true);
    BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
    String line;
    while((line=in.readLine()) != null)
    out.println(line);
    out.flush();
    out.close();
    in.close();
    pr.destroy();
    } //closes try
    catch (Exception e)
    {System.out.println(e.toString());}
    } // closes main
    -------------------- my FTP Configuration File (ftp.txt) -------------
    USER <computer>
    PASS <javame>
    pwd
    BYE
    ------------OUT PUT in my temp.txt FILE -----------
    User (190.166.1.9:(none)):
    Login incorrect.
    Invalid command.
    <javame>
    pwd
    530 Please login with USER and PASS.
    BYE

    Cross post
    http://forum.java.sun.com/thread.jspa?threadID=595231&messageID=3139200#3139200

  • Simple TCP Chat program behid router

    Hello, I've been reading some of the examples from http://pirate.shu.edu/~wachsmut/Teaching/CSAS2214/Virtual/Lectures/chat-client-server.html, and understand how these examples work well enough to fool around with it...
    I have it working inside my local network (behind a router), but when I try to have someone from outside my network connect to my server, they are unable to connect. I used IPchicken to determine which IP to give them.
    What do I need to do to get this working behind routers?
    Thanks for any time taken.

    DeshBanks wrote:
    I figured it out, it looks like.
    I had to login to my router and configure virtual routing (or something like that - I think it is basically port forwarding) on a specific port to my machine on the private network. I then had to 'allow' this port in my firewall.Hence my advice in reply 1 to google for port forwarding and check out your router's manual.

  • TCP Client Program hangs up! Please help

    Hi,
    I'm trying to send a sudio file from server to client. Before starting to send the file I take the system time at the server and send it to client. For this I use the following code.
    At Client:
    DataInputStream inFromServer2 = new DataInputStream(clientSocket.getInputStream());
    long begin_time = inFromServer2.readLong();
    System.out.println("FROM SERVER: "+begin_time);
    At Server:
    begin_time = System.currentTimeMillis();
    System.out.println("begin_time="+begin_time);
    outToClient.writeLong(begin_time);
    It takes the system time correctly at the server but when it sends to client it gives me some negative number. Sometimes the client just hangs up after coming to this statement.
    Can anyone please figure out what am I doing wrong
    Thanks a lot.

    Perhaps the output never gets packaged into a packet and sent to the client, try adding the line:
    outToClient.flush();To your Server source.
    -Jason Thomas.

  • Help with MIDlets - TCP client server program

    Hi I am new to using MIDlets, and I wanted to create a simple TCP client server program.. I found a tutorial in J2me forums and I am able to send a single message from server(PC) to client(Phonemulator) and from client to server. But I want to send a stream of messages to the server. Here is my program and I am stuck in the last step wher i want to send lot of messages to server. Here is my program, Could any one of u tell me how to do it? Or where am i going wrong in thsi pgm?
    Code:
    import java.io.InputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import javax.microedition.io.Connector;
    import javax.microedition.io.SocketConnection;
    import javax.microedition.io.StreamConnection;
    import javax.microedition.lcdui.Alert;
    import javax.microedition.lcdui.AlertType;
    import javax.microedition.lcdui.Command;
    import javax.microedition.lcdui.CommandListener;
    import javax.microedition.lcdui.Display;
    import javax.microedition.lcdui.Displayable;
    import javax.microedition.lcdui.Form;
    import javax.microedition.lcdui.StringItem;
    import javax.microedition.lcdui.TextField;
    import javax.microedition.midlet.MIDlet;
    import javax.microedition.midlet.MIDletStateChangeExcepti on;
    public class SocketMIDlet extends MIDlet
    implements CommandListener, Runnable {
    private Display display;
    private Form addressForm;
    private Form connectForm;
    private Form displayForm;
    private TextField serverName;
    private TextField serverPort;
    private StringItem messageLabel;
    private StringItem errorLabel;
    private Command okCommand;
    private Command exitCommand;
    private Command backCommand;
    protected void startApp() throws MIDletStateChangeException {
    if (display == null) {
    initialize();
    display.setCurrent(addressForm);
    protected void pauseApp() {
    protected void destroyApp(boolean unconditional)
    throws MIDletStateChangeException {
    public void commandAction(Command cmd, Displayable d) {
    if (cmd == okCommand) {
    Thread t = new Thread(this);
    t.start();
    display.setCurrent(connectForm);
    } else if (cmd == backCommand) {
    display.setCurrent(addressForm);
    } else if (cmd == exitCommand) {
    try {
    destroyApp(true);
    } catch (MIDletStateChangeException ex) {
    notifyDestroyed();
    public void run() {
    InputStream is = null;
    OutputStream os = null;
    StreamConnection socket = null;
    try {
    String server = serverName.getString();
    String port = serverPort.getString();
    String name = "socket://" + server + ":" + port;
    socket = (StreamConnection)Connector.open(name, Connector.READ_WRITE);
    } catch (Exception ex) {
    Alert alert = new Alert("Invalid Address",
    "The supplied address is invalid\n" +
    "Please correct it and try again.", null,
    AlertType.ERROR);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert, addressForm);
    return;
    try {
    // Send a message to the server
    String request = "Hello\n\n";
    //StringBuffer b = new StringBuffer();
    os = socket.openOutputStream();
    //for (int i=0;i<10;i++)
    os.write(request.getBytes());
    os.close();
    // Read the server's reply, up to a maximum
    // of 128 bytes.
    is = socket.openInputStream();
    final int MAX_LENGTH = 128;
    byte[] buf = new byte[MAX_LENGTH];
    int total = 0;
    while (total<=5)
    int count = is.read(buf, total, MAX_LENGTH - total);
    if (count < 0)
    break;
    total += count;
    is.close();
    String reply = new String(buf, 0, total);
    messageLabel.setText(reply);
    socket.close();
    display.setCurrent(displayForm);
    } catch (IOException ex) {
    Alert alert = new Alert("I/O Error",
    "An error occurred while communicating with the server.",
    null, AlertType.ERROR);
    alert.setTimeout(Alert.FOREVER);
    display.setCurrent(alert, addressForm);
    return;
    } finally {
    // Close open streams and the socket
    try {
    if (is != null) {
    is.close();
    is = null;
    } catch (IOException ex1) {
    try {
    if (os != null) {
    os.close();
    os = null;
    } catch (IOException ex1) {
    try {
    if (socket != null) {
    socket.close();
    socket = null;
    } catch (IOException ex1) {
    private void initialize() {
    display = Display.getDisplay(this);
    // Commands
    exitCommand = new Command("Exit", Command.EXIT, 0);
    okCommand = new Command("OK", Command.OK, 0);
    backCommand = new Command("Back", Command.BACK, 0);
    // The address form
    addressForm = new Form("Socket Client");
    serverName = new TextField("Server name:", "", 256, TextField.ANY);
    serverPort = new TextField("Server port:", "", 8, TextField.NUMERIC);
    addressForm.append(serverName);
    addressForm.append(serverPort);
    addressForm.addCommand(okCommand);
    addressForm.addCommand(exitCommand);
    addressForm.setCommandListener(this);
    // The connect form
    connectForm = new Form("Connecting");
    messageLabel = new StringItem(null, "Connecting...\nPlease wait.");
    connectForm.append(messageLabel);
    connectForm.addCommand(backCommand);
    connectForm.setCommandListener(this);
    // The display form
    displayForm = new Form("Server Reply");
    messageLabel = new StringItem(null, null);
    displayForm.append(messageLabel);
    displayForm.addCommand(backCommand);
    displayForm.setCommandListener(this);

    Hello all,
    I was wondering if someone found a solution to this..I would really appreciate it if u could post one...Thanks a lot..Cheerz

  • TCP client server sample

    All,
    This may not really be a LabWindows/CVI question but I'm really stuck on what should be easy to
    solve. The brain trust here on the forums has always been helpful so I'll try to explain.
    The project:
    Get LabWindows/CVI code talking to a muRata SN8200 embedded WiFi module.
    The setup:
    (running Labwindows/CVI 2009)
    Computer 1 -- (with a wireless NiC) running simple demo TCP server program provided by muRata.
    Computer 2 -- USB connection (virtual COM port) with simple program (also provided by muRata) that talks to the SN8200 embedded WiFi module.  This code along with the module creates a simple TCP client.
    Whats working:
    I can successfuly get the Computer 2 client connected to and talking to the Computer 1 server. (using the muRata supplied code)
    I can also run the LabWindows/CVI sample code from (\CVI2009\samples\tcp), server on computer 1 & client on computer 2 and they talk with no problems.
    (I'm using the same IP addresses and port numbers in all cases)
    Whats NOT working:
    Run the CVI server program on computer 1.
    I cannot get the muRata client program  to connect to the CVI server.
    I also tried get the CVI client program to connect to the muRata server.  No luck that way either. The CVI client sample program trys connect, and this function call:
    ConnectToTCPServer (&g_hconversation, portNum, tempBuf, ClientTCPCB, NULL, 5000 );
    returns with a timeout error code (-11).
    What I need:
    Some ideas on how to get this working.
    Is there something unique about the LabWindows/CVI sample client/server demo code that would make them incompatible with the muRata code?
    Can you think of some ways I can debug this further?  I feel like I'm kind of running blind.
    What else can I look at?
    For those that have read this far, thanks much and any ideas or comments will be appreciated,
    Kirk

    Humphrey,
    First,
    I just figured out what the problem is:
    When I was trying to use the CVI sample server I was entering the wrong port number.
    The reason I entered the wrong port was because the hard-coded port number in the muRata demo code was displayed in hex as 0x9069. ( I converted this to decimal and entered it into the CVI sample server code) The correct port number was 0x6990.  (upper and lower bytes swapped)  Arrgh!
    I found the problem by using the netstat command line utility to display the connections and noted that the port being used was not 0x9069.  It is really a problem with the muRata eval kit demo code.
    Second,
    Humphrey you are right about the CVI sample code not handling all the muRata commands for the client end of the connection that communicates with the SN8200 module.  For my test I was using the muRata code for that "end".
    The server end is simple and the CVI sample is adequate and is now working.
    Thank you to all who took the time to browse my questions,
    Kirk

  • Not able to run the client program

    I have written a simple example to print a string using EJB on weblogic 6.0
    I have written a simple RMI client program .
    when i run that program it is throwing an remote exception saying that connection refused to host..
    pls help me
    redgs
    aaag555

    Have you set the jndi.properties right?
    You'll need to specify username and password correctly....

  • How to program the simple tcp/ip connection?

    I would like to know how to program in labview the simple tcp/ip connetion.
    And is there some site with examples.

    Luciano Kan Horiuchi wrote:
    > I would like to know how to program in labview the simple tcp/ip connetion.
    > And is there some site with examples.
    You should probably start with the examples that ship with LabVIEW. For a good
    server-to-single-client example, check out Data Client.vi and Data Server.vi
    from the shipping examples, and for a good server-to-multiple-client example,
    try the Date Client.vi/Date Server.vi pair instead. All of these can be found
    in the following VI library:
    \examples\comm\tcpex.llb
    or via the Search Examples interface in LabVIEW. There are certainly
    additional examples on the NI site, but there's no better place to start than
    with these.
    Regards,
    John Lum

  • Problems with a simple stop watch program

    I would appreciate help sorting out a problem with a simple stop watch program. The problem is that it throws up inappropriate values. For example, the first time I ran it today it showed the best time at 19 seconds before the actual time had reached 2 seconds. I restarted the program and it ran correctly until about the thirtieth time I started it again when it was going okay until the display suddenly changed to something like '-50:31:30:50-'. I don't have screenshot because I had twenty thirteen year olds suddenly yelling at me that it was wrong. I clicked 'Stop' and then 'Start' again and it ran correctly.
    I have posted the whole code (minus the GUI section) because I want you to see that the program is very, very simple. I can't see where it could go wrong. I would appreciate any hints.
    public class StopWatch extends javax.swing.JFrame implements Runnable {
        int startTime, stopTime, totalTime, bestTime;
        private volatile Thread myThread = null;
        /** Creates new form StopWatch */
        public StopWatch() {
         startTime = 0;
         stopTime = 0;
         totalTime = 0;
         bestTime = 0;
         initComponents();
        public void run() {
         Thread thisThread = Thread.currentThread();
         while(myThread == thisThread) {
             try {
              Thread.sleep(100);
              getEnd();
             } catch (InterruptedException e) {}
        public void start() {
         if(myThread == null) {
             myThread = new Thread(this);
             myThread.start();
        public void getStart() {
         Calendar now = Calendar.getInstance();
         startTime = (now.get(Calendar.MINUTE) * 60) + now.get(Calendar.SECOND);
        public void getEnd() {
         Calendar now1 = Calendar.getInstance();
         stopTime = (now1.get(Calendar.MINUTE) * 60) + now1.get(Calendar.SECOND);
         totalTime = stopTime - startTime;
         setLabel();
         if(bestTime < totalTime) bestTime = totalTime;
        public void setLabel() {
         if((totalTime % 60) < 10) {
             jLabel1.setText(""+totalTime/60+ ":0"+(totalTime % 60));
         } else {
             jLabel1.setText(""+totalTime/60 + ":"+(totalTime % 60));
         if((bestTime % 60) < 10) {
             jLabel3.setText(""+bestTime/60+ ":0"+(bestTime % 60));
         } else {
             jLabel3.setText(""+bestTime/60 + ":"+(bestTime % 60));
        private void ButtonClicked(java.awt.event.ActionEvent evt) {                              
         JButton temp = (JButton) evt.getSource();
         if(temp.equals(jButton1)) {
             start();
             getStart();
         if(temp.equals(jButton2)) {
             getEnd();
             myThread = null;
         * @param args the command line arguments
        public static void main(String args[]) {
         java.awt.EventQueue.invokeLater(new Runnable() {
             public void run() {
              new StopWatch().setVisible(true);
        // Variables declaration - do not modify                    
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JPanel jPanel1;
        // End of variables declaration                  
    }

    Although I appreciate this information, it still doesn't actually solve the problem. I can't see an error in the logic (or the code). The fact that the formatting works most of the time suggests that the problem does not lie there. As well, I use the same basic code for other time related displays e.g. countdown timers where the user sets a maximum time and the computer stops when zero is reached. I haven't had an error is these programs.
    For me, it is such a simple program and the room for errors seem small. I am guessing that I have misunderstood something about dates, but I obviously don't know.
    Again, thank you for taking the time to look at the problem and post a reply.

  • Problem while running client program in Netbeans4.0

    Hi,
    I am facing the following problem while running a client program in Nebeans4.0.
    An unexpected exception has been detected in native code outside the VM.
    Unexpected Signal : EXCEPTION_ACCESS_VIOLATION (0xc0000005) occurred at PC=0x7C9012B4
    Function=RtlInitAnsiString+0x1B
    Library=C:\WINDOWS\system32\ntdll.dll
    Current Java thread:
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:770)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1059)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1009)
    at java.net.InetAddress.getAllByName0(InetAddress.java:981)
    at java.net.InetAddress.getAllByName(InetAddress.java:975)
    at weblogic.rjvm.RJVMFinder.getDnsEntries(RJVMFinder.java:370)
    at weblogic.rjvm.RJVMFinder.findOrCreate(RJVMFinder.java:181)
    - locked <0x1007ff78> (a weblogic.rjvm.RJVMFinder)
    at weblogic.rjvm.ServerURL.findOrCreateRJVM(ServerURL.java:125)
    at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:291)
    at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:234)
    at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:135)
    at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:662)
    at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:243)
    at javax.naming.InitialContext.init(InitialContext.java:219)
    at javax.naming.InitialContext.<init>(InitialContext.java:195)
    at AcfClient.getHomeRef(AcfClient.java:73)
    at AcfClient.forceSession(AcfClient.java:43)
    at AcfClient.main(AcfClient.java:34)
    Dynamic libraries:
    0x00400000 - 0x00406000      C:\Data\j2sdk1.4.2_04\jre\bin\java.exe
    0x7C900000 - 0x7C9B0000      C:\WINDOWS\system32\ntdll.dll
    0x7C800000 - 0x7C8F4000      C:\WINDOWS\system32\kernel32.dll
    0x77DD0000 - 0x77E6B000      C:\WINDOWS\system32\ADVAPI32.dll
    0x77E70000 - 0x77F01000      C:\WINDOWS\system32\RPCRT4.dll
    0x77C10000 - 0x77C68000      C:\WINDOWS\system32\MSVCRT.dll
    0x08000000 - 0x08138000      C:\Data\j2sdk1.4.2_04\jre\bin\client\jvm.dll
    0x77D40000 - 0x77DD0000      C:\WINDOWS\system32\USER32.dll
    0x77F10000 - 0x77F56000      C:\WINDOWS\system32\GDI32.dll
    0x76B40000 - 0x76B6D000      C:\WINDOWS\system32\WINMM.dll
    0x6BD00000 - 0x6BD0D000      C:\WINDOWS\system32\SYNCOR11.DLL
    0x10000000 - 0x10007000      C:\Data\j2sdk1.4.2_04\jre\bin\hpi.dll
    0x00390000 - 0x0039E000      C:\Data\j2sdk1.4.2_04\jre\bin\verify.dll
    0x003B0000 - 0x003C9000      C:\Data\j2sdk1.4.2_04\jre\bin\java.dll
    0x003D0000 - 0x003DD000      C:\Data\j2sdk1.4.2_04\jre\bin\zip.dll
    0x02DA0000 - 0x02DAF000      C:\Data\j2sdk1.4.2_04\jre\bin\net.dll
    0x71AB0000 - 0x71AC7000      C:\WINDOWS\system32\WS2_32.dll
    0x71AA0000 - 0x71AA8000      C:\WINDOWS\system32\WS2HELP.dll
    0x71A50000 - 0x71A8F000      C:\WINDOWS\System32\mswsock.dll
    0x76F20000 - 0x76F47000      C:\WINDOWS\system32\DNSAPI.dll
    0x76FB0000 - 0x76FB8000      C:\WINDOWS\System32\winrnr.dll
    0x76F60000 - 0x76F8C000      C:\WINDOWS\system32\WLDAP32.dll
    0x66210000 - 0x66219000      C:\WINDOWS\system32\netware\NWWS2NDS.DLL
    0x50D50000 - 0x50D95000      C:\WINDOWS\system32\NETWIN32.DLL
    0x50D00000 - 0x50D15000      C:\WINDOWS\system32\CLNWIN32.DLL
    0x50DF0000 - 0x50E10000      C:\WINDOWS\system32\LOCWIN32.DLL
    0x50DB0000 - 0x50DD9000      C:\WINDOWS\system32\NCPWIN32.dll
    0x71AD0000 - 0x71AD9000      C:\WINDOWS\system32\WSOCK32.dll
    0x66220000 - 0x6622C000      C:\WINDOWS\system32\netware\NWWS2SLP.DLL
    0x1C000000 - 0x1C007000      C:\WINDOWS\system32\NWSRVLOC.dll
    0x76C90000 - 0x76CB8000      C:\WINDOWS\system32\imagehlp.dll
    0x59A60000 - 0x59B01000      C:\WINDOWS\system32\DBGHELP.dll
    0x77C00000 - 0x77C08000      C:\WINDOWS\system32\VERSION.dll
    0x76BF0000 - 0x76BFB000      C:\WINDOWS\system32\PSAPI.DLL
    Heap at VM Abort:
    Heap
    def new generation total 576K, used 497K [0x10010000, 0x100b0000, 0x104f0000)
    eden space 512K, 89% used [0x10010000, 0x10083158, 0x10090000)
    from space 64K, 57% used [0x100a0000, 0x100a9478, 0x100b0000)
    to space 64K, 0% used [0x10090000, 0x10090000, 0x100a0000)
    tenured generation total 1408K, used 129K [0x104f0000, 0x10650000, 0x14010000)
    the space 1408K, 9% used [0x104f0000, 0x10510438, 0x10510600, 0x10650000)
    compacting perm gen total 4096K, used 2122K [0x14010000, 0x14410000, 0x18010000)
    the space 4096K, 51% used [0x14010000, 0x14222828, 0x14222a00, 0x14410000)
    Local Time = Fri Aug 26 10:26:03 2005
    Elapsed Time = 2
    # The exception above was detected in native code outside the VM
    # Java VM: Java HotSpot(TM) Client VM (1.4.2_04-b05 mixed mode)
    # An error report file has been saved as hs_err_pid1280.log.
    # Please refer to the file for further information.
    Can anyone pls let me know what could be the problem.
    Thanks in adv.

    Hi,
    This type of error
    java.lang.NoClassDefFoundError: javax/naming/Context
    will occur when the client program could not able to locate lib/j2EE.jar file.
    So set the classpath correctly and make sure that you have correctly defined the JAVA_HOME environment variable in .bat script.
    Hope this will help you.
    Regards,
    Anil.
    Technical Support Engineer.

  • HTTP Client/Server program problems

    Hi all,
    I am doing an exercise in which I create a Client and Server program. I send a GET request but nothing seems to happen. There is obviously something I'm missing. Could it be a badly formed request? The code is below. Any help is appreciated.
    Client program.....
    import java.io.*;
    import java.net.*;
    import java.util.StringTokenizer;
    public class HTTPClient{
        String host, path;
        int port;
        public static void main (String argv[]){
         new HTTPClient(argv[0]);
        public HTTPClient(String url){
         try{
             URL myURL = new URL(url);
             host = myURL.getHost();
             port = myURL.getPort();
             System.out.println("Port = " + port);
             if (port == -1) port = 30280;;
             path = myURL.getPath();
             if (path.equals("")) path =  "/";
             Socket s = new Socket(InetAddress.getByName(host), port);
             sendRequest(s.getOutputStream());
             printResponse(s.getInputStream());
             s.close();
         catch(MalformedURLException murl){
             System.out.println("Badly formatted URL " + murl.getMessage());
         catch(IOException e){
             System.out.println("Problem initialising socket " + e.getMessage());
        public void sendRequest(OutputStream out){
              StringBuffer buf = new StringBuffer();
              buf.append("GET /AC095.html HTTP/1.1\r\n");
              buf.append("Host: http://students.odl.qmul.ac.uk\r\n\r\n");
              try{
                   out.write(buf.toString().getBytes("US-ASCII"));
              catch (IOException e) {System.out.println(e.getMessage());
        public void printResponse(InputStream in){
             try{
                  while (in.available() <= 0)
                  Thread.sleep(500);
                  while (in.available() > 0)
                  System.out.print((char) in.read());
                  System.out.println ("");
             catch (IOException e) {
                  System.out.println(e.getMessage());
             catch (InterruptedException ie) {
                  System.out.println("Error waiting for response " + ie.getMessage());
         /* Read in the response from the HTTP server and print it out */
    }Server code......
    import java.io.*;
    import java.net.*;
    import java.util.*;
    public class HTTPServer{
        String version = null;
         public String httpVer;
        public static void main(String argv[]){
         new HTTPServer(Integer.parseInt(argv[0]));
        public HTTPServer(int port){
         boolean listening = true;
         try{
              ServerSocket ss = new ServerSocket(port);
              System.out.println("HTTP Server running and listening for requests...");
              while (listening){
               Socket mySocket = ss.accept();
               InputStream in   = mySocket.getInputStream();
               readHeaders(in);
               String response = getResponse();
               OutputStream out = mySocket.getOutputStream();     
               out.write(response.getBytes("US-ASCII"));
               out.flush();
               mySocket.close();
          catch(Exception e){System.out.println(e.getMessage());}
        private String getResponse(){
             StringBuffer responseBuf = new StringBuffer();
             responseBuf.append (httpVer + " 200 OK\r\n");
             responseBuf.append ("Content-type: text/html\r\n");
             responseBuf.append ("Content-length: 119\r\n");
             responseBuf.append ("<HTML>\r\n");
             responseBuf.append ("<TITLE> My served web document </TITLE>\r\n");
             responseBuf.append ("</HEAD>\r\n");
             responseBuf.append ("<BODY>\r\n");
             responseBuf.append ("<H1> Hello from the server! </H1>\r\n");
             responseBuf.append ("</BODY>\r\n");
             responseBuf.append ("</HTML>\r\n\r\n");
             String responseStr = responseBuf.toString();
             responseStr = responseStr.trim();
         return "";
        private void readHeaders(InputStream in) throws IOException {
         StringBuffer sbuf = new StringBuffer();
         int ch;
         String clientStr;
         //This loop reads in all of the input until there is nothing left to read.
         //All of the characters are appended to the string buffer.
         while ((ch = in.read()) != -1) {
              sbuf.append((char) ch);
         //clientStr will hold string in string buffer without any leading or
         //trailing white space.
         clientStr = sbuf.toString();
         clientStr = clientStr.trim();
         //Split clientStr into substrings and store them in an array.
         String [] tokens = clientStr.split(" ");
         //Obtains HTTP version
         httpVer = tokens [2];
    }Cheers,
    Chris

    I've written out.flush() in the server program. When I attempt to connect to the server it just hangs. I've modified the code locally to request a webpage from elsewhere and it works so it can't be the format of my GET request. I assume that the problem has to be in the Server program. Is it not reading in and understanding the /r/n properly?

  • Help me to sort out the problem in this Simple Client - Server problem

    Hi all,
    I have just started Network programming in java . I tried to write simple Client and Server program which follows
    MyServer :
    package connection;
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class MyServer {
          * @param args
         public static void main(String[] args) {
              String ss ="";
              try {
                   ServerSocket sockServer = new ServerSocket(6000);
                   Socket clientLink = sockServer.accept();
                   System.out.println("Connection Established");
                   InputStreamReader isr = new InputStreamReader(clientLink.getInputStream());
                   BufferedReader bufReader = new BufferedReader(isr);
                   System.out.println("buf "+bufReader.readLine());
                   try {
                        while ((ss=bufReader.readLine())!=null) {
                             ss+=ss;
                        System.out.println("client message "+ss);
                   } catch (IOException e) {
                        System.out.println("while reading");
                        e.printStackTrace();
              } catch (IOException e) {
                   System.out.println("Can't able to connect");
                   e.printStackTrace();
    }MyClient:
    package connection;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    public class MyClient {
          * @param args
         public static void main(String[] args) {
              try {
                   Socket client = new Socket("127.0.0.1",6000);
                   OutputStreamWriter osw = new OutputStreamWriter(client.getOutputStream());
                   PrintWriter pw = new PrintWriter(osw);
                   pw.write("hello");
              } catch (IOException e) {
                   System.out.println("Failed to connect");
                   e.printStackTrace();
    }I got this error message when I start my client program .
    Error message :
    Connection Established
    java.net.SocketException: Connection reset
         at java.net.SocketInputStream.read(Unknown Source)
         at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
         at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
         at sun.nio.cs.StreamDecoder.read(Unknown Source)
         at java.io.InputStreamReader.read(Unknown Source)
    Can't able to connect
         at java.io.BufferedReader.fill(Unknown Source)
         at java.io.BufferedReader.readLine(Unknown Source)
         at java.io.BufferedReader.readLine(Unknown Source)
         at connection.MyServer.main(MyServer.java:27)I think this is very simple one but can't able to find this even after many times . please help me to sort out this to get start my network programming .
    Thanks in advance.

                   System.out.println("buf "+bufReader.readLine());Here you are reading a line from the client and printing it.
                   try {
                        while ((ss=bufReader.readLine())!=null) {
                             ss+=ss;
                        }Here you are reading more lines from the client and adding it to itself then throwing it away next time around the loop.
                        System.out.println("client message "+ss);... so this can't print anything except 'null'.
                   pw.write("hello");Here you are printing one line to the server. So the server won't ever do anything in the readLine() loop above. Then you are exiting the client without closing the socket or its output stream so the server gets a 'connection reset'.

  • Client-Server side programing problem

    I designed a client-server program as seen below basis on serversocket and thread
    I use serversocket for making a host connection than people connect this socket via applet that i designed then they transffer data with socket.getInputStream() and socket.getOutputStream but it always happening between client and server how can i make theese streams transfer between clients is something like that possible if it is how?
    I couldnt send my hole java code because its too long and i wish i could explain my problem
        public void run()
            try
                servsocket = new ServerSocket(port);
                jTextArea1.append("Kullanici Girisi Bekleniyor.\n");
            catch(IOException e)
                jTextArea1.append("Sunucu Uzerinde Socket Acilamadi.\n");
                while(calisiyor)  //calisiyor variable is a boolean variable for checking if server is running
                    try
                    Socket sock = servsocket.accept();
                    background = new techsupportbackground(this,sock);
                    background.start();
                    catch(Exception e)
                        printstring("Hata:"+e);
                        break;
    this is the techsupportbackground classes run method it extends from thread
        public void run()
            if(!servicesetup()) return;
            support.printstring("Baglanti saglandi,kullanici basariyla giris yapti.");
            setPriority(MIN_PRIORITY);
            String sonmesaj = "";
            while(calisiyor)
                String mesaj = readinputline();
                if(mesaj == null) break;
                if (!sonmesaj.equals(mesaj))
                    support.printstring(username+"->"+mesaj);
                    sonmesaj = mesaj;
            cikis();
    and this is the client side program's run method
        public void run()
            try
                if(!doconnection())
                    client.printstring("Baglanti Saglanamadi:");
                    return;
            catch(Exception e)
                client.printstring("Baglanti Saglanamadi");
            while (calisiyor)
                String mesaj = readline();  //readline is the method which reads sockets input stream
                client.printstring(mesaj);
                    if (mesaj == null) break;
                    try {
                    Thread.sleep (client.timeupdate);
                    catch (InterruptedException e)
            if (server != null) closeserver();
            client.setdisconnected();
            client.printstring("Baglanti Koptu");

    I made two java file , one for server one for client
    server is working good openning the socket but the client is crashing when i attempt to connect to server
    here is my code if anyone could tell me where i made a mistake i would be very appreciate
    this is the client program
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import java.net.*;
    import javax.swing.*;
    import javax.swing.event.*;
    class client extends javax.swing.JFrame {
        private boolean baglandi;
        private MulticastSocket socket;
        private int port;
        private String ip;
        String username;
        private InetAddress group;
        private String msg;
        private DatagramPacket datawriter;
        private byte[] reader;
        private boolean calisiyor;
        private JScrollPane scrollpane;
        public client() {
            initComponents();
            this.setSize(490,450);
            jTextArea1.setEditable(false);
            jTextField2.setEditable(false);
            jButton2.setEnabled(false);
            jLabel3.setForeground(Color.RED);
            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.setBounds(0, 0, 480, 260);
            getContentPane().add(panel);
            scrollpane = new JScrollPane();
            scrollpane.getViewport().add(jTextArea1);
            panel.add(scrollpane,BorderLayout.CENTER);
            baglandi=false;
            ip="228.5.6.7";
            port=2222;
            try
            group = InetAddress.getByName(ip);
            msg ="";
            datawriter = new DatagramPacket(msg.getBytes(),msg.length(),group,port);
            calisiyor = false;
            catch(Exception e)
        private void initComponents() {
            jTextArea1 = new javax.swing.JTextArea();
            jLabel1 = new javax.swing.JLabel();
            jLabel2 = new javax.swing.JLabel();
            jTextField1 = new javax.swing.JTextField();
            jTextField2 = new javax.swing.JTextField();
            jButton1 = new javax.swing.JButton();
            jButton2 = new javax.swing.JButton();
            jButton3 = new javax.swing.JButton();
            jLabel3 = new javax.swing.JLabel();
            getContentPane().setLayout(null);
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exitForm(evt);
            getContentPane().add(jTextArea1);
            jTextArea1.setBounds(0, 0, 480, 260);
            jLabel1.setText("Kullanici Adi");
            getContentPane().add(jLabel1);
            jLabel1.setBounds(0, 270, 90, 15);
            jLabel2.setText("Mesaj");
            getContentPane().add(jLabel2);
            jLabel2.setBounds(0, 300, 60, 15);
            getContentPane().add(jTextField1);
            jTextField1.setBounds(100, 270, 290, 21);
            getContentPane().add(jTextField2);
            jTextField2.setBounds(100, 300, 290, 21);
            jButton1.setText("Gonder");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
            getContentPane().add(jButton1);
            jButton1.setBounds(400, 270, 80, 25);
            jButton2.setText("Gonder");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton2ActionPerformed(evt);
            getContentPane().add(jButton2);
            jButton2.setBounds(400, 300, 80, 25);
            jButton3.setText("Durdur");
            jButton3.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton3ActionPerformed(evt);
            getContentPane().add(jButton3);
            jButton3.setBounds(400, 340, 80, 25);
            jLabel3.setText("Baglanti Saglanamadi");
            getContentPane().add(jLabel3);
            jLabel3.setBounds(0, 360, 130, 15);
            pack();
        private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
            durdur();
        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
            printoutput();
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
            baslat();
        /** Exit the Application */
        private void exitForm(java.awt.event.WindowEvent evt) {
            System.exit(0);
         * @param args the command line arguments
        public static void main(String args[]) {
            new client().show();
        public void baslat()
            username = jTextField1.getText();
            try
                socket = new MulticastSocket(port);
                socket.joinGroup(group);
            catch(IOException e)
                jTextArea1.append("Guvenlik Engellemesi Sebebiyle Sunucuya Ulasilamadi.\n");
                return;
                    jTextArea1.append("Sunucuya Baglanildi");
                    baglandi = true;
                    calisiyor = true;
                    jLabel3.setText("Baglanti Saglandi");
                    jTextArea1.append("Sunucuya Basariyla Baglanildi\n");
                    jLabel3.setForeground(Color.GREEN);
                    jButton1.setEnabled(false);
                    jTextField1.setEditable(false);
                    jButton2.setEnabled(true);
                    jTextField2.setEditable(true);
                while (calisiyor)
                        String mesaj = readline();
                        printstring(mesaj);
                        if (mesaj == null) break;
        public void durdur()
            jTextField2.setEditable(false);
            jTextField1.setEditable(true);
            jButton2.setEnabled(false);
            jButton1.setEnabled(true);
            jLabel3.setText("Baglanti Saglanamadi");
            jLabel3.setForeground(Color.RED);
            try
                socket.leaveGroup(group);
            catch(Exception e)
        public void printoutput()
            try
            String mesaj = jTextField2.getText();
            jTextField2.setText("");
            writeline(username+":->"+mesaj);
            catch(Exception e)
                printstring("Veri Ulastirilamadi.");
        public void printstring(String s)
            jTextArea1.append(s+"\n");
        public void setdisconnected()
            jTextField2.setEditable(false);
            jTextField1.setEditable(true);
            jButton2.setEnabled(false);
            jButton1.setEnabled(true);
            jLabel3.setText("Baglanti Saglanamadi");
            jLabel3.setForeground(Color.RED);
            public String readline()
                byte[] buf = new byte[1000];
                DatagramPacket datapack = new DatagramPacket(buf,buf.length);
                try
                    socket.receive(datapack);
                    String mesaj = buf.toString();
                    return mesaj;
                catch(Exception e)
                    printstring("Sunucuya Ulasilamadi");
                    return null;
        public void writeline(String s) throws IOException
                try
                    msg = s;
                    socket.send(datawriter);
                    printstring(msg);
                catch(Exception e)
                    printstring("Mesaj ulastirilamadi.");
        // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JButton jButton3;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JLabel jLabel3;
        private javax.swing.JTextArea jTextArea1;
        private javax.swing.JTextField jTextField1;
        private javax.swing.JTextField jTextField2;
        // End of variables declaration
    this is the server program
    import java.net.*;
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class techsupport extends javax.swing.JFrame implements ActionListener,Runnable {
        private MulticastSocket servsocket;
        private int port;
        private boolean calisiyor;
        private JScrollPane scrollpane;
        private techsupportbackground  background;
        private InetAddress group;
        public techsupport(String title) {
            super(title);
            initComponents();
            this.setSize(400,400);
            port=2222;
            jTextField1.addActionListener(this);
            jButton1.addActionListener(this);
            calisiyor=true;
            jTextArea1.setEditable(false);
            JPanel panel = new JPanel();
            panel.setLayout(new BorderLayout());
            panel.setBounds(0,10,400, 230);
            getContentPane().add(panel);
            scrollpane = new JScrollPane();
            scrollpane.getViewport().add(jTextArea1);
            panel.add(scrollpane,BorderLayout.CENTER);
                try
                group = InetAddress.getByName("228.5.6.7");
                catch(Exception e)
        private void initComponents() {
            jTextArea1 = new javax.swing.JTextArea();
            jButton1 = new javax.swing.JButton();
            jLabel1 = new javax.swing.JLabel();
            jButton2 = new javax.swing.JButton();
            jTextField1 = new javax.swing.JTextField();
            getContentPane().setLayout(null);
            addWindowListener(new java.awt.event.WindowAdapter() {
                public void windowClosing(java.awt.event.WindowEvent evt) {
                    exitForm(evt);
            getContentPane().add(jTextArea1);
            jTextArea1.setBounds(0, 10, 400, 230);
            jButton1.setText("Start");
            jButton1.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton1ActionPerformed(evt);
            getContentPane().add(jButton1);
            jButton1.setBounds(160, 260, 80, 25);
            jLabel1.setText("Port");
            getContentPane().add(jLabel1);
            jLabel1.setBounds(0, 240, 120, 15);
            jButton2.setText("Stop");
            jButton2.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent evt) {
                    jButton2ActionPerformed(evt);
            getContentPane().add(jButton2);
            jButton2.setBounds(250, 260, 90, 25);
            getContentPane().add(jTextField1);
            jTextField1.setBounds(0, 260, 130, 21);
            pack();
        private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
            try
            servsocket.close();
            jButton1.setEnabled(true);
            printstring("Port Kapatildi.");
            jTextArea1.setText("");
            catch(Exception e)
                printstring("Hata:"+e);
        private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        private void exitForm(java.awt.event.WindowEvent evt) {
            System.exit(0);
        public static void main(String args[]) {
            new techsupport("Teknik Destek Sunucu").show();
        public void actionPerformed(ActionEvent e) {
            boolean status = false;
            String komut = e.getActionCommand();
                if (komut.equals("Start"))
                    try
                        port = Integer.parseInt(jTextField1.getText());
                        jButton1.setEnabled(false);
                    catch(NumberFormatException err)
                        jTextArea1.append("Hatali Port Numarasi"+"\n");
                        jButton1.setEnabled(true);                   
                    Thread uygulama = new Thread(this);
                    uygulama.start();
                else if (komut.equals("Stop"))
                    calisiyor=false;
                    dispose();
        public void run()
            try
                servsocket = new MulticastSocket(port);
                servsocket.joinGroup(group);
                jTextArea1.append("Kullanici Girisi Bekleniyor.\n");
            catch(IOException e)
                jTextArea1.append("Sunucu Uzerinde Socket Acilamadi.\n"+e.toString());
        public void printstring(String s)
            jTextArea1.append(s+"\n");
        // Variables declaration - do not modify
        private javax.swing.JButton jButton1;
        private javax.swing.JButton jButton2;
        private javax.swing.JLabel jLabel1;
        private javax.swing.JTextArea jTextArea1;
        private javax.swing.JTextField jTextField1;
        // End of variables declaration
    }

  • Ask help, How make my TCP server program stronger

    I'm develop a simple c/s program using TCP.
    I use recv (sock, buff, len, WAITALL) func recieving the message sent by client, if the client don't send enough lenth message, the server will block, how to resolve this problem.
    I'm a network programming beginner, could you give me some advise and information, thanks.

    It would be useful for you to read
    http://docs.sun.com/ab2/coll.45.13/NETP/
    especially "Overview of Sockets" and "Socket Basics".
    You can find there many code examples.
    And the general way to deal with stream message size
    is to put it into the message header. This will allow
    the receiver first to read the message size, and then
    the entire message.
    Enjoy!

  • Help with java.util.logging SocketHandler - Simple TCP Server

    I have a simple TCP serverString clientSentence;
                 ServerSocket welcomeSocket = new ServerSocket(5050);
                 while(true) {
                    Socket connectionSocket = welcomeSocket.accept();
                    BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
                    while ((clientSentence = inFromClient.readLine()) != null) {
                         System.out.println("Received: " + clientSentence);
                 }And I have a java.util.logging logger using a SocketHandler. I'm just calling logger.log("my message"); I get the expected result to System.out: "my message". But when I go on to call again logger.log("my next message") I get both messages in queue: "my message" and "my next message" on the next line. So, I get from these two calls to logger.log() the following result in System.out
    my message
    my message
    my next message...whereas I expected
    my message
    my next messageWhy is "my message" being saved even after being passed through the TCP connection to the server? I tried handler.flush() but that doesn't help. Pretty sure the problem isn't at the server end because when I create two loggers with their own SocketHandlers the server doesn't double up on their messages. (In other words, if I let one logger say simply "my message" and the second logger say "my next message" I get the expected output. It's like each logger needs to be flushed after sending to the server.
    Any advice appreciated.

    Yes, I was just rereading your post and it's apparent that you were suspecting the client code. Your posting only the server led me to believe that you were focusing on that and I kind of skipped over the last part.
    So to answer your question, yes, the server code looks okay. And you were suspecting the client anyway, so problem solved.

Maybe you are looking for

  • Save PDF not Save As

    I open a PDF file (Any Type of PDF file) into Acrobat reader 10 or 11 and add a comment. If I click the "Save" button the "Save As" dialog pops up. Why? Tried Adobe Support but they do not support any free products. I told them that I have a paid sub

  • Predict database growth feature in 11G

    Hi experts pardon me if I am not correct, I believe in 10G there was a feature where we can predict the growth how much the database will grow and allocate space to the tablespace In 11G do we have the same feature in OEM, I am using OEM after a long

  • Back ground job bdc session

    Hai All, Can any one tell me how to catch the erros in BDC session method back ground job. I need to update Sales orders in BDC session, back ground job. Finally at the end I need to generate a report which contains all the succesfull updates & error

  • Clearing Duplicates the Easy Way

    Due to a rookie consolidation move, I've got duplicates of most of my music in my iTunes Music Folder--all in the same file. The duplicates I'd like to get rid of all have a "1" tacked on to them, like this: 03 She's Lost Control.mp3 (original) 03 Sh

  • Photoshop Elements 8 for Mac Download

    I recently bought a new MacBook Pro which doesn't have a CD/DVD drive.  I need to download a copy of Photoshop Elements 8 for Mac.  Any ideas where I can do this??