一个服务器连接多个客户端上传文件
原创
©著作权归作者所有:来自51CTO博客作者Joe_West的原创作品,请联系作者获取转载授权,否则将追究法律责任
public class TCPClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("192.168.196.1", 9999);
OutputStream out = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
BufferedReader reader = new BufferedReader(new FileReader("Client.txt"));
String line = null;
while ((line = reader.readLine())!=null) {
writer.write(line);
writer.newLine();
writer.flush();
}
socket.shutdownOutput();
InputStream in = socket.getInputStream();
byte[] bytes = new byte[1024 * 8];
int len = in.read(bytes);
String s = new String(bytes, 0, len);
System.out.println(s);
socket.close();
}
}
public class TCPServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9999);
System.out.println("服务器已开启等待连接....");
int i = 0;
while (true) {
System.out.println((i++)+"位客户端已连接");
Socket accept = serverSocket.accept();
new UploadThread(accept).start();
}
}
}
public class UploadThread extends Thread {
private Socket accept;
public UploadThread(Socket accept) {
this.accept = accept;
}
@Override
public void run() {
try {
InputStream in = accept.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
BufferedWriter writer = new BufferedWriter(new FileWriter(System.currentTimeMillis() + "copy.txt"));
String line = null;
while ((line = reader.readLine())!=null) {
writer.write(line);
writer.newLine();
writer.flush();
}
OutputStream out = accept.getOutputStream();
out.write("上传成功!".getBytes());
writer.close();
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}