要实现多任务的服务器,就离不开线程的使用,首先通过使用Runnable接口来进行线程操作,改一改代码。
package comserver240808;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class MServer {
//自定义服务器
public void creatServer() throws Exception{
//创建服务器
ServerSocket server = new ServerSocket(8899);
System.out.println("启动服务器。。。");
while (true) {
//阻塞监听连接过来的客户端
Socket socket = server.accept();
//获取输入输出流
OutputStream outputStream = socket.getOutputStream();
InputStream inputStream = socket.getInputStream();
String msg = "Connection successful!\r\n";
//发送数据
outputStream.write(msg.getBytes());
outputStream.flush();
//启动线程跟客户端通信
ServerThread st = new ServerThread(socket);
new Thread(st).start();
}
}
public static void main(String[] args) {
try {
new MServer().creatServer();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package comserver240808;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
//保持跟客户端通信的线程
public class ServerThread implements Runnable{
private Socket socket;
private InputStream inputStream;
private OutputStream outputStream;
public ServerThread(Socket socket){
this.socket = socket;
try {
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
@Override
public void run() {
try {
String msg = readMsg(inputStream);
//群聊3个人
System.out.println("msg:"+msg);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//读取客户端数据
public String readMsg(

最低0.47元/天 解锁文章
739

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



