本程序功能与自动回复消息原理相同
/**
*一对多问答型服务器
*/
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 msg extends Thread{
private Socket socket;
public msg (Socket socket){
this.socket =socket;
}
@Override
public void run() {
this.masg();
}
private void masg(){
BufferedReader br =null;
PrintWriter pw =null;
try{
br =new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
pw =new PrintWriter(this.socket.getOutputStream());
while(true){
pw.println(br.readLine()+"服务端返回");
pw.flush();
}
}catch (Exception e){
System.out.println(this.socket.getInetAddress()+"掉线了");
e.printStackTrace();
}finally {
if (br!=null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (pw!=null){
pw.close();
}
}
}
}
public class EchoServer {
public static void main(String[] args) {
ServerSocket serverSocket =null;
try{
serverSocket =new ServerSocket(8888);
while(true){
Socket socket=serverSocket.accept();
new msg(socket).start();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if (serverSocket!=null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
这是一个使用Java编写的简单一对多问答型服务器程序。它通过创建ServerSocket监听8888端口,每当有客户端连接时,就会启动一个新的线程来处理客户端的请求。服务器会读取客户端发送的消息,并立即回显加上'服务端返回'的前缀。如果客户端断开连接,服务器会捕获异常并打印相关信息。

被折叠的 条评论
为什么被折叠?



