Java网络编程Demo(一)多线程的TCP网络程序

来源:互联网 发布:数据库完整性约束条件 编辑:程序博客网 时间:2024/06/02 10:13

Demo_01.java

package TCP;import java.io.*;import java.net.*;public class Demo_01 {    public static void main(String[] args) throws Exception {        new TCPServer().listen();    }}// TCP服务端class TCPServer {    private static final int PORT = 10000;    public void listen() throws Exception {        ServerSocket serverSocket = new ServerSocket(PORT);        // 使用while循环不停地接收客户端发送的请求, 可允许多个用户访问同一个服务器        while (true) {            final Socket client = serverSocket.accept();            new Thread() {                public void run() {                    // 使用"带资源的try"构造, 可对try块参数表中的所有AutoCloseable对象自动调用close()                    try (OutputStream os = client.getOutputStream()) {                        System.out.println("开始与客户端交互数据...");                        os.write(("与服务端交互数据成功...").getBytes());                        Thread.sleep(5000);                        System.out.println("结束与客户端交互数据...");                    } catch (Exception e) {                        e.printStackTrace();                    }                };            }.start();        }    }}

Demo_02.java

package TCP;import java.io.*;import java.net.*;public class Demo_02 {    public static void main(String[] args) throws Exception {        new TCPClient().connect();    }}// TCP客户端class TCPClient {    private static final int PORT = 10000;  // 服务器的端口号    public void connect() throws Exception {        Socket client = new Socket(InetAddress.getLocalHost(), PORT);        client.setSoTimeout(10000);     // 设置超时        // 使用"带资源的try"构造, 可对try块参数表中的所有AutoCloseable对象自动调用close()        try (InputStream is = client.getInputStream()) {            byte[] buf = new byte[1024];            int len = is.read(buf);            System.out.println(new String(buf, 0, len));        }    }}

运行结果

  • Demo_01.java
    这里写图片描述
  • Demo_02.java
    这里写图片描述

总结

为了验证服务器端程序(Demo_01.java)是否实现了多线程,首先运行服务器端程序(Demo_01.java),之后运行三个客户端程序(Demo_02.java),当运行第一个客户端程序时,服务器端马上就进行数据处理,打印出“开始与客户端交互数据…”,再运行第二个和第三个客户端程序,会发现服务器端也立刻作出回应,两个客户端会话结束后分别打印各自结束信息。这说明通过多线程的方式,可以实现多个用户对同一个服务器端程序的访问。

0 0
原创粉丝点击