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 22:19:51 浏览: 63
这段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()方法打印出异常信息。
相关问题
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; 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 = new socket(); // 处理链接的线程类 ServerThread st = new ServerThread(socket); // 启动线程处理 new Thread(st).start(); } } }
这是一个简单的Java Socket编程示例,它创建了一个ServerSocket对象并在指定端口上侦听连接。当客户端连接到该端口时,程序将创建一个新线程(ServerThread),并将新套接字传递给该线程,以便线程可以与客户端进行通信。在ServerThread中,程序从客户端获取输入流,并打印在控制台上。然后,程序从网络套接字获取输出流,并向客户端发送一条消息。最后,程序关闭套接字和相关的IO对象。
java socket和多线程
```java
// Java Socket实现多线程通信
// 服务器端
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(6666);
while (true) {
Socket socket = serverSocket.accept();
ServerThread serverThread = new ServerThread(socket);
serverThread.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class ServerThread extends Thread {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
String clientMessage = dis.readUTF();
System.out.println("Message from client: " + clientMessage);
dos.writeUTF("Hello, client!");
dos.flush();
dos.close();
dis.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 客户端
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 6666);
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
dos.writeUTF("Hello, server!");
dos.flush();
String serverMessage = dis.readUTF();
System.out.println("Message from server: " + serverMessage);
dos.close();
dis.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
阅读全文