您的位置:首页 > 编程语言 > Java开发

服务端接收到客户端发送的文件名,并把文件的内容返回给客户端

2016-06-21 07:09 501 查看
/**

 * 1.使用socket客户端,连接已经开发好的服务端

 * 2.实现不断地发送内容到服务端、

 * 3.并且把服务端返回过来的消息打印出来

 * @author JeffChen

 *

 */

public class ClientSocket {

public static void client(String address,int port){
//定义变量
Socket socket = null;
//输入、输出流
InputStream keyboardIn = null;
OutputStream out = null;
//
Scanner s = null;
PrintWriter pw = null;
try {
//1:建立与服务端的连接
socket = new Socket(address,port);
//2:从键盘循环读取内容
keyboardIn = System.in;
s = new Scanner(keyboardIn);

while(s.hasNext()){
String keyboardWord = s.nextLine();
//3:发送内容到服务端
out = socket.getOutputStream();
pw = new PrintWriter(out);
pw.println(keyboardWord);
pw.flush();
//4:从服务端读取内容
Scanner ss = new Scanner(socket.getInputStream());
while(ss.hasNext()){
String str = ss.nextLine();
if(str.contains("--end--")){
break;
}
if(str.contains("File does not exist")){
System.out.println(str);
break;
}
System.out.println(str);

}
}

} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
//关闭所有的连接
try {
pw.close();
out.close();
s.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

public static void main(String[] args) {
String address = "192.168.1.130";
int port = 6666;
client(address,port);
}

}

//服务端

public class ScoketService {

public static void server() {
System.out.println("-------------服务已启动-------------");
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(6666);
while (true) {
//接收一个客户端的连接
Socket socket = serverSocket.accept();
// 获取ip地址
InetAddress sourceIp = socket.getInetAddress();
System.out.println(sourceIp);
InputStream is = socket.getInputStream();
Scanner s = new Scanner(is);
OutputStream out = socket.getOutputStream();
while (s.hasNext()) {
// 1:我们拿到了客户端输入来的信息
String str = s.nextLine();
System.out.println(str);
// 2:根据文件名,从文件里取出数据
String fileContent = "";
fileContent = getContentFromFile(str);

// 3:发送内容到客户端(回应一下客户)
PrintWriter pw = new PrintWriter(out);
pw.println(fileContent);
pw.flush();
}
is.close();
socket.close();
System.out.println(sourceIp+"已下线");
}

} catch (IOException e) {
e.printStackTrace();
}finally {
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}

}

/**
* 根据文件名,取出文件中的内容
* @param filePath
* @return
*/
public static String getContentFromFile(String filePath) {
if(filePath.equals("ips.txt")){
String content ="";
try {
Scanner s = new Scanner(new File(filePath));
while(s.hasNext()){
content+=s.nextLine()+"\n";
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return content;
}else{
return "File does not exist!!!!!!!!! ";
}

}

public static void main(String[] args) {
server();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Socket client