Java Socket Example

1.服务端:server

package com.socket;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
 
import com.common.LogHelper;
 
/**
 * ServerSide: receive message from Client and return it.
 * @author Guoliang
 *
 */
public class MesgServer implements Runnable{
     
    public void run() {
        LogHelper.log("ServerStarted");
        try {
            ServerSocket serverSocket = new ServerSocket(8888);
         
            while (true) {
                 
                    Socket socket = serverSocket.accept();
                    LogHelper.log("Request: " + socket.toString());
                     
                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    PrintWriter out = new PrintWriter(socket.getOutputStream());
                     
                    out.println("Connected!");
                    out.flush();
                     
                    String lineInput;
                    while ((lineInput = in.readLine()) != null) {
                        LogHelper.log("GotMesgFromClient: " + lineInput);
                        out.println("ServerReturnMsg: " + lineInput);
                        out.flush();
                        if("exit".equals(lineInput)) {
                            break;
                        }
                    }
                     
                    out.close();
                    in.close();
                    socket.close();
            }
             
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 
}

2.客户端 Client

package com.socket;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
 
import com.common.LogHelper;
 
public class MesgClient {
 
    /**
     * Send mesg to server side.
     * @param args
     * @throws IOException
     * @throws UnknownHostException
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
         
        // Start server.
        new Thread(new MesgServer()).start();
         
        Socket socket = new Socket("localhost", 8888);
        LogHelper.log("Connecting...");
         
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
         
        LogHelper.log(in.readLine());
         
        // Simplest testing
        out.println("Hello!");
        LogHelper.log(in.readLine());
         
        // Read user input.
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String strInput = null;
        while ((strInput = stdIn.readLine()) != null) {
            out.println(strInput);
            LogHelper.log("Send: " + strInput);
            LogHelper.log(in.readLine());
        }
    }
}

Output:

[Thread-0]ServerStarted
[main]Connecting...
[Thread-0]Request: Socket[addr=/127.0.0.1,port=5569,localport=8888]
[main]Connected!
[Thread-0]GotMesgFromClient: Hello!
[main]ServerReturnMsg: Hello!
liguoliang.com  // user input.
[Thread-0]GotMesgFromClient: liguoliang.com
[main]Send: liguoliang.com
[main]ServerReturnMsg: liguoliang.com

转自:

http://liguoliang.com/2013/java-socket-example/

原文地址:https://www.cnblogs.com/ae6623/p/4416484.html