TCP服务器端程序

package tcp;
/*
 * ServerSocket类
 * java.net包中的ServerSocket类用于表示服务器套接字,其主要功能时等待来自网络的请求。
 * 它可以通过指定的端口来等待连接的套接字。
 * 服务器套接字一次可以与一个套接字连接。
 * 如果多台客户机同时提出连接请求,服务器套接字将请求链接的客户机存入队列中,然后从中取出一个套接字,
 * 与服务器新建的套接字连接起来。
 * 若请求连接数大于最大容纳数,则多出的连接请求被拒绝。
 * 队列的默认大小是 50 。
 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
/*
 * 本实例是一个TCP服务器端程序,在getserver()方法中建立服务器套接字,调用getClientMessage()方法获取客户端信息
 */
public class MyTcp {
    //创建BufferedReader对象
    private BufferedReader reader;
    //创建ServletSocket对象
    private ServerSocket server;
    //创建Socket对象socket
    private Socket socket;
    void getServer() {
        try {
            //实例化Socket对象
            server = new ServerSocket(8080);
            //输出信息
            System.out.println("服务器套接字已经创建成功");
            //如果套接字是连接状态
            while (true) {
                //输出信息
                System.out.println("等待客户机的连接");
                /*
                 * 实例化Socket对象
                 * accept():等待客户机的连接,若连接,则创建一套接字
                 * accept()会堵塞线程的继续执行,直到接收到客户的呼叫。
                 * 如果没有客户呼叫服务器,那么System.out.println("连接中")语句将不会执行。
                 *
                 */
                socket = server.accept();
                //实例化BufferedReader对象
                reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                getClientMessage();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public void getClientMessage() {
        //如果套接字是连接状态
        while(true) {
            //获得客户端信息
            try {
                System.out.println("客户机:"+reader.readLine());
            } catch (IOException e) {
                e.printStackTrace();//输出异常信息
            }
        try {
                if(reader!=null) {
                reader.close();//关闭流
            }
            if(socket!=null) {
                socket.close();//关闭套接字
            }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args) {
        new MyTcp().getServer();//创建本类对象并调用getServer()方法
    }

}

运行结果

服务器套接字已经创建成功
等待客户机的连接


猜你喜欢

转载自blog.csdn.net/qq_41978199/article/details/80720256