`
lichaozhangobj
  • 浏览: 98848 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java socket 编程

    博客分类:
  • java
阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;

public class EchoThread implements Runnable {
    private Socket client = null;

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

    public void run() {
        PrintStream out = null; // 打印流输出最方便
        BufferedReader bufferedReader = null;// 接收输入流
        try {
            out = new PrintStream(client.getOutputStream());// 输出流
            // 准备接收客户端的输入信息
            bufferedReader = new BufferedReader(new InputStreamReader(client.getInputStream()));
            boolean flag = true ; // 标志位,表示可以一直接收并回应信息
            while (flag) {
                String acceptContent = bufferedReader.readLine();// 接收客户端发送的内容
                if ("quit".equals(acceptContent)|| (acceptContent == null)) {//如果输入quit就退出
                    flag = false;
                } else if ("".equals(acceptContent.trim())) {//没有内容
                    out.println("Echo : 请输入内容 ");
                } else {
                    System.out.println(acceptContent);
                    out.println("Echo : " + acceptContent);//回应信息
                }
            }
            bufferedReader.close();
            out.close();
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

public class EchoThreadServer {
    public void startSocket() {
        ServerSocket server = null; // 定义ServerSocket类
        Socket client = null; // 表示客 户端
        try {
            server = new ServerSocket(8888); // 服务器在8888端口上监听
            boolean flag = true; // 定义个标记位
            while (flag) {
                System.out.println("服务器运行,等待客户端连接。");
                client = server.accept(); // 得到连接,程序进入到阻塞状态
                // 1.
                // new Thread(new EchoThread(client)).start(); // 每一个客户端表示一个线程
                //2.
                Executor executor = Executors.newSingleThreadExecutor();
                executor.execute(new EchoThread(client));
            }
            server.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        EchoThreadServer echoThreadServer = new EchoThreadServer();
        echoThreadServer.startSocket();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class EchoClient {

    public static void main(String[] args) {
        Socket client = null;// 客户端
        BufferedReader input = null;// 接收键盘数据
        BufferedReader buf = null;// 一次接收服务器数据
        PrintStream out = null;// 发送数据
        Boolean flag = true;//标识
        try {
            client = new Socket("localhost", 8888);
            input = new BufferedReader(new InputStreamReader(System.in));// 键盘数据
            buf = new BufferedReader(new InputStreamReader(client.getInputStream()));// 服务器响应数据
            out = new PrintStream(client.getOutputStream());// 发送数据
            while (flag) {
                System.out.println("输入信息 : ");
                String str = input.readLine();// 接收键盘输入信息
                out.println(str);//发送数据
                if ("quit".equals(str)) {//如果输入quit就退出
                    flag = false;
                } else {
                    System.out.println(buf.readLine());//接收返回结果,输出结果信息
                }
                out.flush();
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {//释放资源
            try {
                out.close();
                buf.close();
                input.close();
                client.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

 

1
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics