java---Socket通信程序(传送文件)

    xiaoxiao2021-03-25  95

    package L15.L; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.net.ServerSocket; import java.net.Socket; /** * Created by fangjiejie on 2017/3/10. */ //服务端发送文件 public class K { public static void main(String[] args) { ServerSocket server=null; Socket client=null; DataInputStream dis=null;//建立一个数据输入流 DataOutputStream dos=null;//建立一个数据输出流 try { server=new ServerSocket(9998);/*创建一个ServerSocket类,同时在运行该语句的计算机 的指定端口处建立一个监听服务*/ client=server.accept();/*该语句调用了ServerSocket对象的accept()方法, 这个方法的执行将使Server端的程序处于等待状态,程序将一直阻塞直到捕捉到一个来自Client端的请求, 并返回一个用于与该Client通信的Socket对象client。此后Server程序只要向这个Socket对象读写 数据,就可以实现向远端的Client读写数据。结束监听时,关闭ServerSocket对象:*/ File file=new File("E://1.mp3"); dis=new DataInputStream(new FileInputStream(file)); dos=new DataOutputStream(client.getOutputStream()); dos.writeUTF(file.getName());//给该文件命名 dos.flush(); int n=1; byte[] buffer=new byte[1024]; while((n=dis.read(buffer))!=-1){ //拷贝文件 dos.write(buffer,0,n); } dos.flush();//该输出流不能自动刷新,所以需要flush来刷新缓冲流 dos.close(); dis.close(); } catch (Exception e) { e.printStackTrace(); } } } package L15.L; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileOutputStream; import java.net.Socket; /** * Created by fangjiejie on 2017/3/10. */ //客户端接收文件 public class G { public static void main(String[] args) { Socket client =null; DataInputStream dis=null; DataOutputStream dos=null; try { client=new Socket("127.0.0.1",9998);/*Socket类的构造函数有两个参数, 第一个参数是欲连接到的Server计算机的主机地址,第二个参数是该Server机上提供服务的端口号。*/ dis=new DataInputStream(client.getInputStream());//客户端读取输入流 String filename=dis.readUTF(); File file=new File("D://"+filename); dos=new DataOutputStream(new FileOutputStream(file)); int n=-1; byte []buffer=new byte[1024]; while((n=dis.read(buffer))!=-1){ dos.write(buffer,0,n); } dos.flush(); dos.close(); dis.close(); } catch (Exception e) { e.printStackTrace(); } } }
    转载请注明原文地址: https://ju.6miu.com/read-21418.html

    最新回复(0)