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

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();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值