fileclient.java
来自「一个用java写的即时聊天系统 C/S结构的」· Java 代码 · 共 119 行
JAVA
119 行
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.Socket;public class FileClient extends Peer implements Runnable { private Thread exac; private Socket s; public FileClient(String ip, int port) { super(); exac = new Thread(this); try { s = new Socket(ip, port); gui.setStatusContent("The fileclient started."); } catch (IOException e) { gui.setStatusContent("Could not create FileSocket."); } } public void start() { exac.start(); } public void run() { String message = null; while (true) { switch (getStatus()) { case Utility.BEGIN_CONNECT: try { 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 FilePipe."); } 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."); } if (message.equals(Utility.RECV)) { setStatus(Utility.SENDING); } if (message.equals(Utility.REFU)) { gui.setStatusContent("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."); break; case Utility.RECVING: recvFile(); setStatus(Utility.CONNECTED); gui.setStatusContent("Transfered."); break; case Utility.DISCONNECTING: close(); try{ s.close(); }catch(Exception e){ gui.setStatusContent("Could not close."); } gui.setStatusContent("The client disconnected."); gui.reSet(); return; } System.out.println("The client status is " + getStatus()); } } public static void main(String[] args) throws Exception { gui = new GUI(Utility.CLIENT); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?