服务器端:
package tcp;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Fileserver implements Runnable {
private static final int port=8000;//服务器监听端口
private Socket s;
public Fileserver(Socket s){
super();
this.s=s;
}
public static void server(){
try{
ServerSocket ss=new ServerSocket(port);//创建服务器Socket
while(true){
Socket s=ss.accept();
new Thread(new Fileserver(s)).start();//将联通的socket传给该线程
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Fileserver.server();
}
private static final int port=8000;//服务器监听端口
private Socket s;
public Fileserver(Socket s){
super();
this.s=s;
}
public static void server(){
try{
ServerSocket ss=new ServerSocket(port);//创建服务器Socket
while(true){
Socket s=ss.accept();
new Thread(new Fileserver(s)).start();//将联通的socket传给该线程
}
}catch(IOException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Fileserver.server();
}
public void run() {
byte[] buf=new byte[100];
OutputStream os=null;
FileInputStream fins=null;
try{
os=s.getOutputStream();
String filepath="F:\\java高级 \\network\\file.txt";
String filename="file.txt";
System.out.println("将文件名:"+filename+"传输过去");
os.write(filename.getBytes());
System.out.println("开始传输文件");
fins=new FileInputStream(filepath);
int data;
while((data=fins.read())!=-1)
{
os.write(data);
}
System.out.println("文件传输结束");
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(fins!=null)
fins.close();
if(os!=null)
os.close();
this.s.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
byte[] buf=new byte[100];
OutputStream os=null;
FileInputStream fins=null;
try{
os=s.getOutputStream();
String filepath="F:\\java高级 \\network\\file.txt";
String filename="file.txt";
System.out.println("将文件名:"+filename+"传输过去");
os.write(filename.getBytes());
System.out.println("开始传输文件");
fins=new FileInputStream(filepath);
int data;
while((data=fins.read())!=-1)
{
os.write(data);
}
System.out.println("文件传输结束");
}catch(IOException e){
e.printStackTrace();
}finally{
try{
if(fins!=null)
fins.close();
if(os!=null)
os.close();
this.s.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
}
客户端:
package tcp;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
public class Fileclient {
private static final String serverip="127.0.0.1";
private static final int sport=8000;
private static final int cport=8001;
public static void main(String[] args) {
byte[] buf=new byte[100];//用来接收传过来的字符
Socket s=new Socket();
try{
s.connect(new InetSocketAddress(serverip,sport),cport);
InputStream is=s.getInputStream();
int len=is.read(buf);
String filename=new String(buf,0,len);
System.out.println(filename);;
FileOutputStream fos=new FileOutputStream("F:\\java高级 \\"+filename);
int data;
while((data=is.read())!=-1)
{
fos.write(data);
}
is.close();
s.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
转载于:https://blog.51cto.com/3948494/1166779