1.perface:

程序实现功能主要是实现 p2p 式的 对话应答程序。

2.servicecode:

代码如下: server端:

public class TCPSever_v1_0_0 {

    public TCPSever_v1_0_0() {
        super();
        // TODO Auto-generated constructor stub
    }

    public static void startServer() {

        // 1.创建TCp服务器
        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(8000);
            DialogAdapter.showDialog(">>>服务器启动中>>>");
        } catch (IOException e) {
            System.out.println("8000端口不能使用!");
            e.printStackTrace();
        }
        // 2.连接客户端的Socket
        Socket clientSocket = null;
        try {
            clientSocket = serverSocket.accept();
        } catch (IOException e) {
            DialogAdapter.showDialog("客户端的Socket连接诶失败");
            e.printStackTrace();
        }
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;
        // 3.建立输入和输出流
        try {
            dataOutputStream = new DataOutputStream(clientSocket
                    .getOutputStream());
            dataInputStream = new DataInputStream(clientSocket.getInputStream());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            DialogAdapter.showDialog("建立客户端的输入和输出流失败!");
            e.printStackTrace();
        }

        // 定义输入和输出的字符串

        String inputstr, outputStr; // 输入和输出字符串

        // 输出操作:发送到客户端:
        try {
            dataOutputStream.writeUTF("WElcome to our server:\n");
            dataOutputStream.flush();
        } catch (IOException e) {
            DialogAdapter.showDialog("输出失败:\n");
            e.printStackTrace();
        }

        // 输入操作:读入键盘信息,发送消息
        DataInputStream stdin = new DataInputStream(System.in);
        try {
            
            while ((inputstr = dataInputStream.readUTF()) != null) {
                DialogAdapter.showDialog("【CustomerToServer:】" + inputstr);
                DialogAdapter.showDialog("【Server:】");
                outputStr = stdin.readLine();
                DialogAdapter.showDialog("[server 键入]:"+outputStr);
                dataOutputStream.writeUTF(outputStr);
                dataOutputStream.flush();
                if ("bye".equals(outputStr)) {
                    break;
                }
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        // 5.关闭流和socket
        try {
            dataOutputStream.close();
            stdin.close();
            dataInputStream.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

client 端:
public class TCPclient_v1_0_0 {

    // 客户端的操作:

    public static void startclient() {

        Socket clientSocket = null;
        ;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;
        DataInputStream stdin = null;

        try {
            clientSocket = new Socket("localhost", 8000);// 发出连接请求
            dataOutputStream = new DataOutputStream(clientSocket
                    .getOutputStream());
            dataInputStream = new DataInputStream(clientSocket.getInputStream());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            stdin = new DataInputStream(System.in);
            DialogAdapter.showDialog("请输入你的用户名:");
            String username = stdin.readLine();
            String strtoServer;
            String strfromServer;


          
                while ((strfromServer = dataInputStream.readUTF()) != null) {
                // 只要读取的服务段的数据是不是空的
                DialogAdapter.showDialog("[ServerTOClient:]" + strfromServer);
                if ("bye".equals(strfromServer)) {
                    // 如果从服务器上发来bye 信息
                    break;

                }
                DialogAdapter.showDialog("【client:】");

                strtoServer = stdin.readLine();
                dataOutputStream.writeUTF(username + "#" + strtoServer);
                dataOutputStream.flush();

            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        try {
            dataOutputStream.close();
            dataInputStream.close();
            stdin.close();
            clientSocket.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
}

3.reference: