📄 fileserver.java
字号:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class FileServer implements Runnable {
private final ServerSocket serverSocket;
//线程池 JDK5.0 后才能用 为保证兼容性,这里不使用
//private final ExecutorService pool;
// private Lock lock=new ReentrantLock();
/**
* 初始化服务器
* @param am 对应的AgentManager
* @param port 端口
* @throws IOException
*/
public FileServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
//初始化线程池
//pool = Executors.newCachedThreadPool();
}
/**
* 不在接受连接
*/
public void close() {
try {
serverSocket.close();
//pool.shutdown();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 开始服务
*/
public void serve() {
Socket client;
try {
System.out.println("服务器已经启动成功,开始服务");
for (;;) {
//等待连接
client = serverSocket.accept();
System.out.println(client.getRemoteSocketAddress()+"已经连接上来");
//执行一个线程,处理连接
//pool.execute(new Connection(client));
new Thread(new Connection(client)).start();
}
} catch (IOException ex) {
this.close();
}catch(java.util.concurrent.RejectedExecutionException e)
{
this.close();
}
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
// TODO Auto-generated method stub
serve();
}
public static void main(String args[]){
FileServer fs;
try {
fs = new FileServer(5555);
Thread tfs=new Thread(fs);
tfs.start();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -