服务端:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class SocketManager {
    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) {
        SocketManager manager = new SocketManager();
        manager.doListen();
    }

    public void doListen() {
        ServerSocket server;
        try {
            server = new ServerSocket(9991);
            while (true) {
                Socket client = server.accept();
                new Thread(new SSocket(client)).start();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    //服务器进程
    class SSocket implements Runnable {

        Socket client;

        public SSocket(Socket client) {
            this.client = client;
        }

        public void run() {
            DataInputStream input;
            DataOutputStream output;
            try {
                input = new DataInputStream(client.getInputStream());
                output = new DataOutputStream(client.getOutputStream());
                //
                String listMsg = input.readUTF();
                output.writeUTF("Send : " + listMsg + " \r\n HelloVillage...");
                System.out.println("Recive: " + listMsg);
                listMsg = input.readUTF();
                output.writeUTF("Send Second: " + listMsg + " \r\n HelloVillage...");
                System.out.println("Recive Second: " + listMsg);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

客户端:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class SocketClient {

    public static void main(String[] args) {
        Socket socket = null;
        try {
            socket = new Socket("127.0.0.1", 9991);
            //向服务器端第一次发送字符串 
            OutputStream netOut = socket.getOutputStream();
            DataOutputStream doc = new DataOutputStream(netOut);
            DataInputStream in = new DataInputStream(socket.getInputStream());
            //向服务器端第二次发送字符串 
            doc.writeUTF("list");
            String res = in.readUTF();
            System.out.println(res);
            doc.writeUTF("bye");
            res = in.readUTF();
            System.out.println(res);
            doc.close();
            in.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                }
            }
        }
    }
}



本文转载:CSDN博客