📄 fileserver.java
字号:
package mypkg;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class FileServer extends Peer implements Runnable{ private Thread exac; private ServerSocket ss; private Socket s; public FileServer(int port) { super(); exac = new Thread(this); try { ss = new ServerSocket(port); gui.setStatusContent("The fileserver started.");/* Log.getLogger().info("The fileserver started.");*/ } catch (IOException e) { gui.setStatusContent("Could not caeate FileServerSocket."); } } public void start() { exac.start(); } public void run() { String message = null; while (true) { switch (getStatus()) { case Utility.BEGIN_CONNECT: try { s = ss.accept(); bis = new BufferedInputStream(s.getInputStream()); bos = new BufferedOutputStream(s.getOutputStream()); in = new BufferedReader(new InputStreamReader(s .getInputStream())); out = new PrintWriter(s.getOutputStream()); setStatus(Utility.CONNECTED); } catch (IOException e) { gui.setStatusContent("Could not create socket.");/* Log.getLogger().warn("Could not create socket.");*/ } break; case Utility.CONNECTED: try { //firstly,to check the status is to be changed or not //if has been changed , then go out of the selection Thread.sleep(100); if(getStatus()!=Utility.CONNECTED) break; } catch (InterruptedException e1) { e1.printStackTrace(); } message = receive(); if (message != null) { if (message.equals("DISCONNECT")) { setStatus(Utility.DISCONNECTING); send(Utility.MSG, "DISCONNECT"); gui.setStatusContent("Diconnected.");/* Log.getLogger().info("Diconnected.");*/ } if (message.equals(Utility.RECV)) { setStatus(Utility.SENDING); } if (message.equals(Utility.REFU)) { gui.setStatusContent("Your friend refuse your attachement.");/* Log.getLogger().info("Your friend refuse your attachement.");*/ } } break; case Utility.SENDING: try { // send file thread sleep,wait receive file thread ready Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } sendFile(); setStatus(Utility.CONNECTED); gui.setStatusContent("Transfered.");/* Log.getLogger().info("Transfered.");*/ break; case Utility.RECVING: recvFile(); setStatus(Utility.CONNECTED); gui.setStatusContent("Transfered.");/* Log.getLogger().info("Transfered.");*/ break; case Utility.DISCONNECTING: close(); try{ ss.close(); s.close(); }catch(Exception e){ gui.setStatusContent("Could not close."); } gui.setStatusContent("The server disconnected."); gui.reSet();/* Log.getLogger().info("The server disconnected.");*/ return; } System.out.println("The server status is " + getStatus()); } } public static void main(String[] args) throws Exception { gui = new GUI(Utility.SERVER); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -