Client == server - problems with callbacks

Hi everyone!
I'm having trouble establishing bidirectional communication between a client and a server (code samples are below).
Both classes (client & server) extend UnicastRemoteObject and implement Interfaces that are extending Remote. Now the client looks up the server and tries to register itself at the server by calling a method like this:
remote_server.setClient(this);
as long as I execute both programs in the same LAN this method-call works fine, but when client and server connect through internet I'm getting the following exception:
---------------------- Exception ------------------------>
java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
     java.rmi.ConnectException: Connection refused to host: 192.168.0.3; nested exception is:
     java.net.ConnectException: Connection timed out
     at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:292)
<---------------------- Exception ------------------------
maybe helpful:
- 192.168.0.3 is the client's LAN-IP
- I am directly connected to the internet via ADSL-modem (no router)
I searched the forums for several hours now, I read through the following tutorial,
http://developer.java.sun.com/developer/onlineTraining/rmi/exercises/RMICallback/index.html
but still I didn't find a solution.
I already spent a lot of time developing this and I start to get desperate, so I hope someone of you out there can help me!
pilord
==================== Codesamples =======================>
public class ServerImpl extends UnicastRemoteObject implements Server {
Client client;
public ServerImpl() {
LocateRegistry.getRegistry(1096).rebind("test",this);
/* specified in Remote-Interface: Server*/
public void setClient(Client client) {
this.client = client;
public class ClientImpl extends UnicastRemoteObject implements Client {
public ClientImpl() {
Server s = Naming.lookup("rmi://***.***.***.***:1096/test");
s.setClient(this); // HERE is the trouble.
<==================== Codesamples =======================

Don't feel lost, crumb. Http tunnelling is not as complex as it seems. I just started using RMI at my new job here and in a couple of weeks I've already picked up on alot of what I needed to know. (I just posted a question myself on the same topic.) Basically what you have to do is set up a web server for RMI to talk to at the server side. It will work if the webserver is listening on port 80 with the rmiservlet.ServletHandler registered to respond to any path request of cgi-bin/java-rmi.cgi. In other words "cgi-bin/java-rmi.cgi" should be the servlet-mapping of the ServletHandler. The servlet merly acts as a proxy on behalf of the RMI client and fowards the request to the desired port on the server. If you know how to set up a servlet as the default web app then it is really a breeze. On the client side you only need to set the http.proxyHost and http.proxyPort system properties to the appropriate values for your proxy server. (I mistyped these property names in my prior post use what I have here as I just read it out of the RMI book.) Do a search on HTTP tunnelling and you should turn up dozens of hits. I have the source to the servlet if you need it. I've already modified it for my own purposes though it should still work for you. If you forego http tunnelling then you'll have to do a complete app rewrite to use another protocol because RMI just doesn't work through firewalls without it. Alternatively you can get down and dirty with some low level sockets coding (this is what I'm thinking I'll end up doing eventually) to get it working without standard RMI/HTTP but that's way more complex. Unfortunately it looks like your callback code will need to be rewritten unless you either go commercial or do the socket stuff. (There does seem to be a shareware product called rmi doves that would help you here.) I'll be happy to assits you in any way as you need help.
Cliff

Similar Messages

  • Client Server Application with images or icons

    I made a Client Server application with JFrames, but I put a jLabel with an icon, and I can't run the Client.
    It says java.lang.NullPointerException
    Do you know why I can't see the icon in the JLabel? It isn't an applet, it's an application with JFrames.

    You have to explain the problem better if you want some help. Also show the code which is giving you the nullpointerexception(Do not forget codetags!).

  • Client/Server API with push?

    I set up a simple Socket client server architecture with the Java socket API. However, my clients sometimes are initiators or requests, and sometimes my server is the initiator of infos. Example: client want to get infos from server but also want to tell the server something. The server tells all registered clients something but also can accept requests from clients. So both sides are client AND server (depending on what they currently want to do).
    The socket API is just a classic client/server API, i.e. a server listens and a client sends requets and get responses. For my server to send requests to all clients, this is not enough. Is the only way to have all clients offering a socket server on their computer, too? so that this 2-way-request-communication works?
    This is basically some kind of "push" technology, but i don't want my clients to "poll" the server just to emulate the feature of sending requests from the server to the client. Is there some other (perhaps non-socket) API that offers this?

    @sjasja: how is the socket api symmetrical?It is, trust me! Connection initiation isn't, but after that it is. (Let's assume connected TCP/IP.)
    The server does bind() and accept(), the client does connect(). After that, the connection is symmetrical: either end can issue any number of read() and write() calls in any order. You write() to a socket, it pops out from read() at the other end (though not necessarily as a single packet; TCP/IP is stream oriented, so write() "packets" can and will be glued together, or fragmented at the whimsy of network routers and friends.)
    - accept() //wait for client to send request
    - socket.getInputStream() //read request
    - socket .getOutputStream() //write responseThose don't read or write; they get streams which you can read from and write to.
    In the server, when accept() returns a new connection, you'd start a reader thread for that client. The thread would read() (or readLine() if you implement a line-oriented protocol) and handle the incoming messages. Whenever you want to write to the client, write to the stream returned by socket.getOutputStream(). You may need to synchronize writes if you have several threads that do sequences of write()s that need to arrive at the client sequentially.
    As to the difficulty of socket programming: I don't think it particularly difficult. But then I've written dozens of socket programs since my first one in '85... The Java Tutorial socket chapter shows a simple client/server pair; not terribly difficult I think. In particular, check out the KKMultiServer at the bottom of the sample server chapter.

  • White Paper: End-to-End Client/Server Security with the Adobe Flash Platform

    Today we released a sorely needed white paper on end-to-end client/server security with the Adobe Flash Platform.  This information is directly applicable to the Adobe  LiveCycle family as well as Flash RIAs. 
    http://www.slinnbooks.com/books/enterprise/securityWhitePaper.shtml
    Thank you,
    Mike
    Michael Slinn
    http://micronauticsresearch.com
    http://slinnbooks.com

    Hai,
           Delete the certificate in the ABAP system and try importing the new certificate from the EP instance(ADS) and export into the ABAP and check...
    Thanks and Regards,

  • WWI server problem with report shipping order

    Hi everybody,
    we have a problem with the WWI server and report shipping orders for Inbound documents (PDF):
    after we created an entry in CVD1 and using buttons "Accept" and "Ship immediately" we run the report RCVDEVEN. First time we did it the WWI server started working and ended with error but assigned the correct PDF. After that, the WWI server didt start anyway.
    First error message:
    The description for Event ID ( 91 ) in Source ( PRD ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event: PRD.
    Second error message after second attempt:
    The description for Event ID ( 95 ) in Source ( PRD ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer. You may be able to use the /AUXSOURCE= flag to retrieve this description; see Help and Support for details. The following information is part of the event:   09/14/09 17:59:49 Start Function 'WWI_SERVER_INFO'
      Initializing parameters
      Initializing Tables
      Receiving data from client
      Sending data to client
    Elapsed time : 0.1 sec.
    OSS note 1058521 has already been found - but nothing described here is relevant for us: the RFC connection is working, the WWI monitor shows the server up and running.
    Any ideas?
    Thank you very much in advance and best regards,
    Christoph

    Hi folks,
    fixed the problem myself. There have been some documents with error in the printer queue of the WWI server.
    Best regards,
    Christoph

  • DNS Server problems with ASA 5505

    Hi guys,
    we setup a new ASA 5505 which is mainly used as our VPN gateway. The ASA is configured and controlled by our ISP (and this is where the problem starts )) and they somehow cannot manage to get the VPN settings really working.
    So, here is our problem.
    our machines(Windows 7) are configured to get the network settings through DHCP (Windows 2012 Server).
    Before I connect with AnyConnect to our VPN gateway, the DNS Server setting in the network settings for the adapters(IPv4) are set to 'dynamic'
    When I now connect, this setting is changes to a statc entry (which is our DNS server).
    When disconnecting, it is not reverted back, which means I have to do this always manually.
    What I do not understand is the fact, that the DNS server is set for all the adapters, shouldtn't it be only set to the anyconnect adapter?.
    The interesting thing is, that when I connect to a different ASA, this does not happen. The ISP is now saying, that the machines are configured exactly the same and that they cannot reproduce, but I can't believe this.
    This issue shows up at every machine which connects to our vpn, so it is not only a single machine which might be misconfigured.
    Do you have any idea what might cause this issue?
    btw, the second ASA (which works) is from our partner company, so we cannot simply copy the config
    THanks in advance
    Patrick

    Nice to see someone from BT has addressed your issue 
    I have this exact same problem, seems completely bizarre, I'm pretty sure I had the same problem with the original home hub (i have the latest one now). Can you confirm whether the problem does affect anyone with a bt home hub and not just the one that the dyndns is pointing at? I'll try and confirm by hitting your domain from my home connection.

  • Client Having Problems With Acrobat 11.0.3 and files created in earlier versions

    We are noticing problems with our PDF's depending on the version of Adobe they are viewed with.
    If the PDF File was created pre 11.0.3 and you view it with 11.0.3 you only see squares in the narratives from SQL/Oracle Text Fields .
    If the PDF File was created with 11.0.3 and you view it with 11.0.3, it is fine.
    Update.  As with most Software/Support services the correct information is not always received and must be forced out of the Customers. 
    The PDF files are drawing of Auto Accidents created in Adobe Acrobat and stored on a Microsoft Server Network.  The files are then merged inside a Microsoft Visual FoxPro 9.0 SP2 Application with Data received from Microfoft SQL Server 2005 Database  through a ODBC driver to a FoxPro Cursor and then created with a Visual FoxPro Report Form. The VFP Report form page that displaies/prints the PDF file is a OLE File Object and is created / Printed through Amyuni 4.5xx Converter to a PDF file and then viewed with Adobe Acrobat 11.0.3.

    There are software packages that will do those checks. So in that sense there is a way to check. However, that would be a programming task and not necessarily simple. So I really can't help you on the programming aspect (I would refer you to something like the SDK forum for programming).
    To check the file, you would normally open the document properties (ctrl-D). The general tab provides the version number and the fonts tab will tell you what fonts are used and embedded.

  • Webservice Client deserialization problem with Vectors!

    Hello!
    I'm generating a Java Proxy Client with Eclipse WTP.
    The Client works fine with normal datatypes and own Beans. But whe the return type is a Collection with own beans an exception is thrown:
    exception: org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
    So whats wrong?
    In teh Webservice Explorer everything seems to be fine, my vector is serialized in item-tags:
    - <getAktionenResponse xmlns="http://commonservice">
    - <getAktionenReturn>
    - <item xmlns="">
    <aktn_nr>a12345</aktn_nr>
    <claim>222</claim>
    <geschaeftsjahr>2005</geschaeftsjahr>
    <son>333</son>
    <special_operation_code>soc12345</special_operation_code>
    <status>ready</status>
    <vin>t123</vin>
    </item>
    - <item xmlns="">
    <aktn_nr>a6789</aktn_nr>
    <claim>567</claim>
    <geschaeftsjahr>2006</geschaeftsjahr>
    <son>555</son>
    <special_operation_code>soc6789</special_operation_code>
    <status>false</status>
    <vin>t123</vin>
    </item>
    </getAktionenReturn>
    </getAktionenResponse>
    how can i solve this problem?
    the background is that I return a vector with Java Objects. I thought apache axis deserielizes automatically the vector and the bean inside??
    I'm pretty new to webservices...
    Pleas help!
    Thanks!

    As per the below link, I assumed its better to avoid collections and go with plain array of objects.
    Please let us know if I am wrong.
    http://www-128.ibm.com/developerworks/webservices/library/ws-tip-coding.html
    Regards,
    Venkat S

  • Mac OS X 10.5.7 Server - Problem with SMB-Share

    [email protected],
    i've following problem with my Mac OS X Server.
    I want to disable the virtual share points of SMB with Server-Admin.
    After disabling the virtual share point and saving, the virtual share points are autmotically enabled again. I don't know why and how i can solve this problem.
    Does anybody know, what is going wrong?

    Try the Server Products forums.

  • RG54GS print server problem with hp 1200se

    I tried to install the print server on win 2000. I followed the instructions in the manual and the installation finished successfully, but when I was trying  to print a document nothing happened. 
    Are there some problem with the printer hp LaserJet 1200 series.
    thanks for any hints
    markus

    what print server are you trying to install? how is your Laserjet 1200 connected to your network? (through a JetDirect card?)

  • Client server code with errors could some one please help me!!!

    I am using a random access file to design the two interfaces for my client and my server is this the right thing to do? Oh could some one give me some example code of client server interfaces.
    I got an error in the code for the interfaces and I don't know what it is could some one please help me!!
    Heres the error in the code: This is for RegisterCustomer
    import java.io.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.*;
    class RegisterCustomer extends JPanel implements ActionListener
    // Button for registering a customer
    private JButton jbtRegister;
    // Customer information panel
    private CustomerPanel customerPanel; (The error is on this line and it says Field type customer panel is missing)
    // Random access file
    private RandomAccessFile raf;
    Second error: Its in the ViewCustomer:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.border.*;
    // View customer panel
    class ViewCustomer extends JPanel implements ActionListener
    // Buttons for viewing customer information
    private JButton jbtFirst, jbtNext, jbtPrevious, jbtLast;
    // Random access file
    private RandomAccessFile raf = null;
    // Current customer record
    private Customer customer = new Customer();
    // Create a customer panel
    private CustomerPanel customerPanel = new customerPanel(); (its on this line and it says field type CustomerPanel is missing)
    // File pointer in the random access file
    private long lastPos;
    private long currentPos;
    Heres the code for the customerPanel:
    // Customer Panel.java: Panel for displaying Customer information
    import javax.swing.*;
    import javax.swing.border.*;
    import java.awt.*;
    public class customerPanel extends JPanel
         JTextField jtfRegistrationnumber = new JTextField(30);
         JTextField jtfSeatingcapacity = new JTextField(20);
    JTextField jtfStartdateofhire = new JTextField(20);
    JTextField jtfDurationofhire = new JTextField(10);
    JTextField jtfManufacture = new JTextField(20);
    JTextField jtfModel = new JTextField(15);
         JTextField jtfEnginesize = new JTextField(15);
    JTextField jtfCharge = new JTextField(20);
    JTextField jtfMileage = new JTextField(10);
    // Constuct a customer panel
    public customerPanel()
    // Set the panel with line border
    setBorder(new BevelBorder(BevelBorder.RAISED));
    // Panel p1 for holding all the labels
    JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(3, 1));
    p1.add(new JLabel("Registration number"));
    p1.add(new JLabel("Seating capacity"));
    p1.add(new JLabel("Start date of hire"));
    p1.add(new JLabel("Duration of hire"));
    p1.add(new JLabel("Manufacture"));
    p1.add(new JLabel("Model"));
    p1.add(new JLabel("Engine size"));
    p1.add(new JLabel("Charge"));
    p1.add(new JLabel("Mileage"));
    // Panel jpRegistration number for registration number
    JPanel jpRegistrationnumber = new JPanel();
    jpRegistrationnumber.setLayout(new BorderLayout());
    jpRegistrationnumber.add(new JLabel("Registration number"), BorderLayout.WEST);
    jpRegistrationnumber.add(jtfRegistrationnumber, BorderLayout.CENTER);
    // Panel jpSeating capacity for holding Seating capacity
    JPanel jpSeatingcapacity = new JPanel();
    jpSeatingcapacity.setLayout(new BorderLayout());
    jpSeatingcapacity.add(new JLabel("Seating capacity"), BorderLayout.WEST);
    jpSeatingcapacity.add(jtfSeatingcapacity, BorderLayout.CENTER);
         // Panel jpStart date of hire for holding start date of hire
    JPanel jpStartdateofhire = new JPanel();
    jpStartdateofhire.setLayout(new BorderLayout());
    jpStartdateofhire.add(new JLabel("Start date of hire"), BorderLayout.WEST);
    jpStartdateofhire.add(jtfStartdateofhire, BorderLayout.CENTER);
    // Panel jpDuration of hire for holding Duration of hire
    JPanel jpDurationofhire = new JPanel();
    jpDurationofhire.setLayout(new BorderLayout());
    jpDurationofhire.add(new JLabel("Duration of hire"), BorderLayout.WEST);
    jpDurationofhire.add(jtfDurationofhire, BorderLayout.CENTER);
    // Panel p2 for holding jpRegistration number and jpSeating capacity and start date of hire and duration of hire
    JPanel p2 = new JPanel();
    p2.setLayout(new BorderLayout());
    p2.add(jpRegistrationnumber, BorderLayout.WEST);
    p2.add(jpSeatingcapacity, BorderLayout.CENTER);
    p2.add(jpStartdateofhire, BorderLayout.CENTER);
    p2.add(jpDurationofhire, BorderLayout.CENTER);
    // Panel p3 for holding jtfManufacture and p2
    JPanel p3 = new JPanel();
    p3.setLayout(new BorderLayout());
    p3.add(jtfManufacture, BorderLayout.CENTER);
    p3.add(p2, BorderLayout.EAST);
    // Panel p4 for holding jtfModel, jtfEngine size, charge and mileage and p3
    JPanel p4 = new JPanel();
    p4.setLayout(new GridLayout(3, 1));
    p4.add(jtfModel);
    p4.add(jtfEnginesize);
    p4.add(jtfCharge);
    p4.add(jtfMileage);
    p4.add(p3);
    // Place p1 and p4 into customerPanel
    setLayout(new BorderLayout());
    add(p1, BorderLayout.WEST);
    add(p4, BorderLayout.CENTER);
    // Get customer information from the text fields
    public Customer getCustomer()
    return new Customer(jtfRegistrationnumber.getText().trim(),
                             jtfSeatingcapacity.getText().trim(),
                                  jtfStartdateofhire.getText().trim(),
                             jtfDurationofhire.getText().trim(),
                             jtfManufacture.getText().trim(),
                             jtfModel.getText().trim(),
                                  jtfEnginesize.getText().trim(),
                             jtfCharge.getText().trim(),
                             jtfMileage.getText().trim());
    // Set customer information on the text fields
    public void setCustomer(Customer s)
    jtfRegistrationnumber.setText(s.getRegistrationnumber());
    jtfSeatingcapacity.setText(s.getSeatingcapacity());
    jtfStartdateofhire.setText(s.getStartdateofhire());
    jtfDurationofhire.setText(s.getDurationofhire());
    jtfManufacture.setText(s.getManufacture());
    jtfModel.setText(s.getModel());
    jtfEnginesize.setText(s.getEnginesize());
    jtfCharge.setText(s.getCharge());
    jtfMileage.setText(s.getMileage());
    Could someone please help me and tell me what these two errors mean and how I could get rid of them

    Can some one take a look at this code and tell me how to get all my jlabels to line up alone side their jtf.
    Because it looks like this the picture in the attached file and this is the code for it:
    public customerPanel()
    // Set the panel with line border
    setBorder(new BevelBorder(BevelBorder.RAISED));
    // Panel p1 for holding labels Name, Street, and City
    JPanel p1 = new JPanel();
    p1.setLayout(new GridLayout(5, 1));
    p1.add(new JLabel("Registration Number:"));
    p1.add(new JLabel("Seating Capacity:"));
    p1.add(new JLabel("Engine Size:"));
    p1.add(new JLabel("Start date of hire"));
    p1.add(new JLabel("Duration of hire"));
    JPanel p2 = new JPanel();
    p2.setLayout(new GridLayout(5, 1));
    p2.add(jtfRegistrationnumber);
    p2.add(jtfSeatingcapacity);
    p2.add(jtfEnginesize);
    p2.add(jtfStartdateofhire);
    p2.add(jtfDurationofhire);
    //JPanel p3 = new JPanel();
    //p3.add(p1, BorderLayout.WEST);
    //p3.add(p2, BorderLayout.NORTH);
    JPanel p4 = new JPanel();
    p4.setLayout(new GridLayout(4, 1));
    p4.add(new JLabel("Manufacture:"));
    p4.add(new JLabel("Model:"));
    p4.add(new JLabel("Mileage:"));
    p4.add(new JLabel("Charge:"));
    JPanel p5 = new JPanel();
    p5.setLayout(new GridLayout(4, 1));
    p5.add(jtfManufacture);
    p5.add(jtfModel);
    p5.add(jtfMileage);
    p5.add(jtfCharge);
    // JPanel p6 = new JPanel();
    // p6.setLayout(new BorderLayout());
    // p6.add(p4, BorderLayout.SOUTH);
    // p6.add(p5, BorderLayout.EAST);
    // Place p1 and p4 into CustomerPanel
    setLayout(new BorderLayout());
    add(p1, BorderLayout.WEST);
    add(p2, BorderLayout.NORTH);
    add(p4, BorderLayout.SOUTH);
    add(p5, BorderLayout.EAST);
    So could someone please help me and correct my code so that each text lable is lined up next to its jtf java text field.

  • Client server problem

    Hallo,
    I have a client server architecture, where the server part is implemented as a SQLJ object in database. Client and server communicate via network sockets. The server process is started by a JDBC call to a member method of a server object.
    Different clients call this method on different stored objects, so there are different server processes, running in different JVMs
    Outside the database, I would realize my architecture with something like that:
    public class Server extends Thread {
      public static void main (String[] args]) {
        ServerSocket listenSocket = null;
        try {
          listenSocket = new ServerSocket(PORT);
        catch (IOException exc) {
        Socket connectedSocket;
        while (true) {
          try {
            connectedSocket = listenSocket.accept();
            Server serverinstanz = new Server (connectedSocket);
            serverinstanz.start();
          catch (IOException exc) {}
    }How I could implement this in a database? The client searches for a special server object in database and wants to connect to it. But not all of theses objects can create a ServerSocket. At the moment the clients themselves create a ServerSocket and the Server connects to them. But this can't be the best solution.
    Thanks, Christian

    1) Don't multipost - http://forum.java.sun.com/thread.jspa?threadID=5214646
    2) Read http://forum.java.sun.com/help.jspa?sec=formatting before you post code the next time

  • Problem Mail program & Outgoing Mail Server - Problem with Earthlink

    I had Earthlink POP / SMTP ( In/Out ) Mail server and mac Mail set up when I pulled the power plug on PMG4 due to freeze up !
    Now have no contents in mac Mail program In/Out/Sent/Draft on the PMG4 hardrive or the external Lacie brick back-up hardrive. I am told by Earthlink this is because I had the " don't save email copy on server " box checked in the Mail/Add account/Advanced section.
    Any idea how I can retieve my email folders ?
    Also cannot get rid of 6 account names listed erroneously under Mail/Preferences/Account/Accounts Information/outgoing mail server ! And yet there is only one account listed when the accounts button is pushed. This is making it impossible to connect to the earthlink server ! Earthlink says everythings fine on their end and I have the correct Server Port number entered ! Earthlink says it's a problem with macMail !
    Help !

    This is no longer an issue

  • DNS Server problem with AX

    my network only consists of the AX, my macbook, and my PC (which is rarely used anymore). At least once a week, sometimes more often, my AX reports a DNS server problem. I've plugged it in to the ethernet and the settings are they same and there is no other router involved. The AX is connected directly from the cable modem. I confirmed with my ISP that the DNS server numbers are correct and they show up in the proper fields as well. What may cause this and how can I fix it?

    Welcome to the discussion area!
    Since the Express can only use the information that it receives from the ISP,
    you might want to try the Open DNS settings to see if that will help. Just be sure to make note of your current settings in case you need to revert to them.
    208.67.222.222 and 208.67.220.220
    http://www.opendns.com/

  • Client Server Socket With GUI

    Hi,
    As the name of the forum suggests I am very new to this whole thing.
    I am trying to write a client/server socket program that can encrypt and decrypt and has a GUI, can't use JCE or SSL or any built in encryption tools.
    I have the code for everything cept the encryption part.
    Any help, greatly appreciated,

    tnks a million but how do i incorporate that into the following client and server code:
    here's the client code:
    import java.awt.Color;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.*;
    class SocketClient extends JFrame
              implements ActionListener {
    JLabel text, clicked;
    JButton button;
    JPanel panel;
    JTextField textField;
    Socket socket = null;
    PrintWriter out = null;
    BufferedReader in = null;
    SocketClient(){ //Begin Constructor
    text = new JLabel("Text to send over socket:");
    textField = new JTextField(20);
    button = new JButton("Click Me");
    button.addActionListener(this);
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBackground(Color.white);
    getContentPane().add(panel);
    panel.add("North", text);
    panel.add("Center", textField);
    panel.add("South", button);
    } //End Constructor
    public void actionPerformed(ActionEvent event){
    Object source = event.getSource();
    if(source == button){
    //Send data over socket
    String text = textField.getText();
    out.println(text);
         textField.setText(new String(""));
    //Receive text from server
    try{
         String line = in.readLine();
    System.out.println("Text received :" + line);
    } catch (IOException e){
         System.out.println("Read failed");
         System.exit(1);
    public void listenSocket(){
    //Create socket connection
    try{
    socket = new Socket("HUGHESAN", 4444);
    out = new PrintWriter(socket.getOutputStream(), true);
    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    } catch (UnknownHostException e) {
    System.out.println("Unknown host: HUGHESAN.eng");
    System.exit(1);
    } catch (IOException e) {
    System.out.println("No I/O");
    System.exit(1);
    public static void main(String[] args){
    SocketClient frame = new SocketClient();
         frame.setTitle("Client Program");
    WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    frame.addWindowListener(l);
    frame.pack();
    frame.setVisible(true);
         frame.listenSocket();
    SERVER Code
    import java.awt.Color;
    import java.awt.BorderLayout;
    import java.awt.event.*;
    import javax.swing.*;
    import java.io.*;
    import java.net.*;
    class SocketServer extends JFrame
              implements ActionListener {
    JButton button;
    JLabel label = new JLabel("Text received over socket:");
    JPanel panel;
    JTextArea textArea = new JTextArea();
    ServerSocket server = null;
    Socket client = null;
    BufferedReader in = null;
    PrintWriter out = null;
    String line;
    SocketServer(){ //Begin Constructor
    button = new JButton("Click Me");
    button.addActionListener(this);
    panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.setBackground(Color.white);
    getContentPane().add(panel);
    panel.add("North", label);
    panel.add("Center", textArea);
    panel.add("South", button);
    } //End Constructor
    public void actionPerformed(ActionEvent event) {
    Object source = event.getSource();
    if(source == button){
    textArea.setText(line);
    public void listenSocket(){
    try{
    server = new ServerSocket(4444);
    } catch (IOException e) {
    System.out.println("Could not listen on port 4444");
    System.exit(-1);
    try{
    client = server.accept();
    } catch (IOException e) {
    System.out.println("Accept failed: 4444");
    System.exit(-1);
    try{
    in = new BufferedReader(new InputStreamReader(client.getInputStream()));
    out = new PrintWriter(client.getOutputStream(), true);
    } catch (IOException e) {
    System.out.println("Accept failed: 4444");
    System.exit(-1);
    while(true){
    try{
    line = in.readLine();
    //Send data back to client
    out.println(line);
    } catch (IOException e) {
    System.out.println("Read failed");
    System.exit(-1);
    protected void finalize(){
    //Clean up
    try{
    in.close();
    out.close();
    server.close();
    } catch (IOException e) {
    System.out.println("Could not close.");
    System.exit(-1);
    public static void main(String[] args){
    SocketServer frame = new SocketServer();
         frame.setTitle("Server Program");
    WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
    System.exit(0);
    frame.addWindowListener(l);
    frame.pack();
    frame.setVisible(true);
         frame.listenSocket();
    Again help on this is very welcomed

Maybe you are looking for