Socket communication problem

hello all,
i have written a small program to send a message to echo server and get back the response from the server.
it gives a error as
COULD NOT GET I/O FOR CONNECTION TO <ip address>
i am working on win nt version 4 service pack 4 installed on a home computer.
the code is as below:
import java.io.*;
import java.net.*;
public class net4a {
public static void main(String[] args) throws IOException{
Socket echoSocket = null;
DataOutputStream os = null;
DataInputStream is = null;
     DataInputStream stdIn = new DataInputStream(System.in);
     InetAddress host = InetAddress.getLocalHost();
try {
echoSocket = new Socket(host, 7);
os = new DataOutputStream(echoSocket.getOutputStream());
is = new DataInputStream(echoSocket.getInputStream());
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + host);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: " + host);
if (echoSocket != null && os != null && is != null) {
try {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
os.writeBytes(userInput);
os.writeByte('\n');
System.out.println("echo: " + is.readLine());
os.close();
is.close();
echoSocket.close();
} catch (IOException e) {
System.err.println("I/O failed on the connection to: " + host);
look forward to ur valuable tips on the same.

Hello,
Long time java programmer, first time forum user.
Looks like you looking to looking to get a java applet/program communicating with a web server. This is not an extremely difficult task and I have successfully got apache communicating CGI transactions to and from an applet with no drama�s.
This is very useful as it is restrictive to have to open up extra sockets across a network as many networks today restrict socket communication often for security or business/organization policies.
An alternative is to use HTTP request using the POST command to talk to a web server with the web server replying to the request. For example, you may need to ask a database to pull out all customer names from a server-side database. The applet need only send a URLEncoded request to the server, the webserver invokes the CGI process (I use Java to handle the CGI requests but other methods/languages can be used) which returns the result of the transaction.
I have listed some code that included the a �ping-pong� request to a server. It included the applet function that calls the webserver, the CGI batch script (for win NT/XP) to invoke the java program, the cgi-lib to simply parse the URL request (many thanks to the author) and the server-side java program that responds to the request.
I hope you find this useful. The download for apache, the webserver, is available at
http://www.apache.org/
and is a pretty simple install. Make sure you fix up the httpd.conf file to suit your system.
Good luck.
Dale Miller
CLIENT-SIDE (Java Applet Snippit)
public class Comm {
     private String server;
     private URL toServer;
     private URLConnection uRLConnection;
     private DataOutputStream dataOutputStream;
     private StringBuffer output;
     private BufferedReader dataInputStream;
     private String result;
     private int resultsLast;
     private String results[] = new String[100];
     private int firstTU;
     //this function starts in its own thread and takes care
     //of logins and there re-tries, the messaging.
     //Please see the actual function for better details
     //private LoginWatcher loginWatcher;
     public Comm(String serverAddress) throws UnsupportedEncodingException{
          System.out.println("loaded Comm class!");
          //First thing we need to do is set up the login watcher
          //loginWatcher = new LoginWatcher();
          this.output = new StringBuffer();
          this.server = serverAddress;
          try {
               this.toServer = new URL(server + "ping.cgi");
          } catch (MalformedURLException e) {
               System.out.println("ERROR : in contacting the server");
               System.out.println("Server : " + server);
               System.out.println("NOT FOUND!!");
          try {
               this.uRLConnection = toServer.openConnection();
          } catch (IOException e) {
               System.out.println("ERROR : Connection to server refused");
          this.uRLConnection.setUseCaches(false);
          this.uRLConnection.setDoInput(true);
          this.uRLConnection.setDoOutput(true);
          this.uRLConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
          try {
               this.dataOutputStream = new DataOutputStream(uRLConnection.getOutputStream());
          } catch (IOException e) {
               System.out.println("ERROR : opening dataoutputstream");
          this.output.setLength(0);
          output.append("first=" + URLEncoder.encode("I am", "UTF-8"));
          output.append("&last=" + URLEncoder.encode("number 1", "UTF-8"));
          try {
               dataOutputStream.writeBytes(new String(output));
          } catch (IOException e) {
               System.out.println("ERROR : Sending string to cgi ping.cgi");
          try {
               this.dataInputStream = new BufferedReader(new InputStreamReader(uRLConnection.getInputStream()));
          } catch (IOException e) {
               System.out.println("ERROR : Setting up input stream");
          String grab = new String();
          System.out.print("Searching for server..");
          try {
               grab = dataInputStream.readLine();
               grab = dataInputStream.readLine();
          } catch (IOException e) {
               System.out.println("ERROR : Reciving ping data from server");
          if (grab.equals("pass")) {
               System.out.println("OK");
          } else {
               System.out.println("ERROR\n\nSERVER NOT FOUND!!!");
               System.exit(-1);
          //loginWatcher.loginWatcherTh.start();
CGI BATCH TO INVOKE CGI PROGRAM
#!java -cp c:\ss\ middle
CGI-LIB TO PARSE HTTP REQUESTS
import java.util.*;
import java.io.*;
* cgi_lib.java<p>
* <p>
* Usage: This library of java functions, which I have encapsulated inside
* a class called cgi_lib as class (static) member functions,
* attempts to duplicate the standard PERL CGI library (cgi-lib.pl).
* You must invoke any Java program that uses this library from
* within a UNIX script, Windows batch file or equivalent. As you
* will see in the following example, all of the CGI environment
* variables must be passed from the script into the Java application
* using the -D option of the Java interpreter. This example
* UNIX script uses the "main" routine of this class as a
* CGI script:
* <pre>
* (testcgi.sh)
* #!/bin/sh
* java \
* -Dcgi.content_type=$CONTENT_TYPE \
* -Dcgi.content_length=$CONTENT_LENGTH \
* -Dcgi.request_method=$REQUEST_METHOD \
* -Dcgi.query_string=$QUERY_STRING \
* -Dcgi.server_name=$SERVER_NAME \
* -Dcgi.server_port=$SERVER_PORT \
* -Dcgi.script_name=$SCRIPT_NAME \
* -Dcgi.path_info=$PATH_INFO \
* cgi_lib
* </pre>
* Question and comments can be sent to [email protected].<p>
* @version 1.0
* @author Pat L. Durante
class cgi_lib
* Parse the form data passed from the browser into
* a Hashtable. The names of the input fields on the HTML form will
* be used as the keys to the Hashtable returned. If you have a form
* that contains an input field such as this,<p>
* <pre>
* &ltINPUT SIZE=40 TYPE="text" NAME="email" VALUE="[email protected]"&gt
* </pre>
* then after calling this method like this,<p>
* <pre>
* Hashtable form_data = cgi_lib.ReadParse(System.in);
* </pre>
* you can access that email field as follows:<p>
* <pre>
* String email_addr = (String)form_data.get("email");
* </pre>
* @param inStream The input stream from which the form data can be read.
* (Only used if the form data was posted using the POST method. Usually,
* you will want to simply pass in System.in for this parameter.)
* @return The form data is parsed and returned in a Hashtable
* in which the keys represent the names of the input fields.
public static Hashtable ReadParse(InputStream inStream)
Hashtable form_data = new Hashtable();
String inBuffer = "";
if (MethGet())
inBuffer = System.getProperty("cgi.query_string");
else
// TODO: I should probably use the cgi.content_length property when
// reading the input stream and read only that number of
// bytes. The code below does not use the content length
// passed in through the CGI API.
DataInput d = new DataInputStream(inStream);
String line;
try
while((line = d.readLine()) != null)
inBuffer = inBuffer + line;
catch (IOException ignored) { }
// Split the name value pairs at the ampersand (&)
StringTokenizer pair_tokenizer = new StringTokenizer(inBuffer,"&");
while (pair_tokenizer.hasMoreTokens())
String pair = urlDecode(pair_tokenizer.nextToken());
// Split into key and value
StringTokenizer keyval_tokenizer = new StringTokenizer(pair,"=");
String key = new String();
String value = new String();
if (keyval_tokenizer.hasMoreTokens())
key = keyval_tokenizer.nextToken();
else ; // ERROR - shouldn't ever occur
if (keyval_tokenizer.hasMoreTokens())
value = keyval_tokenizer.nextToken();
else ; // ERROR - shouldn't ever occur
// Add key and associated value into the form_data Hashtable
form_data.put(key,value);
return form_data;
* URL decode a string.<p>
* Data passed through the CGI API is URL encoded by the browser.
* All spaces are turned into plus characters (+) and all "special"
* characters are hex escaped into a %dd format (where dd is the hex
* ASCII value that represents the original character). You probably
* won't ever need to call this routine directly; it is used by the
* ReadParse method to decode the form data.
* @param in The string you wish to decode.
* @return The decoded string.
public static String urlDecode(String in)
StringBuffer out = new StringBuffer(in.length());
int i = 0;
int j = 0;
while (i < in.length())
char ch = in.charAt(i);
i++;
if (ch == '+') ch = ' ';
else if (ch == '%')
ch = (char)Integer.parseInt(in.substring(i,i+2), 16);
i+=2;
out.append(ch);
j++;
return new String(out);
* Generate a standard HTTP HTML header.
* @return A String containing the standard HTTP HTML header.
public static String Header()
return "Content-type: text/html\n\n";
* Generate some vanilla HTML that you usually
* want to include at the top of any HTML page you generate.
* @param Title The title you want to put on the page.
* @return A String containing the top portion of an HTML file.
public static String HtmlTop(String Title)
String Top = new String();
Top = "<html>\n";
Top+= "<head>\n";
Top+= "<title>\n";
Top+= Title;
Top+= "\n";
Top+= "</title>\n";
Top+= "</head>\n";
Top+= "<body>\n";
return Top;
* Generate some vanilla HTML that you usually
* want to include at the bottom of any HTML page you generate.
* @return A String containing the bottom portion of an HTML file.
public static String HtmlBot()
return "</body>\n</html>\n";
* Determine if the REQUEST_METHOD used to
* send the data from the browser was the GET method.
* @return true, if the REQUEST_METHOD was GET. false, otherwise.
public static boolean MethGet()
String RequestMethod = System.getProperty("cgi.request_method");
boolean returnVal = false;
if (RequestMethod != null)
if (RequestMethod.equals("GET") ||
RequestMethod.equals("get"))
returnVal=true;
return returnVal;
* Determine if the REQUEST_METHOD used to
* send the data from the browser was the POST method.
* @return true, if the REQUEST_METHOD was POST. false, otherwise.
public static boolean MethPost()
String RequestMethod = System.getProperty("cgi.request_method");
boolean returnVal = false;
if (RequestMethod != null)
if (RequestMethod.equals("POST") ||
RequestMethod.equals("post"))
returnVal=true;
return returnVal;
* Determine the Base URL of this script.
* (Does not include the QUERY_STRING (if any) or PATH_INFO (if any).
* @return The Base URL of this script as a String.
public static String MyBaseURL()
String returnString = new String();
returnString = "http://" +
System.getProperty("cgi.server_name");
if (!(System.getProperty("cgi.server_port").equals("80")))
returnString += ":" + System.getProperty("cgi.server_port");
returnString += System.getProperty("cgi.script_name");
return returnString;
* Determine the Full URL of this script.
* (Includes the QUERY_STRING (if any) or PATH_INFO (if any).
* @return The Full URL of this script as a String.
public static String MyFullURL()
String returnString;
returnString = MyBaseURL();
returnString += System.getProperty("cgi.path_info");
String queryString = System.getProperty("cgi.query_string");
if (queryString.length() > 0)
returnString += "?" + queryString;
return returnString;
* Neatly format all of the CGI environment variables
* and the associated values using HTML.
* @return A String containing an HTML representation of the CGI environment
* variables and the associated values.
public static String Environment()
String returnString;
returnString = "<dl compact>\n";
returnString += "<dt><b>CONTENT_TYPE</b> <dd>:<i>" +
System.getProperty("cgi.content_type") +
"</i>:<br>\n";
returnString += "<dt><b>CONTENT_LENGTH</b> <dd>:<i>" +
System.getProperty("cgi.content_length") +
"</i>:<br>\n";
returnString += "<dt><b>REQUEST_METHOD</b> <dd>:<i>" +
System.getProperty("cgi.request_method") +
"</i>:<br>\n";
returnString += "<dt><b>QUERY_STRING</b> <dd>:<i>" +
System.getProperty("cgi.query_string") +
"</i>:<br>\n";
returnString += "<dt><b>SERVER_NAME</b> <dd>:<i>" +
System.getProperty("cgi.server_name") +
"</i>:<br>\n";
returnString += "<dt><b>SERVER_PORT</b> <dd>:<i>" +
System.getProperty("cgi.server_port") +
"</i>:<br>\n";
returnString += "<dt><b>SCRIPT_NAME</b> <dd>:<i>" +
System.getProperty("cgi.script_name") +
"</i>:<br>\n";
returnString += "<dt><b>PATH_INFO</b> <dd>:<i>" +
System.getProperty("cgi.path_info") +
"</i>:<br>\n";
returnString += "</dl>\n";
return returnString;
* Neatly format all of the form data using HTML.
* @param form_data The Hashtable containing the form data which was
* parsed using the ReadParse method.
* @return A String containing an HTML representation of all of the
* form variables and the associated values.
public static String Variables(Hashtable form_data)
String returnString;
returnString = "<dl compact>\n";
for (Enumeration e = form_data.keys() ; e.hasMoreElements() ;)
String key = (String)e.nextElement();
String value = (String)form_data.get(key);
returnString += "<dt><b>" + key + "</b> <dd>:<i>" +
value +
"</i>:<br>\n";
returnString += "</dl>\n";
return returnString;
* The main routine is included here as a test CGI script to
* demonstrate the use of all of the methods provided above.
* You can use it to test your ability to execute a CGI script written
* in Java. See the sample UNIX script file included above to see
* how you would invoke this routine.<p>
* Please note that this routine references the member functions directly
* (since they are in the same class), but you would have to
* reference the member functions using the class name prefix to
* use them in your own CGI application:<p>
* <pre>
* System.out.println(cgi_lib.HtmlTop());
* </pre>
* @param args An array of Strings containing any command line
* parameters supplied when this program in invoked. Any
* command line parameters supplied are ignored by this routine.
public static void main( String args[] )
// This main program is simply used to test the functions in the
// cgi_lib class.
// That said, you can use this main program as a test cgi script. All
// it does is echo back the form inputs and enviroment information to
// the browser. Use the testcgi UNIX script file to invoke it. You'll
// notice that the script you use to invoke any Java application that
// uses the cgi_lib functions MUST pass all the CGI enviroment variables
// into it using the -D parameter. See testcgi for more details.
// Print the required CGI header.
System.out.println(Header());
// Create the Top of the returned HTML
// page (the parameter becomes the title).
System.out.println(HtmlTop("Hello World"));
System.out.println("<hr>");
// Determine the request method used by the browser.
if (MethGet())
System.out.println("REQUEST_METHOD=GET");
if (MethPost())
System.out.println("REQUEST_METHOD=POST");
System.out.println("<hr>");
// Determine the Base URL of this script.
System.out.println("Base URL: " + MyBaseURL());
System.out.println("<hr>");
// Determine the Full URL used to invoke this script.
System.out.println("Full URL: " + MyFullURL());
System.out.println("<hr>");
// Print all the CGI environment variables
// (usually only used while testing CGI scripts).
System.out.println(Environment());
System.out.println("<hr>");
// Parse the form data into a Hashtable.
Hashtable form_data = ReadParse(System.in);
// Print out each of the name/value pairs
// from sent from the browser.
System.out.println(Variables(form_data));
System.out.println("<hr>");
// Access a particular form value.
// (This assumes the form contains a "name" input field.)
String name = (String)form_data.get("name");
System.out.println("Name=" + name);
System.out.println("<hr>");
// Create the Bottom of the returned HTML page - which closes it cleanly.
System.out.println(HtmlBot());
SERVER-SIDE PROGRAM TO RETURN PING
import java.util.*;
import java.io.*;
class ping
     public static void main(String args[]) {
          System.out.println(cgi_lib.Header());
          Hashtable form_data = cgi_lib.ReadParse(System.in);
          String one = (String)form_data.get("first");
          String two = (String)form_data.get("last");
          boolean test;
          test = false;
          if (one.equals("I am")) {
               if (two.equals("number 1")) {
                    test = true;
          if (test == true) {
               System.out.println("pass");
          } else {
               System.out.println("fail");
     //Datavasee
ENJOY :)

Similar Messages

  • Servlet Server Socket Communication problem

    Hi
    Iam having this problem ...when I read data in server line by line it works but when I try to read byte by byte server hangs. This is my code
    BufferedReader in = new BufferedReader(
    new InputStreamReader(
    clientSocket.getInputStream()));
    //it works fine when i do
    String strLine = in.readLine();
    //but hangs when I do like this
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    int r = in.read();
    while(r != -1)
    baos.write(r);
    r = in.read();
    I am sending data from the client socket as
    out = new PrintWriter(addArtSocket.getOutputStream(), true);
    I just do out.println to send data.
    Is there something wrong that I am doing?
    Thanks
    vinitha

    hi,
    basically, I suggest that you have the communication
    channel in the same type between two ends. For example,
    if you decide to connect two side byt Stream, you just
    apply your code in the sort of Stream for I/O.
    If you decide to connect two sides by Reader/Writer, you
    apply your code in the sort of Reader/Writer for I/O.
    Don't mix them up. Although I don't know what may
    happen. For example, you want to pass an Object
    between two ends, you could use ObjectInputStream/
    ObjectOutputStream pair on two sides. Don't put
    ObjectInputStream in one side and talk to one sied
    which write data by other OutputStream filteer but
    not ObjectOutputStream .
    You may find something interesting.
    good luck,
    Alfred Wu

  • Problem with socket communications

    I am trying to put together a client server socket communication pair.
    I have one application that runs in the background acting as a server and another that can be started and stopped that acts as a client.
    I can start the server and create a server socket with no problem.
    I can start the client and it connects to the server.
    The server acknowledges the connection and appears to go into a blocking state waiting for the client to send another message.
    The server blocks at the line
    parent.logit("Waiting for message from EVR..... ");
    The problem is that when the client sends another message, the server doesn't hear it.
    I am not sure if the problem is with the client or server communication code.
    If anyone out there is a socket communication guru, I would appreciate it if you could tell me what I am doing wrong.
    Thanks
    Server code:
    import java.io.*;
    import java.net.*;
    public class EVRServer
        extends Thread
      EVRDataLoader parent = null;
      ServerSocket serverSock = null;
      Socket clientSock = null;
      BufferedReader reader = null;
      BufferedWriter writer = null;
      int evrPort = 0;
      int retryLimit = 10;
      int retryCount = 0;
      boolean alive = false;
      boolean killSocket = false;
      boolean evrConnected = false;
      boolean retry = true;
      EVRListener evrListener = null;
    //=============================================================================
    // Full constructor
    //=============================================================================
       * Full constructor.
       * @param dl DataLoader - Parent application
       * @param port int Socket port
      public EVRServer(EVRDataLoader dl, int port)
        parent = dl;
        evrPort = port;
    //=============================================================================
    //  Run method - Main thread executed by start() method
    //=============================================================================
       * Main thread executed by start() method
      public void run()
        while (retry)
          if (retryCount > retryLimit)
            retry = false;
          parent.logit("Retry count = " + retryCount);
          // Create new server socket connection
          if (serverSock == null)
            try
              serverSock = new ServerSocket(evrPort);
              parent.logit("Created Server Socket for EVR on port " + evrPort);
              alive = true;
              killSocket = false;
              evrConnected = false;
            catch (Exception e)
              parent.logit(
                  "ERROR - Could not create Server socket connection for EVR: " +
                  e.toString());
              killSocket = true;
              alive = false;
          // Create new client socket connection
          if (clientSock == null)
            try
              parent.logit("Waiting for EVR to connect");
              clientSock = null;
              clientSock = serverSock.accept();
              retryCount = 0;
              evrConnected = true;
              killSocket = false;
              parent.logit("EVR connected on server Socket Port " + evrPort);
            catch (Exception e)
              parent.logit("ERROR - Error accepting EVR connection: " + e.toString());
              killSocket = true;
            try
              reader = new BufferedReader(new InputStreamReader(
                  clientSock.getInputStream()));
              writer = new BufferedWriter(new OutputStreamWriter(
                  clientSock.getOutputStream()));
              parent.logit( "Created reader "+reader);
              parent.logit( "Created writer "+writer);
            catch (Exception e)
              parent.logit(
                  "ERROR - creating reader or writer to EVR: " + e.toString());
              killSocket = true;
          int nullCount = 0;
          while (killSocket == false)
            try
              parent.logit("Waiting for message from EVR..... ");
    //          sendMessage("Data Controller connected on port " + evrPort);
              String s = reader.readLine();
              parent.logit("EVR - Received message: " + s);
              if (s != null)
                parent.processEvrMessage( s);
              else
                sleep(1000);
                nullCount++;
                if (nullCount > 10)
                  parent.logit("Exceeded retry limit: ");
                  killSocket = true;
            catch (Exception ex)
              parent.logit("Error Reading from EVR: " + ex.toString());
              killSocket = true;
          parent.logit( "After while loop");
          evrConnected = false;
          try
            retryCount++;
            parent.logit("Closing EVR connection. ");
            reader.close();
            writer.close();
            clientSock.close();
            writer = null;
            reader = null;
            clientSock = null;
            try
              sleep(1000);
            catch (Exception ee)
              parent.logit("Error after sleep " + ee.toString());
          catch (Exception e)
            parent.logit("Error closing EVR server socket");
    //=============================================================================
    // Call this method to kill the client socket connection.
    //=============================================================================
       * Call this method to kill the client socket connection.
      public void killConnection()
        killSocket = true;
    //=============================================================================
    // Return RTM connected state
    //=============================================================================
       * Return RTM connected state
       * @return boolean - Returns true if RTM is connected to server, false if not.
      public boolean isRtmConnected()
        return evrConnected;
    //=============================================================================
    // Returns state of server socket.
    //=============================================================================
       * Returns state of server socket.
       * @return boolean - Returns true if server socket is enabled, false if not.
      public boolean isServerSocketAlive()
        return alive;
    //=============================================================================
    // Send a message to the client socket.
    //=============================================================================
         * Send a message to the client socket.
         * @param msg String - Message to send.
         * @return boolean - Returns true if message sent OK, false if not.
      public boolean sendMessage(String msg)
        parent.logit(" In EVR Server - Send Message - got message: " + msg);
        if (evrConnected)
          try
            parent.logit("Sending message to EVR: " + msg);
            writer.write(msg + "\n");
            writer.flush();
            return true;
          catch (Exception e)
            parent.logit("ERROR - Error sending message to EVR: " + e.toString());
            return false;
        else
          parent.logit("EVR not connected, cannot send message: " + msg);
          return false;
    }Client code:
    package evrsimulator;
    import java.net.*;
    import java.io.*;
    class PortConnector
          extends Thread
       ServerSocket serverSock = null;
       boolean isIP = false;
       InetAddress addr = null;
       Frame1 parent = null;
       byte[] rawIP;
        //   String initialMsg = "";
       public PortConnector( Frame1 f )
         parent = f;
       // This method is called when the thread runs
       public void run()
          if ( parent.hostName.indexOf( "." ) > 0 )
             isIP = true;
             byte[] rawIP = parent.getRawIP( parent.hostName );
          try
             System.out.println( "Connecting to host " +
                                            parent.hostName + " on port " +
                                            parent.socketPort );
             if ( isIP )
                addr = InetAddress.getByAddress( rawIP );
             else
                addr = InetAddress.getByName( parent.hostName );
             System.out.println( "Inet address = " + addr );
             SocketAddress sockaddr =
                   new InetSocketAddress( addr, parent.socketPort );
             // Create an unbound socket
             parent.client = new Socket();
             // This method will block no more than timeoutMs.
             // If the timeout occurs, SocketTimeoutException is thrown.
             parent.client.connect( sockaddr, parent.socketTimeOut );
             parent.socketOut =
                   new BufferedWriter( new OutputStreamWriter(
                   parent.client.getOutputStream() ) );
             parent.socketIn = new BufferedReader( new InputStreamReader(
                   parent.client.getInputStream() ) );
             parent.localName = parent.localName +
                   parent.client;
             System.out.println( "Parent socketOut = "+parent.socketOut);
             System.out.println( "Parent socketIn = "+parent.socketIn);
          catch ( UnknownHostException uhe )
             System.out.println( "Unknown Host - " + uhe.getMessage() );
          catch ( SocketTimeoutException ste )
             System.out.println( "Socket time out - " + ste.getMessage());
          catch ( IOException ioe )
             System.out.println( "IO exception - " + ioe.getMessage() );
          // Listen on socket for message from host - thread should block.
          parent.portConnected = true;
          while ( parent.portConnected )
             try
                String msg = parent.socketIn.readLine();
                System.out.println( "Message from Host: " + msg );
                System.out.println( "Message from Host: |" + msg + "|" );
                if( msg.length() > 2)parent.processMessage( msg );
             catch ( IOException ioe )
                System.out.println( "Exception creating server socket." );
          try
             System.out.println(
                   "PortConnection - Closing socket and IO connections" );
             parent.socketIn.close();
             parent.socketOut.close();
             parent.client.close();
             parent.clockRunning = false;
             if( parent.heartBeating) heartBeat.interrupt();
          catch ( IOException ioex )
             System.out.println( "Exception closing socket." );
    }

    Your first problem is that you keep closing and recreating the ServerSocket. Do this once only in the lifetime of the server.
    This is such a basic error that I haven't read the rest of the code. Before you go any further I suggest you read the Custom Networking trail of the Java Tutorial.

  • Socket communication very slow on Mac OS X 10.6

    Hi everybody,
    I'm using a socket based communication in an application and in Mac OS 10.5 everything works quick and flawless using XCode 3.1.4.
    In Mac OS 10. 6, using XCode 3.2.4, I set the Mac OS X 10.6 SDK, I recompiled the app. but the responsiveness of the app is terrible slow. The GUI itself runs OK but any socket related action is painfully slow (sometimes connection timeout).
    The socket communication is implemented using standard CFSocket classes.
    Is this a XCode migration issue from 3.1 to 3.2 or a Mac OS 10.6 related one (I've seen lots of complains on networking issues)?
    Thank you very much,
    Dan

    Thank you very much for the info but why it worked (and really fast) on 10.5. I also wonder why I didn't run into TCP_NODELAY problem there ? My TCP buffer size is 1K and I'm using the same testing environment.
    Of course there is much more to it than some init parameters but still, what could be so different on 10.6 ? And I tried already the sysctl.conf TCP_NODELAY setting but no effect.
    This is the code (briefly):
    1. CONNECT
    // Create signature from ip and port
    struct sockaddr_in sin; /* TCP/UDP socket address structure. */
    self->m_RemoteSocketSignature = (CFSocketSignature*)malloc(sizeof(CFSocketSignature));
    self->m_RemoteSocketSignature->protocolFamily = PF_INET; /* IPv4 */
    self->m_RemoteSocketSignature->socketType = SOCK_STREAM; /* Stream oriented. */
    self->m_RemoteSocketSignature->protocol = IPPROTO_TCP; /* TCP */
    memset( &sin, 0, sizeof( sin ) );
    sin.sin_len= sizeof( sin );
    sin.sin_family = AF_INET; /* Address is IPv4. Use PF_xxx for protocol
    description, AF_xxx for address description. */
    /* sin.port and sin.addr are in network( big endian ) byte order. */
    sin.sin_port = CFSwapInt16HostToBig( port );
    inet_aton( [address UTF8String], &sin.sin_addr ); /* inet_aton() gives back
    network order addresses from strings. */
    self->m_RemoteSocketSignature->address = CFDataCreate( NULL, (UInt8 *)&sin, sizeof( sin ) );
    // Connect the Write & the Read streams to the socket
    CFStreamCreatePairWithPeerSocketSignature (
    kCFAllocatorDefault,
    m_RemoteSocketSignature,
    & m_ReadStream,
    & m_WriteStream
    if((m_ReadStream != NULL) && (m_WriteStream != NULL))
    bOpenWrite = CFWriteStreamOpen (m_WriteStream);
    bOpenRead = CFReadStreamOpen (m_ReadStream);
    2. RECEIVE
    CFIndex iTotalBytesRead = 0;
    while (true == CFReadStreamHasBytesAvailable(m_ReadStream))
    char buffer[1024];
    CFIndex bufferLength = 1024;
    CFIndex iBytesRead = CFReadStreamRead (
    m_ReadStream,
    buffer,
    bufferLength
    // Error ?
    if(iBytesRead < 0)
    return iBytesRead;
    // EOS ?
    if(iBytesRead == 0)
    return iTotalBytesRead;
    iTotalBytesRead += iBytesRead;
    if(string != nil)
    [string appendString:[NSString stringWithCString:buffer length:(unsigned)iBytesRead]];
    3. SEND
    CFIndex iBytesSent = CFWriteStreamWrite (
    m_WriteStream,
    buffer,
    bufferLength
    Thanks a lot for your help,
    Dan

  • Socket communication error

    I am facing a problem in presentation server .
    When i am using AGO date functions i have encountered an error named as.:
    nQS Error:12002 : Socket Communication error at call=recv (number=10054)
    I have goggle'd it but cannot understand thier explanation ...

    Hi,
    Mistakenly my machine got restarted and after that when I tried to start OPMN services,its showing all the processes alive but after that ,while restarting BI services from windows
    its throwing an error of unexpectedly shutting down of services.
    My NQS log says:
    [nQSError: 12010] Communication error connecting to remote end point: address = 192.168.10.209; port = 80.
    [nQSError: 46119] Failed to open HTTP connection to server 192.168.10.209 at port 80.
    I have checked that IP is still same. What is the issue behind it?
    This is very urgent.I have already posted this issues many times but didn't get any response So please help.

  • How to correct socket communications error 10054: connection reset by peer

    We are running Lookout 5.1 (build 8) reading data through Modbus Ethernet Drivers and we are constantly getting "socket communications error 10054: connection reset by peer" alarms on the server. When I connect to the server file with a client file the client is experiencing communications problems including locking up when editing, trends not showing up, stops updating completely (can only be corrected by restarting server file), and losing symbolic link.
    Does anyone know how to stop this alarm from happening and if this could be the cause of my faulty server-client connection or is this strictly a problem between the server and the ethernet radios in the field?
    Any response would be appreciated.
    Thanks!
    Jason
    Jason Phillips

    DST1,
    All I had to do was increase the receive timeout in each driver's properties until the socket errors disappeared. I have them all set to 30000 msec. Communications have been great on this wireless ethernet system ever since.
    Sorry for not answering sooner - needed to make time to go back and look at the file and then TS Lee came our way!
    Jason Phillips

  • How to manage socket communications

    i need to learn about how to manage socket communications. does any one has sample codes to share that illustrates how to manage sockets? Im going to create an application that listens over a socket. My socket listener should be able to read over the socket continuously without user intervention. If there's no data, it would wait until something comes in. If some data come in, the listener should be able to read it automatically, and save data in db.
    Im thinking of an infinite loop here, but the problem
    arises when the socket is waiting for data to come in. The application consumes 100% CPU resources. And im only running one instance of my socket listener. My solution here is to use threads and let the thread SLEEP for a while when no there's no data yet.
    Any advise on this matter is very much appreciated. Thank you.

    It sounds, that you are using non-blocking read from a socket inside a busy wait loop. You should do a blocking read, which means your process/thread will be suspended by OS untill something is available on your socket.
    I'm new to Java and I can not say how actually to implement this, but look for "blocking/non-blocking read" in network interface documentation.
    Zhenya.

  • Communication problem between NetBeans and Tomcat

    hi!
    i got a quite mysterious problem. here is what happens:
    - i start NetBeans 5.5.1 (the first time)
    - i want to debug my JSF-Project, the Debugger starts
    - After a few seconds the debugger waits for tomcat (it sais: "Waiting for Tomcat...") and tomcat starts
    - Again after a few seconds the tomcat-debugger-output sais "Tomcat startet in 3333 ms".
    okay.
    when i enter http://localhost:8084/ in my browser i get the tomcat homepage, so the server has definitely started! But nothing happens in NetBeans and nothing happens with my project....
    In the lower-right corner i see this blue working-bar that sais "deploying project" but nothing happens. The Project-Debugger-Output still sais "Waiting for Tomcat..." but nothing happens...
    And after something around 3 minutes (i guess it's a timeout) i get the error "Starting of Tomcat failed." But is HAS started, i can login to the Administration-Area in my browser!
    so i guess there is a communication problem between netbeans an tomcat. Netbeans waits for a message from tomcat but tomcat doesn't send it..or netbeans doesn't understand it.
    But the story goes on:
    When i press the debug-button a second time it takes only a few seconds till i get the message: "Tomcat server port 8084 already in use". OF COURSE! Because Tomcat has already startet and can't be stoped by NetBeans.
    i'm trying to solve this problem for 4 days now, so i would be very happy if anyone has an idea where to start/continue the search...
    thanks,
    flo.
    some system-info:
    - windows vista business 32-bit
    - no firewall is running
    - AntiVir Personal Edition IS running
    - Yahoo Widgets Engine IS running
    - no other software is running
    and finally the tomcat-log:
    Using CATALINA_BASE: C:\Users\Administrator\.netbeans\5.5.1\apache-tomcat-5.5.17_base
    Using CATALINA_HOME: C:\Program Files\NetBeans\enterprise3\apache-tomcat-5.5.17
    Using CATALINA_TMPDIR: C:\Users\Administrator\.netbeans\5.5.1\apache-tomcat-5.5.17_base\temp
    Using JRE_HOME: C:\Program Files\Java\jdk1.5.0_12
    Listening for transport dt_shmem at address: tomcat_shared_memory_id
    21.09.2007 18:27:50 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
    INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.5.0_12\bin;.;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\ThinkPad\ConnectUtilities;C:\Program Files\Common Files\Teleca Shared;C:\Program Files\Common Files\Adobe\AGL;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Program Files\cvsnt;
    21.09.2007 18:27:50 org.apache.coyote.http11.Http11BaseProtocol init
    INFO: Initializing Coyote HTTP/1.1 on http-8084
    21.09.2007 18:27:50 org.apache.catalina.startup.Catalina load
    INFO: Initialization processed in 1862 ms
    21.09.2007 18:27:50 org.apache.catalina.core.StandardService start
    INFO: Starting service Catalina
    21.09.2007 18:27:50 org.apache.catalina.core.StandardEngine start
    INFO: Starting Servlet Engine: Apache Tomcat/5.5.17
    21.09.2007 18:27:50 org.apache.catalina.core.StandardHost start
    INFO: XML validation disabled
    21.09.2007 18:27:53 org.apache.coyote.http11.Http11BaseProtocol start
    INFO: Starting Coyote HTTP/1.1 on http-8084
    21.09.2007 18:27:54 org.apache.jk.common.ChannelSocket init
    INFO: JK: ajp13 listening on /0.0.0.0:8009
    21.09.2007 18:27:54 org.apache.jk.server.JkMain start
    INFO: Jk running ID=0 time=0/31 config=null
    21.09.2007 18:27:54 org.apache.catalina.storeconfig.StoreLoader load
    INFO: Find registry server-registry.xml at classpath resource
    21.09.2007 18:27:54 org.apache.catalina.startup.Catalina start
    INFO: Server startup in 3626 ms

    As i wrote before, the same problem occured for me. I have found a solution which is : Go to tools menu and then select options . In the proxy info, select No Proxy.
    I hope this help you

  • Communication Problem with the second battery

    Hello,
    In Lenovo Solution Center it says that there is communiction problem with the second battery. I already had this problem some months ago, back then it didn't charge the second battery. I got a new one and it worked again. Now it says the same thing "communication problem", but i can charge the battery and I also can't find any other sign of something not working. But still- it seems weird that the program tells me something is wrong. Can somebody help me?
    Thanks Lina

    Hi, Lina
    What is the machine type and model of your computer? Also, what operating system are you running?
    Thanks in advance,
    Adam
    Did someone help you today? Press the star on the left to thank them with a Kudo!
    If you find a post helpful and it answers your question, please mark it as an "Accepted Solution!" This will help the rest of the community with similar issues identify the verified solution and benefit from it.

  • Communication problem with proxy server

    We have establish the configuration of an iPad to access the enterprise net, but when trying to access any webpage we get the next message: Safari can not open the page. Error:"There is a communication problem with proxy web server (HTTP)"
    The access has no problems with other movile devices.
    Ahy help?

    Hi,
    I am not sure whether you have already solved the problem or not....
    Do the following to deploy MobileBIService.war file on tomcat
    1.Stop Tomcat Web application server.
    2.Copy the file, MobileBIService.war from [Install directory]\Mobile 14\Client to the Tomcat's "Webapps" directory.
    In my case, I copied the MobileBIService.war from C:\Program Files (x86)\SAP BusinessObjects\Mobile14\Client to C:\Program Files (x86)\SAP BusinessObjects\Tomcat6\webapps. ( I used BO 4.0 SP02)
    3.     Start Tomcat.
    Restarting Tomcat would automatically deploy war file as a Web App
    One folder u201CMobileBiServiceu201D will appear in webapps folder when MobileBIService.war is deployed successfully.
    Hope it helps.
    Regards,
    Ankur

  • Communication problem the web server extension (WGATE) failed to receive a

    Hi,
    When a user tries to access his timesheet he get the below error:
    <b>communication problem the web server extension (WGATE) failed to receive a response from the ITS web service</b>
    Only ONE user is getting this error. If everyone get\s the same we can check on the ITS side, but if only ONE user is getting it.
    Please help.
    Regards,
    PK

    HI ALL,
    Thanks for your time. The issue got resolved however without cheking the logs itself. The problem was with the scripfile. All other users and all other scripts were working, except one. And it got recified.
    Regards,
    P. Kumaravel.

  • COMMUNICATION PROBLEM WITH SCANNER TO COMPUTER OF DESKJET 3050 j610

    WHEN i TRY TO SCAN USING MY DESKJET 3050 j610 A MESSAGE SHOWS 'COMMUNICATION  PROBLEM NOT CONNECTED THEREFORE i AM NOT ABLE TO SCAN.
     i HAVE BEEN TRYING TO RESOLVE THIS PROBLEM OVER 8 HOURS AND I' M GETTING SICK. I'VE TRIED EVERYTHING AVAILABLE ON THE SUPPORT PROGRAMS INCLUDING 'PAINT' AND NOTHING WORKS.
     I NEED A ANSWER OR I;LL THROW THIS THING OUT

    I have the same problem here, i have two PC's both running Windows 7 but only one works printing and scanning wirelessly.
    On the PC running Windows 7 32bit wireless printing and scanning works great.
    On the PC running windows 7 64bit only wireless printing works. Havent found a solution, but just a work around. Here it is......
    1. Got to you printer and hit the Wireless button to find the IP address your router gave it.
    2. Open up your Internet browser and input the IP address.
    and...BAM!!!       if it worked it should take you to the Deskjet 3050 All-in-One J610a Embedded Web Server page and from there you can scan with what looks like all the original options if the thing was working to begin with and save to your PC.

  • Communication Problem: E_ADEPT_REQUEST_EXPIRED

    I keep getting this message :
    Error getting License. License Server Communication Problem:
    E_ADEPT_REQUEST_EXPIRED

    The same problem. Origin  is, I suppose, a changement of profile when I lost all my data and programs by a virus. Who can help us?

  • Communication problem

    Hi, I think I have a communication problem between the servers in a cluster,
              I attached a picture of the administration console where it seems that one
              server in the cluster cant communicate with the other.
              (one server is running on Windows and the other on Linux)
              Any ideas to solve this problems?
              Thanks
              [console.jpg]
              

    Using multicastTest I found that the messages that the windows machine
              produces are lost. Nobody receives that messages.
              I don't know what might be happening
              cheers
              "Campot" <[email protected]> escribió en el mensaje
              news:[email protected]..
              > Hi, I think I have a communication problem between the servers in a
              cluster,
              > I attached a picture of the administration console where it seems that one
              > server in the cluster cant communicate with the other.
              > (one server is running on Windows and the other on Linux)
              >
              > Any ideas to solve this problems?
              > Thanks
              >
              >
              >
              

  • Communication problem from the vpn-anyconnect to easy-vpn-remote

    Hi Team,
    I have a communication problem from the vpn-anyconnect to easy-vpn-remote, I´ll explain better bellow and see the attached
    topology:
    1) VPN Tunnel between HQ to Branch Office - That´s OK
    2) VPN Tunnel between Client AnyConnect to HQ - That´s OK
    The idea is that the Client Anyconnect is to reach the LAN at Branch Office, but did not reach.
    The communication is stablished just when I start a session (icmp and/or rdp) from Branch Office to the Client AnyConnect,
    in this way, the communication is OK, but just during a few minutes.
    Could you help me?
    Bellow the IOS version and configurations
    ASA5505 Version 8.4(7)23 (headquarters)
    ASA5505 Version 8.4(7)23 (Branch)
    **************** Configuration Easy VPN Server (HQ) **************** 
    crypto dynamic-map DYNAMIC-MAP 5 set ikev1 transform-set ESP-AES-256-SHA
    crypto map outside-link-2_map 1 ipsec-isakmp dynamic DYNAMIC-MAP
    crypto map outside-link-2_map 65535 ipsec-isakmp dynamic SYSTEM_DEFAULT_CRYPTO_MAP
    crypto map outside-link-2_map interface outside-link-2
    access-list ACL_EZVPN standard permit 10.0.0.0 255.255.255.0 
    access-list ACL_EZVPN standard permit 192.168.1.0 255.255.255.0 
    access-list ACL_EZVPN standard permit 192.168.50.0 255.255.255.0 
    access-list ACL_EZVPN standard permit 10.10.0.0 255.255.255.0 
    group-policy EZVPN_GP internal
    group-policy EZVPN_GP attributes
     split-tunnel-policy tunnelspecified
     split-tunnel-network-list value ACL_EZVPN
     nem enable 
    tunnel-group EZVPN_TG type remote-access
    tunnel-group EZVPN_TG general-attributes
     default-group-policy EZVPN_GP
    tunnel-group EZVPN_TG ipsec-attributes
     ikev1 pre-shared-key *****
    object-group network Obj_VPN_anyconnect-local
     network-object 192.168.1.0 255.255.255.0
     network-object 192.168.15.0 255.255.255.0
    object-group network Obj-VPN-anyconnect-remote
     network-object 192.168.50.0 255.255.255.0
    object-group network NAT_EZVPN_Source
     network-object 192.168.1.0 255.255.255.0
     network-object 10.10.0.0 255.255.255.0
    object-group network NAT_EZVPN_Destination
     network-object 10.0.0.0 255.255.255.0
    nat (inside,outside-link-2) source static Obj_VPN_anyconnect-local Obj_VPN_anyconnect-local destination static Obj-VPN-
    anyconnect-remote Obj-VPN-anyconnect-remote no-proxy-arp route-lookup
    nat (inside,outside-link-2) source static NAT_EZVPN_Source NAT_EZVPN_Source destination static NAT_EZVPN_Destination 
    NAT_EZVPN_Destination no-proxy-arp route-lookup
    nat (outside-link-2,outside-link-2) source static Obj-VPN-anyconnect-remote Obj-VPN-anyconnect-remote destination static 
    NAT_EZVPN_Destination NAT_EZVPN_Destination no-proxy-arp route-lookup
    **************** Configuration VPN AnyConnect (HQ) **************** 
    webvpn
     enable outside-link-2
     default-idle-timeout 60
     anyconnect-essentials
     anyconnect image disk0:/anyconnect-win-2.5.2014-k9.pkg 1
     anyconnect profiles Remote_Connection_for_TS_Users disk0:/remote_connection_for_ts_users.xml
     anyconnect enable
     tunnel-group-list enable
    access-list split-tunnel standard permit 192.168.1.0 255.255.255.0 
    access-list split-tunnel standard permit 192.168.15.0 255.255.255.0 
    access-list split-tunnel standard permit 10.0.0.0 255.255.255.0 
    group-policy clientgroup internal
    group-policy clientgroup attributes
     wins-server none
     dns-server value 192.168.1.41
     vpn-tunnel-protocol ssl-client 
     split-tunnel-policy tunnelspecified
     split-tunnel-network-list value split-tunnel
     default-domain value ipconnection.com.br
     webvpn       
      anyconnect keep-installer installed
      anyconnect ssl rekey time 30
      anyconnect ssl rekey method ssl
      anyconnect profiles value Remote_Connection_for_TS_Users type user
      anyconnect ask none default anyconnect
    tunnel-group sslgroup type remote-access
    tunnel-group sslgroup general-attributes
     address-pool vpnpool
     authentication-server-group DC03
     default-group-policy clientgroup
    tunnel-group sslgroup webvpn-attributes
     group-alias IPConnection-vpn-anyconnect enable
    object-group network Obj_VPN_anyconnect-local
     network-object 192.168.1.0 255.255.255.0
     network-object 192.168.15.0 255.255.255.0
    object-group network Obj-VPN-anyconnect-remote
     network-object 192.168.50.0 255.255.255.0
    object-group network NAT_EZVPN_Source
     network-object 192.168.1.0 255.255.255.0
     network-object 10.10.0.0 255.255.255.0
    object-group network NAT_EZVPN_Destination
     network-object 10.0.0.0 255.255.255.0
    nat (inside,outside-link-2) source static Obj_VPN_anyconnect-local Obj_VPN_anyconnect-local destination static Obj-VPN-
    anyconnect-remote Obj-VPN-anyconnect-remote no-proxy-arp route-lookup
    nat (inside,outside-link-2) source static NAT_EZVPN_Source NAT_EZVPN_Source destination static NAT_EZVPN_Destination 
    NAT_EZVPN_Destination no-proxy-arp route-lookup
    nat (outside-link-2,outside-link-2) source static Obj-VPN-anyconnect-remote Obj-VPN-anyconnect-remote destination static 
    NAT_EZVPN_Destination NAT_EZVPN_Destination no-proxy-arp route-lookup

    Hi,
    the communication works when you send traffic from easyvpn branch side because it froms the IPSEC SA for local subnet and anyconnect HQ pool. The SA will only form when branch initiates the connection as this is dynamic peer connection to HQ ASA.
    when there no SA between branch and HQ for this traffic, HQ ASA has no clue about where to send the traffic from anyconnect to branch network.
    I hope it explains the cause.
    Regards,
    Abaji.

Maybe you are looking for

  • Urgent help about Interface problem

      Please take a look at the following picture: Description:The vitual keyboard doesn't disappear when I slide to the leftmost "Search :iPhone" and then slide to the right.Whatever I slide the interface It remains until I start an app ! What is the pr

  • Text object inside MC tracked as button

    Hi people! I'm trying to use a dynamic text box inside a movie clip tracked as button, but the text box object is not recognized. The system refers to it as instanceX where X is a random number. Below an example of the debug list object: Level #0: Fr

  • DragnDrop row in JTable

    I need to add dragndrop functionality to my JTable. I am using AbstractTableModel since I need to control the data at runtime. Can anyone give sample code to insert row.

  • Streaming live videos on flex mobile

    Hi I have a flex mobile application targeting the mobile tablets and I was wondering if you guys know of any tutorial about putting live feed videos on flex, I have this code that I'm using on my flex 3 to target mac and pc that uses on adobe air, th

  • Hi , I would like to know is there any way we can check purchased apps , to bank statements

    I want to know what this is : 563 08SEP13 , APPLE ITUNES , STORE-GBP , ITUNES.COM LU 5.98