Thread: Basic Networking

Page 1 of 3 123 LastLast
Results 1 to 10 of 23
  1. #1 Basic Networking 
    Respected Member


    kLeptO's Avatar
    Join Date
    Dec 2006
    Age
    28
    Posts
    2,955
    Thanks given
    1,183
    Thanks received
    754
    Rep Power
    3084
    So this is just basic Client and Server which communicates with each other by sending strings.
    Can be used for pretty much anything. It could be bones for multiplayer game.
    Added hello message for testing. Have fun.

    BIG THANKS TO COLBY.

    Server:
    Code:
    import java.net.ServerSocket;
    
    import java.net.Socket;
    
    import java.io.BufferedReader;
    
    import java.io.PrintWriter;
    
    import java.io.InputStreamReader;
    
    /**
     * Basic server.
     * @author Klepto
     **/
    public class Server {
    
    	/**
    	 * ServerSocket instance.
    	 **/
    	private static ServerSocket serverSocket;
    
    	/**
    	 * Client's Socket instance.
    	 **/
    	private static Socket client;
    
    	/**
    	 * BufferedReader instance.
    	 **/
    	private static BufferedReader dataReader;
    
    	/**
    	 * PrintWriter instance.
    	 **/
    	private static PrintWriter dataWriter;
    
    	/**
    	 * Last received data.
    	 **/
    	private static String str;
    
    	/**
    	 * Starts the server.
    	 **/
    	public static void main(String[] args) {
    		try {
    			/**
    			 * Starting server.
    			 **/
    			serverSocket = new ServerSocket(5555);
    			while(true) {
    				/**
    				 * Waiting for Client to connect.
    				 **/
    				System.out.println("Waiting for Client.");
    				try {
    					client = serverSocket.accept();
    					/**
    					 * Creating dataReader and dataWriter.
    					 **/
    					dataReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
    					dataWriter = new PrintWriter(client.getOutputStream(), true);
    					/**
    					 * Reading data.
    					 **/
    					while((str = dataReader.readLine()) != null) {
    						System.out.println("From Client: "+str);
    						if(str.contains("Hello")) {
    							String[] name = str.split(" it's ");
    							writeData("Welcome "+name[1]);
    						}
    					}
    				} catch(Exception e) {
    					/**
    					 * e.printStackTrace();
    					 **/
    				} finally {
    					try {
    						if(client != null) {
    							client.close();
    							client = null;
    						}
    					} catch(Exception e) {
    						/**
    						 * e.printStackTrace();
    						 **/
    					}
    					System.out.println("Client disconnected.");
    				}
    			}
    		} catch(Exception e) {
    			/**
    			 * e.printStackTrace();
    			 **/
    		}
    	}
    
    	/**
    	 * Writes data to Client.
    	 **/
    	public static void writeData(String data) {
    		if(client != null && dataWriter != null) {
    			System.out.println("To Client: "+data);
    			dataWriter.println(data);
    		}
    	}
    
    }
    Client:
    Code:
    import java.net.Socket;
    
    import java.io.PrintWriter;
    
    import java.io.BufferedReader;
    
    import java.io.InputStreamReader;
    
    /**
     * Basic client.
     * @author Klepto
     **/
    public class Client {
    
    	/**
    	 * Socket instance.
    	 **/
    	private static Socket server;
    
    	/**
    	 * BufferedReader instance.
    	 **/
    	private static BufferedReader dataReader;
    
    	/**
    	 * PrintWriter instance.
    	 **/
    	private static PrintWriter dataWriter;
    
    	/**
    	 * Last received data.
    	 **/
    	private static String str;
    
    	/**
    	 * Connects to server.
    	 **/
    	public static void main(String[] args) {
    		try {
    			/**
    			 * Connecting to server.
    			 **/
    			server = new Socket("localhost", 5555);
    			/**
    			 * Creating dataReader and dataWriter.
    			 **/
    			dataReader = new BufferedReader(new InputStreamReader(server.getInputStream()));
    			dataWriter = new PrintWriter(server.getOutputStream(), true);
    			/**
    			 * Sending hello message to server.
    			 **/
    			writeData("Hello, it's Basic Client.");
    			/**
    			 * Reading data.
    			 **/
    			try {
    				while((str = dataReader.readLine()) != null) {
    					System.out.println("From Server: "+str);
    				}
    			} catch(Exception e) {
    				try {
    					if(server != null) {
    						server.close();
    						server = null;
    					}
    				} catch(Exception ex) {
    					/**
    					 * ex.printStackTrace();
    					 **/
    				}
    				System.out.println("Disconnected.");
    				System.exit(0);
    			} finally {
    				try {
    					if(server != null) {
    						server.close();
    						server = null;
    					}
    				} catch(Exception e) {
    					/**
    					 * e.printStackTrace();
    					 **/
    				}
    				System.out.println("Disconnected.");
    				System.exit(0);
    			}
    		} catch(Exception e) {
    			e.printStackTrace();
    		}
    	}
    
    	/**
    	 * Writes data to Server.
    	 **/
    	public static void writeData(String data) {
    		if(server != null && dataWriter != null) {
    			System.out.println("To Server: "+data);
    			dataWriter.println(data);
    		}
    	}
    
    }
    Reply With Quote  
     

  2. #2  
    damnant quod non intellegunt

    Mr Chainsaw's Avatar
    Join Date
    Sep 2006
    Age
    30
    Posts
    4,058
    Thanks given
    827
    Thanks received
    1,277
    Rep Power
    4664
    Nice basic concept.
    Reply With Quote  
     

  3. #3  
    Respected Member


    kLeptO's Avatar
    Join Date
    Dec 2006
    Age
    28
    Posts
    2,955
    Thanks given
    1,183
    Thanks received
    754
    Rep Power
    3084
    Quote Originally Posted by Mr Chainsaw View Post
    Nice basic concept.
    Thank you sir.
    Reply With Quote  
     

  4. #4  
    Banned

    Join Date
    Jul 2008
    Age
    28
    Posts
    5,827
    Thanks given
    1,301
    Thanks received
    197
    Rep Power
    0
    You need to close your sockets, and notify the other end before you close it so it won't write to it anymore.
    Reply With Quote  
     

  5. #5  
    Respected Member


    kLeptO's Avatar
    Join Date
    Dec 2006
    Age
    28
    Posts
    2,955
    Thanks given
    1,183
    Thanks received
    754
    Rep Power
    3084
    Quote Originally Posted by Colby View Post
    You need to close your sockets, and notify the other end before you close it so it won't write to it anymore.
    Alright. Thank you.
    Fixing.

    EDIT: Fixed server so it handles client disconnection.
    Reply With Quote  
     

  6. #6  
    AKA Edvinas
    Ed's Avatar
    Join Date
    Jun 2009
    Age
    31
    Posts
    4,501
    Thanks given
    523
    Thanks received
    512
    Rep Power
    2659
    Looks nice, good job
    Reply With Quote  
     

  7. #7  
    Respected Member


    kLeptO's Avatar
    Join Date
    Dec 2006
    Age
    28
    Posts
    2,955
    Thanks given
    1,183
    Thanks received
    754
    Rep Power
    3084
    Fixed Client, so it handles disconnection now.
    Thanks again Colby.
    Reply With Quote  
     

  8. #8  
    But python...

    Join Date
    Jun 2009
    Posts
    0
    Thanks given
    262
    Thanks received
    379
    Rep Power
    0
    That look's quite alright good job.
    Reply With Quote  
     

  9. #9  
    Banned

    Join Date
    Jul 2008
    Age
    28
    Posts
    5,827
    Thanks given
    1,301
    Thanks received
    197
    Rep Power
    0
    Quote Originally Posted by »kLeptŘ« View Post
    Fixed Client, so it handles disconnection now.
    Thanks again Colby.
    Np. Btw, this is a more memory efficient desgin, and wont leak.

    Code:
    try {
        Socket sock - null;
        try {
            sock = ...
            //do stuff
        } finally {
            if sock!=null sock close
        }
    } catch(Exception e...
    Because the finally block is ALWAYS executed no matter what, so you won't have stream leaks if theres an error.
    Reply With Quote  
     

  10. #10  
    Respected Member


    kLeptO's Avatar
    Join Date
    Dec 2006
    Age
    28
    Posts
    2,955
    Thanks given
    1,183
    Thanks received
    754
    Rep Power
    3084
    Quote Originally Posted by Colby View Post
    Np. Btw, this is a more memory efficient desgin, and wont leak.

    Code:
    try {
        Socket sock - null;
        try {
            sock = ...
            //do stuff
        } finally {
            if sock!=null sock close
        }
    } catch(Exception e...
    Because the finally block is ALWAYS executed no matter what, so you won't have stream leaks if theres an error.
    Thanks. Improved.
    Reply With Quote  
     

Page 1 of 3 123 LastLast

Thread Information
Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)


User Tag List

Posting Permissions
  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •