Supporting Events in Sockets Programming

1- Is possible to support events in programming Sockets appliaction? I mean that if possible to fire event when data is recieved or there data want to be sent?
2- I developed an application that read from a permenant socket connection. I enter in a while loop for ever to detect if there any received data or not. This endless loop sloww down the system and take a huge CPU time. Is there any other method for notification without this loop?
3- How can I know if the socket was diconnected or not?
Thank you for your help.

I've posted several simple Socket examples that do exactly those things. If you want to get the results back to Swing as the socket gets data you can send it back with invokeLater. If you want to know when it closes watch for the EOF indication of the receive side. You should also trap the SocketInterrupt on both the send and receive loops. Take a look at the Client and Switch methods on this thread.
http://forum.java.sun.com/thread.jsp?forum=31&thread=436227&start=21&range=1
http://forum.java.sun.com/thread.jsp?forum=31&thread=436227&start=28&range=1

Similar Messages

  • Event-driven Socket Programming

    I've developed an application that communicates with a device over TCP/IP. Right now I have an infinite loop in another thread that continually checks for data on the socket, calling Thread.sleep() each time to prevent the receive thread from using the entire CPU, but I think this may be limiting my throughput. I'd like to either find a class that will generate an event for me when data arrives (which I'm doing myself at present), or be able to call wait() and have my thread notify()ed when data arrives on the socket. Can either of these things be done?

    I see. Could you post some of your code please? I
    suspect you are doing a number of things incorrectly
    here. Thread.sleep is not a good sign. I suspect you
    may be using available.Yes, I'm using .available(). In the code below, link is a wrapper around a TCP socket. Incoming messages are delineated by a start and end byte, and the parseByte() function switches states and resets the receiveOffset counter depending on each incoming byte. Fully blocking I/O was not an option, as I needed to be able to detect incomplete messages and deliver an event to the application.
                       /* Continue running until the port is closed and there is no data left */
                       while(link != null && (link.isOpen() || receiveOffset > 0)) {
                               /* Read all available bytes and parse them one at a time */
                               while(link.available() > 0) {
                                       byte b;
                                       /* Parse the next input byte */
                                       b = link.read(1)[0];
                                       parseByte(b);
                                       /* Reset the no-input loop counter as there was input */
                                       loopCount = 0;
                               /* Increment the no-input loop counter if there is data in the receive buffer */
                               if(receiveOffset > 0) {
                                       loopCount++;
                               } else {
                                       /* Reset the no-input loop counter as the receive buffer is empty */
                                       loopCount = 0;
                               /* Check for too many loops with data in the receive buffer */
                               if(loopCount > LOOP_MAX) {
                                       /* Incomplete message - code omitted */
                               /* Allow other threads to run */
                               try { Thread.sleep(1); } catch(Exception e) { }
                       }

  • Does Java2 support raw socket programming?

    Hi,
    Does Java2 support raw socket programming? If not, are there any third-party libraries providing such support? Thanks for any comments!
    Yong

    no,
    first result on google would suggest so.
    http://www.google.com/search?q=raw%20socket%20java%20lib&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8

  • Simple Socket Programming, But,.......

    This code is Server, Client Socket program code.
    Client send data to server and then, Server get data and save it
    to file in server.
    I think client works well.
    But, Server.java file have some problem.
    It generate ClassNotFoundException!
    So the result file have garbage value only.
    Any idea please................
    /////////////////////////// Server.java /////////////////////////////////
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Server extends JFrame
         private JTextField enter;
         private JTextArea display;
         ObjectInputStream input;
         ObjectOutputStream output;
         FileOutputStream resultFile;
         public Server(){
              super("Server");
              Container c = getContentPane();
              enter = new JTextField();
              enter.setEnabled(false);
              enter.addActionListener(
                   new ActionListener(){
                        public void actionPerformed(ActionEvent ev){
                             //None
              c.add(enter, BorderLayout.NORTH);
              display = new JTextArea();
              c.add(new JScrollPane(display),
                   BorderLayout.CENTER);
              setSize(300, 150);
              show();
         public void runServer(){
              ServerSocket server;
              Socket connection;
              int counter = 1;
              display.setText("");
              try{
                   server = new ServerSocket(8800, 100);
                   while(true){
                        display.append("Waiting for connection\n" + counter);
                        connection = server.accept();
                        display.append("Connection " + counter +
                             "received from: " + connection.getInetAddress().getHostName());
                        resultFile = new FileOutputStream("hi.txt");
                        output = new ObjectOutputStream(resultFile);
                        output.flush();
                        input = new ObjectInputStream(
                             connection.getInputStream()
                        display.append("\nGod I/O stream, I/O is opened\n");
                        enter.setEnabled(true);
                        DataForm01 data = null;
                        try{
                             data = (DataForm01) input.readObject();
                             output.writeObject(data);
                             data = (DataForm01) input.readObject();
                             output.writeObject(data);
                        catch(NullPointerException e){
                             display.append("Null pointer Exception");
                        catch(ClassNotFoundException cnfex){
                             display.append("\nUnknown Object type received");
                        catch(IOException e){
                             display.append("\nIOException Occured!");
                        if(resultFile != null){
                             resultFile.flush();
                             resultFile.close();
                        display.append("\nUser Terminate connection");
                        enter.setEnabled(false);
                        input.close();
                        output.close();
                        connection.close();
                        ++counter;
              catch(EOFException eof){
                   System.out.println("Client Terminate Connection");
              catch(IOException io){
                   io.printStackTrace();
              display.append("File is created!");
         public static void main(String[] args){
              Server app = new Server();
              app.addWindowListener(
                   new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                             System.exit(0);
              app.runServer();
    /////////////////////////// client.java /////////////////////////////////
    * Client.java
    * @author Created by Omnicore CodeGuide
    package Client;
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Client extends JFrame
         private JTextField enter;
         private JTextArea display;
         ObjectOutputStream output;
         String message = "";
         //DataForm01 dfrm[];
         public Client(){
              super("Client");
              Container c = getContentPane();
              enter = new JTextField();
              enter.setEnabled(false);
              enter.addActionListener(
                   new ActionListener(){
                        public void actionPerformed(ActionEvent e){
                             //None.
              c.add(enter, BorderLayout.NORTH);
              display = new JTextArea();
              c.add(new JScrollPane(display), BorderLayout.CENTER);
              setSize(300, 150);
              show();
         public void runClient(){
              Socket client;
              try{
                   display.setText("Attemption Connection...\n");
                   client = new Socket(InetAddress.getByName("127.0.0.1"), 8800);
                   display.append("Connected to : = " +
                        client.getInetAddress().getHostName());
                   output = new ObjectOutputStream(
                        client.getOutputStream()
                   output.flush();
                   display.append("\nGot I/O Stream, Stream is opened!\n");
                   enter.setEnabled(true);
                   dfrm = new DataForm01[10];
                   for(int i=0; i<10; i++){
                        dfrm[i] = new DataForm01();
                        dfrm.stn = i;
                        dfrm[i].name = "Jinbom" + Integer.toString(i);
                        dfrm[i].hobby = "Soccer" + Integer.toString(i);
                        dfrm[i].point = (double)i;
                   for(int i=0; i<10; i++){
                        try{
                             output.writeObject(dfrm[i]);
                             display.append(dfrm[i].getData());
                        catch(IOException ev){
                             display.append("\nClass is not founded!\n");
                   DataForm01 dfrm = new DataForm01();
                   dfrm.stn=1;
                   dfrm.name="Jinbom";
                   dfrm.hobby = "Soccer";
                   dfrm.point = (double)0.23;
                   DataForm01 dfrm02 = new DataForm01();
                   dfrm02.stn = 1;
                   dfrm02.name = "Jimbin";
                   dfrm02.hobby = "Soccer";
                   dfrm02.point = 0.4353;
                   try{
                        output.writeObject(dfrm);
                        display.append(dfrm.getData());
                        output.writeObject(dfrm02);
                        display.append(dfrm.getData());
                   catch(IOException ev){
                        display.append("\nClass is not founded!\n");
                   if(output != null) output.flush();
                   display.append("Closing connection.\n");
                   output.close();
                   client.close();
              catch(IOException ioe){
                   ioe.printStackTrace();
         public static void main(String[] args){
              Client app = new Client();
              app.addWindowListener(
                   new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                             System.exit(0);
              app.runClient();
    /////////////////////////// DataForm01.java /////////////////////////////////
    import java.io.*;
    public class DataForm01 implements Serializable
         int stn;
         String name;
         String hobby;
         double point;
         public String getData(){
              return Integer.toString(stn) + name + hobby + Double.toString(point);

    This is indented code. ^^;
    It's better to view.
    ////////////////////////// Server.java /////////////////////////////////////////
    * Server.java
    * @author Created by Omnicore CodeGuide
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Server extends JFrame
         private JTextField enter;
         private JTextArea display;
         ObjectInputStream input;
         ObjectOutputStream output;
         FileOutputStream resultFile;
         public Server(){
              super("Server");
              Container c = getContentPane();
              enter = new JTextField();
              enter.setEnabled(false);
              enter.addActionListener(
                   new ActionListener(){
                        public void actionPerformed(ActionEvent ev){
                             //None
              c.add(enter, BorderLayout.NORTH);
              display = new JTextArea();
              c.add(new JScrollPane(display),
                     BorderLayout.CENTER);
              setSize(300, 150);
              show();
         public void runServer(){
              ServerSocket server;
              Socket connection;
              int counter = 1;
              display.setText("");
              try{
                   server = new ServerSocket(8800, 100);
                   while(true){
                        display.append("Waiting for connection\n" + counter);
                        connection = server.accept();
                        display.append("Connection " + counter +
                             "received from: " + connection.getInetAddress().getHostName());
                        resultFile = new FileOutputStream("hi.txt");
                        output = new ObjectOutputStream(resultFile);
                        output.flush();
                        input = new ObjectInputStream(
                             connection.getInputStream()
                        display.append("\nGod I/O stream, I/O is opened\n");
                        enter.setEnabled(true);
                        DataForm01 data = null;
                        for(int i=0; i<10; i++){
                             try{
                                  data = (DataForm01) input.readObject();
                                  if(data == null) break;
                                  output.writeObject(data);
                             catch(NullPointerException e){
                                  display.append("Null pointer Exception");
                             catch(ClassNotFoundException cnfex){
                                  display.append("\nUnknown Object type received");
                             catch(IOException e){
                                  display.append("\nIOException Occured!");
                        DataForm01 data = null;
                        try{
                             data = (DataForm01) input.readObject();
                             output.writeObject(data);
                             data = (DataForm01) input.readObject();
                             output.writeObject(data);
                        catch(NullPointerException e){
                             display.append("Null pointer Exception");
                        catch(ClassNotFoundException cnfex){
                             display.append("\nUnknown Object type received");
                        catch(IOException e){
                             display.append("\nIOException Occured!");
                        if(resultFile != null){
                             resultFile.flush();
                             resultFile.close();
                        display.append("\nUser Terminate connection");
                        enter.setEnabled(false);
                        input.close();
                        output.close();
                        connection.close();
                        ++counter;
              catch(EOFException eof){
                   System.out.println("Client Terminate Connection");
              catch(IOException io){
                   io.printStackTrace();
              display.append("File is created!");
         public static void main(String[] args){
              Server app = new Server();
              app.addWindowListener(
                   new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                             System.exit(0);
              app.runServer();
    ////////////////////////// Client.java /////////////////////////////////////////
    * Client.java
    * @author Created by Omnicore CodeGuide
    package Client;
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Client extends JFrame
         private JTextField enter;
         private JTextArea display;
         ObjectOutputStream output;
         String message = "";
         //DataForm01 dfrm[];
         public Client(){
              super("Client");
              Container c = getContentPane();
              enter = new JTextField();
              enter.setEnabled(false);
              enter.addActionListener(
                   new ActionListener(){
                        public void actionPerformed(ActionEvent e){
                             //None.
              c.add(enter, BorderLayout.NORTH);
              display = new JTextArea();
              c.add(new JScrollPane(display), BorderLayout.CENTER);
              setSize(300, 150);
              show();
         public void runClient(){
              Socket client;
              try{
                   display.setText("Attemption Connection...\n");
                   client = new Socket(InetAddress.getByName("127.0.0.1"), 8800);
                   display.append("Connected to : = " +
                          client.getInetAddress().getHostName());
                   output = new ObjectOutputStream(
                        client.getOutputStream()
                   output.flush();
                   display.append("\nGot I/O Stream, Stream is opened!\n");
                   enter.setEnabled(true);
                   dfrm = new DataForm01[10];
                   for(int i=0; i<10; i++){
                        dfrm[i] = new DataForm01();
                        dfrm.stn = i;
                        dfrm[i].name = "Jinbom" + Integer.toString(i);
                        dfrm[i].hobby = "Soccer" + Integer.toString(i);
                        dfrm[i].point = (double)i;
                   for(int i=0; i<10; i++){
                        try{
                             output.writeObject(dfrm[i]);
                             display.append(dfrm[i].getData());
                        catch(IOException ev){
                             display.append("\nClass is not founded!\n");
                   DataForm01 dfrm = new DataForm01();
                   dfrm.stn=1;
                   dfrm.name="Jinbom";
                   dfrm.hobby = "Soccer";
                   dfrm.point = (double)0.23;
                   DataForm01 dfrm02 = new DataForm01();
                   dfrm02.stn = 1;
                   dfrm02.name = "Jimbin";
                   dfrm02.hobby = "Soccer";
                   dfrm02.point = 0.4353;
                   try{
                        output.writeObject(dfrm);
                        display.append(dfrm.getData());
                        output.writeObject(dfrm02);
                        display.append(dfrm.getData());
                   catch(IOException ev){
                        display.append("\nClass is not founded!\n");
                   if(output != null) output.flush();
                   display.append("Closing connection.\n");
                   output.close();
                   client.close();
              catch(IOException ioe){
                   ioe.printStackTrace();
         public static void main(String[] args){
              Client app = new Client();
              app.addWindowListener(
                   new WindowAdapter(){
                        public void windowClosing(WindowEvent e){
                             System.exit(0);
              app.runClient();
    ////////////////////////// DataForm01.java /////////////////////////////////////////
    * DataForm01.java
    * @author Created by Omnicore CodeGuide
    import java.io.*;
    public class DataForm01 implements Serializable
         int stn;
         String name;
         String hobby;
         double point;
         public String getData(){
              return Integer.toString(stn) + name + hobby + Double.toString(point);

  • Raw socket programming  is avilable in java

    hello,
    I want to reset my target device using device
    MAC address (not IP address).
    Is java support raw socket programming.
    can i send packets using MAC address in Java like C.
    I search in google. but, it shows there is no raw socket pgm support in java.
    any one help me this issue.

    JPCap

  • Multithread socket programming

    Hello,
    I'm new to socket programming world.
    I've to send/receive the data from a external system thru socket. Since # of data to be processed is huge, I'm thinking to have multiple threads to send/receive thru socket. It looks like socket is NOT thread safe. So I'm thinking to have separate socket connection for each thread. Each thread will create the new socket connection and close it before it dies. Creating a new socket for each thread does not seem to be good practice to me.
    Is this good design for socket programming? If not, please share your ideas.
    I'm also thinking to have socket connecting pooling to re-use the connections. Is there any lib for doing this?
    Thanks for the help

    sorry i was busy on something else till now. thanks for reply.
    Lets say that I've 100 request xml in the blocking queue. I would like to have producer/consumer model. producer will write the request from queue to channel and consumer will capture the response from channel . so sending/receiving happens simultaneously.
    If I have single channel, I''m still not quite sure how i can read/write from channel at the same time. Please clarify with some examples.
    i went thru few article and found following code to read/write. here looks like i have to write all 100 request first into channel and then be ready to read response. is my understanding correct?
    // Check what event is available and deal with it
    if (key.isConnectable()) {
    // finishConnection(key);
    } else if (key.isReadable()) {
    this.read(key);
    } else if (key.isWritable()) {
    this.write(key);
    }

  • Microcontroller socket programming with CVIwindows

    Hello,
    I am working on a project where a computer with CVIwindows GUI will be a server and my clients will be DS80C410 networked microcontrollers which has an inbuilt ethernet stack. The comm protocol will be TCP using socket programming. How do I develop socket programming on CVI to get the communication between microcontroller and CVI server?
    Regards,
    SR

    I've attached an example c file for a multiclient TCP server from the shipping examples of CVI. CVI includes a TCP and a UDP library and you can add expanded functionality using the subroutine you mentioned. There's also some basic information on TCP programming in CVI in that document I linked in my first response.
    Also you can get a 30 day trial of CVI here:
    http://digital.ni.com/src.nsf/websearch/70C455BB6564DEC986257880005141F8?OpenDocument&node=node=2030...
    I hope this answers your questions.
    Product Support Engineer
    National Instruments
    Attachments:
    MultiClientServer.c ‏20 KB

  • ABAP Error:Illegal interruption of the event LOAD-OF-PROGRAM (in MIGO-Goods issue to Production)

    Hi Experts,
    while i am doing MIGO(Goods Issue to Production Order, I am getting the below ABAP Error:
    Please give solution, It is urgent requirement.
    THE ERROR IS:
    Short text
         Illegal interruption of the event LOAD-OF-PROGRAM.
    What happened?
         Error in the ABAP Application Program
         The current ABAP program "/MRSS/SAPLRAP_INT_OB" had to be terminated because it
          has come across a statement that unfortunately cannot be executed.
    Error analysis
         During the flow of the event LOAD-OF-PROGRAM (event for the
         initialization of an ABAP program), a condition occurred under which
         the event was to be left early. This is not permitted as it would
         result in an inconsistent status in the ABAP program.
    Trigger Location of Runtime Error
        Program /MRSS/SAPLRAP_INT_OB
        Include /MRSS/LRAP_INT_OBF00
        Row                                     34
        Module type                             (FORM)
        Module Name                             GLOBAL_INIT
    Source Code Extract
    Line  SourceCde
        4
        5 *&---------------------------------------------------------------------*
        6 *&      Form global_init
        7 *&---------------------------------------------------------------------*
        8 *       text
        9 *----------------------------------------------------------------------*
       10 FORM global_init.
       11
       12 * local data
       13   DATA lv_badi_impl_exists TYPE flag.
       14
       15
       16 * get ref to BAdIs
       17   CALL METHOD cl_exithandler=>get_instance "#EC CI_BADI_GETINST
       18     CHANGING
       19       instance = gv_ref_badi_inter_company.
       20 *  CALL METHOD cl_exithandler=>get_instance
       21 * CHANGING
       22 *      instance = gv_ref_badi_rap_back.
       23 *  CALL METHOD cl_exithandler=>get_instance
       24 *    CHANGING
       25 *      instance = gv_ref_badi_ps_int.
         26   CALL METHOD cl_exithandler=>get_instance "#EC CI_BADI_GETINST

    Hi Rob thanks for your response.  I thought about doing an OSS note however; I would think I would need to get the problem in config corrected first as it contradicts each other.  The problem I am talking about is how they are to return material to vendor....I have never even seen this as a process in my 10 years....
    Process.....when the PO is a return to vendor PO they go to migo and choose the goods receipt and mvmt type 101 and the system will default the 161 in the item level....the two are inconsistent.  If I try to change the top level to a 161 mvmt (as this is what I am used to seeing) it gives the error that the PO is not a stock transport order... Would you agree that I should correct that problem first before creating an OSS note?

  • Events in ABAP Programming

    Hi,
    Can anybody please list out the exact differences between the events 'LOAD-OF-PROGRAM', 'INITIALIZATION' and 'AT SELECTION-SCREEN OUTPUT'.
    Thanks in advance,
    Sujit.

    Hi,
    <u><b>LOAD-OF-PROGRAM:</b></u> When an ABAP program is loaded in an internal session, the runtime environment triggers the LOAD-OF-PROGRAM event, and the corresponding event block is executed.
    The processing block LOAD-OF-PROGRAM has approximately the same function in an ABAP program with type 1, M, F, or S as the constructor method of a class in ABAP Objects.
    Programs wiht type 1, M, F, or S can be loaded into an internal session in two ways:
    Program calls
    Whenever you call a program using SUBMIT or a transaction code, a new internal session is opened. The LOAD-OF-PROGRAM event is therefore called in each program call.
    External procedure calls
    The first time you call an external procedure (subroutine or function module), the main program of the procedure that you called is loaded into the internal session of the calling program. The eventLOAD-OF-PROGRAM is triggered and the corresponding processing block is executed before the procedure that you called. However, subsequent calls from the same calling program to a procedure in the same subroutine pool or function group do not trigger the LOAD-OF-PROGRAM event.
    so it's before the program is loaded in the memory for execution.
    <u><b>INITIALIZATION:</b></u>
    This event occurs before the standard selection screen is called. You can use it, for example, to initialize the input fields of the standard selection screen. This is the only possible way to change the default values of parameters or selection criteria defined in logical databases. To change a selection criterion, you must fill at least the components <seltab>-SIGN, <seltab>-OPTION, and <seltab>-LOW of the selection table <seltab>, otherwise it remains undefined.
    If you want to initialize input fields of the logical database, you need to find out the names of the fields. To do this for the logical database SAPDB<ldb>, use Transaction SLDB or choose Tools
    ABAP Workbench, followed by Development   Programming environ.   Logical databases. You
    can also display the technical information for the required field on the selection screen. To do
    this, call the F1 help for the required field and then choose Technical info. In the field Scrn Field
    of the following dialog box, you then see the name of the field used in the program.
    <u><b>AT SELECTION-SCREEN OUTPUT</b></u>
    event is triggered. This event block allows you to modify the selection screen directly before it is displayed.

  • TCP/IP socket programming in ABAP

    Hi,
    Is there any method of TCP socket programming in ABAP? For example is there any function module for creating a socket for a IP address and port number. After that, is it possible to send binary/text data to a connected IP/port destination. I need such a solution because I need to send raw data (native commans) to barcode printer on our network which has a static IP address and listens incoming data through a fixed port number specified in its documentation. For a solution, I coded some .NET VB and built a small application that acts as a RFC server program which can be called by SAP according to definitions I made in SM59 (I defined a new TCP connection and it works well sometimes!). In this application, data coming from SAP are transferred to the barcode printer. This is achived by the .NET Socket class library. This solution works well but after a few subsequent call from SAP, connection hangs! SAP cannot call the application anymore, I test the connection in SM59 and it also hangs, so I need to restart the VB application, but this is unacceptable in our project.
    As a result, I decided to code the program that will send data to the printer in ABAP as a function module or subroutine pool, so is there any way to create a socket in ABAP and connect to specific IP/port destination? I searched for possible function modules in SE37 and possible classes in SE24 but unfortunately I could not find one. For example, do know any kind of system function in ABAP (native commands executed by CALL statement), that can be used for this purpose?
    I would appreciate any help,
    Kind regards,
    Tolga
    Edited by: Tolga Togan Duz on Dec 17, 2007 11:49 PM

    Hi,
    I doubt that there is a low level API for sockets in ABAP. There is API for HTTP but probably that won't help you. As a workaround you can use external OS commands (transactions SM69 and SM49). For example on Unix you can use netcat to transfer file. Your FM needs to dump data into folder and then call netcat to transfer file.
    Cheers

  • How to raise an event from a program

    Hi,
    I am creating a workflow for HR, the person will request a basic pay change than, this will start the workflow. For this i am making a screen from where i need to triger the event for the workflow.
    Does anybody has any idea? of how to raise an event from a program. or has anybody worked on a scenario like this
    Khusro Habib

    You can also use the FM SAP_WAPI_CREATE_EVENT which is a little newer I think. (I don't have access to a system today so that may not be the exact name of the FM but if you search SE37 under SAPWAPIEVENT* you should find it.
    the parameters will be the event name, and the object key.  The object key will be the key field of the workflow object you are using. 
    For example if you were using the saled document object then the object key would be the sales document number.  Carefull how you enter the object key, it can be a little tricky on whether or not you need the leading zeros in the input parameter. 
    Hope this helps.
    Brent

  • File descriptor leak in socket programming

    We have a complex socket programming client package in java using java.nio (Selectors, Selectable channel).
    We use the package to connect to a server.
    Whenever the server is down, it tries to reconnect to the server again at regular intervals.
    In that case, the number of open file descriptors build up with each try. I am able to cofirm this using "pfile <pid>" command.
    But, it looks like we are closing the channels, selectors and the sockets properly when it fails to connect to the server.
    So we are unable to find the coding that causes the issue.
    We run this program in solaris.
    Is there a tool to track down the code that leaks the file descriptor.
    Thanks.

    Don't close the selector. There is a selector leak. Just close the socket channel. As this is a client you should then also call selector.selctNow() to have the close take final effect. Otherwise there is also a socket leak.

  • Java Swing and Socket Programming

    I am making a Messenger like yahoo Messenger using Swing and Socket Programming ,Multithreading .
    Is this techology feasible or i should try something else.
    I want to display my messenger icon on task bar as it comes when i install and run Yahoo Messenger.
    Which class i should use.

    I don't really have an answer to what you are asking. But I am developing the same kind of application. I am using RMI for client-server and server-server (i have distributed servers) communication and TCP/IP for client-client. So may be we might be able to help each other out. My email id is [email protected]
    Are you opening a new socket for every conversation? I was wondering how to multithread a socket to reuse it for different connections, if it is possible at all.
    --Poonam.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Network and socket programming in python

    i want to learn network and socket programming but i would like to do this in python.Reason behind this is that python is very simple and the only language i know . 
    anybody can suggest me which book should i pick.
    the book should have following specification--
    1)not tedious to follow
    2)lots of example
    3)starts with some networking stuff and then get into codes
    thanks in advance with regards.

    hmm. well, your requirements are almost contradictory.
    Not sure about books, except maybe dusty's.
    Most python books cover at least some network programming (unless the book is topic specific).
    I use lots of python-twisted at work. I mean ALOT. I wouldn't recommend it to someone looking for non-tedious though! I also like gevent/eventlet (esp. the async socket wrappers).
    EDIT: Wow. My post wasn't really helpful at all. Sorry!
    Last edited by cactus (2010-09-04 09:16:54)

  • Socket Programing in J2ME - Confused with Sun Sample Code

    Hai Everybody,
    I have confused with sample code provided by Sun Inc , for the demo of socket programming in J2ME. I found the code in the API specification of J2ME. The code look like :-
    // Create the server listening socket for port 1234
    ServerSocketConnection scn =(ServerSocketConnection) Connector.open("socket://:1234");
    where Connector.open() method return an interface Connection which is the base interface of ServerSocketConnection. I have confused with this line , is it is possible to cast base class object to the derived class object?
    Plese help me in this regards
    Thanks in advance
    Sulfikkar

    There is nothing to be confused about. The Connector factory creates an implementation of one of the extentions of the Connection interface and returns it.
    For a serversocket "socket://<port>" it will return an implementation of the ServerSocketConnection interface. You don't need to know what the implementation looks like. You'll only need to cast the Connection to a ServerSocketConnection .

Maybe you are looking for

  • Apps Wont Update

    On my home screen I see that I have apps that need to be updated. There is the bubble with the number in the top right corner. But when I open the app store and go to updates i see the apps need to be updated for like a second and then they all dissa

  • Not able to generate AS2 MDN when receiving custom XML via AS2

    Hi friends, I have setup the trading partner and the corresponding TP certificate import for receiving the custom XML via AS2 channel. I am receiving the custom xml properly to oracle b2b and able to receive the same to bpel as well. however in the o

  • Re: Issue With Final step re-installing drivers

    I have a hp desk jet 2540 all in one trying to print with my HTC mobile android phone wireless. Set my phone up with wireless print capabilities but will not print. Had my daughter use her hp laptop to try and set it up without results.

  • ACS 5.5 SFTP repository non-standard TCP port

    is it possible to change the TCP port in a SFTP repository from 22 to something different  ? like this is not working repository sftp1   url sftp://10.10.0.8:22222/user1   user user1 password hash bc14bc179d2708cc31cbc22ee6a679cd22c095a1

  • Can I change the location of the cache to a different disk drive?

    I'm having trouble with fragmentation on my system disk which seems be the result of the Firefox disk cache. This fragmentation is causing problems both with Firefox and other programs. I have multiple hard disks and would like to relocate the cache