class ServerThread implements Runnable { Socket socket; char[] cbuf; public ServerThread(Socket socket) { super(); this.socket = socket; } @Override public void run() { try { BufferedReader netIn2 = new BufferedReader(new InputStreamReader( socket.getInputStream())); System.out.println(netIn2.readLine()); // 从网络套接字获取输出流,建立打印输出流 PrintWriter netOut2 = new PrintWriter(socket.getOutputStream()); netOut2.write("你好\n"); netOut2.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public class ServerTest { public static void main(String[] args) throws Exception { int PORT = 8888; // 侦听端口 // 创建ServerSocket ServerSocket serverSocket = new ServerSocket(PORT); // 开始循环 while (true) { // 等待连接 Socket socket = (1) ; // 处理链接的线程类 ServerThread st = new ServerThread(socket); // 启动线程处理 new Thread(st).start(); } } }
时间: 2024-02-10 12:19:51 浏览: 67
这段Java代码是一个简单的Socket服务器程序,其中ServerTest类是服务器程序的主类,ServerThread类是处理连接请求的线程类。
在主类ServerTest的main方法中,通过创建ServerSocket对象并指定端口号来创建一个TCP服务器,在while循环中不断等待客户端的连接,当有客户端连接进来后,创建一个Socket对象来处理连接请求。然后将新创建的Socket对象作为参数传入ServerThread的构造函数中,创建一个ServerThread线程对象,最后通过启动线程来处理客户端的请求。
在ServerThread的run方法中,通过socket.getInputStream()方法获取到输入流,然后通过BufferedReader的readLine()方法来读取客户端发送过来的信息。接着通过socket.getOutputStream()方法获取到输出流,然后通过PrintWriter的write()方法向客户端发送信息。最后通过调用flush()方法将输出流缓冲区中的内容发送到客户端。如果出现异常,就通过printStackTrace()方法打印出异常信息。
阅读全文