26 Sep 2018 in JavaWeb

JavaWeb之TCP连接

使用Socket套接字来实现一个简单的TCP连接,因为十分简单,所以注释直接写在代码上。 客户端代码:

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String args[]) {
        Socket socket = null;
        OutputStream os = null;    //输出
        InputStream is = null;    //输入
        byte[] data = "收到了吗".getBytes();
        try {
            socket = new Socket("localhost",4400); //与服务器建立连接
            os = socket.getOutputStream();
            is = socket.getInputStream();
            os.write(data);    //向服务器发送信息
            int n = is.read(data);    //接受来自服务器的信息,注意这里有阻塞
            System.out.println(new String(data,0,n));
        }catch(Exception e) {
            e.printStackTrace();
        }finally {
            try {
                is.close();
                os.close();
                socket.close();
            }catch(Exception e) {
                System.out.println("关闭出错了呢!");
                e.printStackTrace();
            }
        }
    }
}

服务器代码:

import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;
public class TCPServer {
    public static void main(String args[]) {
        try {
        //开启服务器端口,端口号是4400
        ServerSocket server = new ServerSocket(4400);
        System.out.println("server start!");
        //在循环中,可接受多个客户端发来的信息,为每个客户端建立一个线程
        while(true) {
            Socket s = server.accept();    //注意这是一个阻塞过程
            new ResponseThread(s);
        }
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

class ResponseThread extends Thread{
    Socket s;
    public ResponseThread(Socket s) {
        this.s=s;
        start();    //调用这个方法后会执行run()
    }
    public void run() {
        InputStream is = null;
        OutputStream os = null;
        try {
            is = s.getInputStream();
            os = s.getOutputStream();
            byte[] b = new byte[1024];
            int n = is.read(b);    //接受来自客户端的消息
            String send = new String(b,0,n);
            System.out.println("受到的消息是:"+send);
            String response = "收到了!";
            b = response.getBytes();
            os.write(b);    //想客户端发送消息
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

最后运行结果如下图: 服务器结果

服务器结果

客户端结果

客户端结果

Thank You For Reading