📄 clienttest.java
字号:
package send;import java.io.BufferedOutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileOutputStream;import interfaces.MainInter; public class ClientTest { private ClientSocket cs = null; private String ip = "192.168.1.10";// 设置成服务器IP private int port = 8821; private String sendMessage = "Windwos"; public String savePath;//保存路径 public ClientTest() { try { if (createConnection()) { sendMessage(); getMessage(); MainInter.jlabel1.setText("");//消息清空 MainInter.jlabel2.setText("");//消息清空 MainInter.jlabel3.setText("");//消息清空 } } catch (Exception ex) { ex.printStackTrace(); } } private boolean createConnection() { cs = new ClientSocket(ip, port); try { cs.CreateConnection(); //System.out.print("连接服务器成功!" + "\n"); MainInter.jlabel1.setText(ip+"连接成功!"); return true; } catch (Exception e) { // System.out.print("连接服务器失败!" + "\n"); MainInter.jlabel3.setText("没有客户端连接"); return false; } } private void sendMessage() { if (cs == null) return; try { cs.sendMessage(sendMessage); } catch (Exception e) { // System.out.print("发送消息失败!" + "\n"); MainInter.jlabel3.setText("发送消息失败!"); } } private void getMessage() { if (cs == null) return; DataInputStream inputStream = null; try { inputStream = cs.getMessageStream(); } catch (Exception e) { //System.out.print("接收消息缓存错误\n"); MainInter.jlabel3.setText("接收消息缓存错误!"); return; } try { int bufferSize = 8192; byte[] buf = new byte[bufferSize]; int passedlen = 0; long len=0; savePath="G:\\"; savePath += inputStream.readUTF(); DataOutputStream fileOut = new DataOutputStream(new BufferedOutputStream(new BufferedOutputStream(new FileOutputStream(savePath)))); len = inputStream.readLong(); // System.out.println("文件的长度为:" + len + "\n"); //System.out.println("开始接收文件!" + "\n"); // MainInter.jlabel1.setText(""); MainInter.jlabel1.setText("文件的长度为:" + len +" KB"); MainInter.jlabel2.setText("开始接收文件!"); while (true) { int read = 0; if (inputStream != null) { read = inputStream.read(buf); } passedlen += read; if (read == -1) { break; } //下面进度条本为图形界面的prograssBar做的,这里如果是打文件,可能会重复打印出一些相同的百分比 //System.out.println("文件接收了" + (passedlen * 100/ len) + "%\n"); MainInter.jlabel2.setText("文件接收了" + (passedlen * 100/ len) + "%" ); fileOut.write(buf, 0, read); } //System.out.println("接收完成,文件存为" + savePath + "\n"); MainInter.jlabel2.setText("接收完成,文件存为" + savePath ); fileOut.close(); } catch (Exception e) { //System.out.println("接收消息错误" + "\n"); MainInter.jlabel3.setText("接收消息错误"); return; } } }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -