package com.testtcp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketDemoTwo {
static class DealSockets implements Runnable{
private Socket s;
private int count = 1;
public DealSockets(Socket s){
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("server conntected..."+s.getInetAddress().getHostAddress());
try {
InputStream input = s.getInputStream();
OutputStream output = s.getOutputStream();
BufferedReader fis = new BufferedReader(new InputStreamReader(input));
BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(output));
String line = fis.readLine();
String fileName;
//读取文件名
if(line!=null){
fileName = line;
fos.write("rece");
fos.newLine();
fos.flush();
File f = new File(fileName);
while(f.exists()){
f = new File("(重复"+count+++")"+fileName);
}
//开始接受文件
FileOutputStream fileOut = new FileOutputStream(f.getName());
byte []buf = new byte[1024];
int len;
while((len=input.read(buf))!=-1){
fileOut.write(buf, 0, len);
}
fos.write("文件写完成!");
fos.newLine();
fos.flush();
//文件写结束
fileOut.close();
fos.close();
s.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ServerSocket ss;
try {
ss = new ServerSocket(10000);
System.out.println("server wait............");
while(true){
Socket s = ss.accept();
new Thread(new DealSockets(s)).start();
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
package com.testtcp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* 多个客户端给服务器发送文件,服务器接并保存
*/
public class SocketDemoTwo {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket s =null;
try {
s = new Socket("127.0.0.1",10000);
InputStream input = s.getInputStream();
OutputStream output = s.getOutputStream();
//发送文件名
BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(output));
BufferedReader fis = new BufferedReader(new InputStreamReader(input));
//"c:\\puke\\nazi.jpg"
File file = new File("F:\\视频\\dy\\乌龙派出所(高清)\\乌龙派出所-第31集.mp4");
if(file.exists()){
fos.write(file.getName());
fos.newLine();
fos.flush();
String line = null;
if((line=fis.readLine())!=null){
//收到服务端的消息,如果正确,发送文件
if(line.equals("rece")){
FileInputStream fileInput = new FileInputStream(file);
byte []buf = new byte[1024];
int len;
while((len=fileInput.read(buf))!=-1){
//发送数据
output.write(buf, 0, len);
}
//关闭写入流
fileInput.close();
//关闭输出流
s.shutdownOutput();
String info = fis.readLine();
//发送完成
if(!info.equals(null)){
System.out.println(info);
}
//关闭输出流
s.close();
}
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
|
|