📄 client.java
字号:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
Socket s = null;
// 服务器信息读入
BufferedReader sreader = null;
// 对象输出
ObjectOutputStream objectOut = null;
// 服务器命令输出
PrintStream ps = null;
// 基础的outputstream
OutputStream sout = null;
ObjectInputStream objReader=null;
/**
* 返回是否成功连接了
*
* @return true:成功连接 false:没有连接
*/
public boolean isConnect() {
if (s == null)
return false;
return s.isConnected();
}
/**
* 对一个主机发起连接,并返回这个连接的实例
*
* @param host
* 目的主机
* @param port
* 端口
*/
public Client(String host, int port) {
try {
// 如果连接不上s就为null,根据这个可以改进,返回数据是否传输成功
s = new Socket(host, port);
// 设置超时
//s.setSoTimeout(IP2PProperties.SOCKETTIMEOUT);
sreader = new BufferedReader(new InputStreamReader(s
.getInputStream()));
sout = s.getOutputStream();
objectOut = new ObjectOutputStream(sout);
ps = new PrintStream(s.getOutputStream());
objReader=new ObjectInputStream(s.getInputStream());
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void sendCommand(String cmd){
ps.println(cmd);
}
public void getReply() throws IOException{
String re=sreader.readLine();
System.out.println(re);
}
public static void main(String args[]) throws IOException{
BufferedReader in ;
String cmd;
in = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入要连接的计算机IP地址(输入空,表示回路连接):");
String ip=in.readLine();
Client cc=new Client(ip,5555);
while(!cc.isConnect()){
System.out.println("连接失败,输入要连接的计算机IP地址:");
ip=in.readLine();
cc=new Client(ip,5555);
}
System.out.println("已经连接完成,输入要传送的文件名:");
while(true){
try {
//发送消息
cmd=in.readLine();
cc.sendCommand(cmd);
if("exit".equalsIgnoreCase(cmd)){
return;
}
cc.getReply();
System.out.println("完成传输,输入下一个要传送的文件名");
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -