第十六篇 黑马程序员-网络编程

------- android培训java培训、期待与您交流! ----------

一:
1.TCP传输:
tcp分客户端和服务端,
客户端对应的对象是Socket,服务端对应的对象是ServerSocket,
通过查阅socket对象,发现在该对象建立时,就可以去连接指定主机,
因为tcp是面向连接的,所以在建立socket服务时,就要有服务端存在,并连接成功,形成通路后,在该通道进行数据的传输。
2.网络文件复制(代码演示):
客户端:
import java.net.*; 
import java.io.*; 
 
public class SendFile { 
 
    /**
     * 需求:将文件发送至服务端
     * 
     * 流程:
     *      1、建立socket连接 ,指定服务器端口10000
     *      2、建立文件读取流 BufferedInputStream链接到文件
     *      3、建立输出流链接到 socket 的getOutputStream中
     *      4、读取文件 写入socket流中
     *      5、建立输入流链接到socket 的getInputStream中,等待成功信息
     *     
     */ 
    public void send()throws Exception{ 
        Socket socket =  
                new Socket (InetAddress.getByName("192.168.1.5"),10000); 
        BufferedInputStream bis =  
                new BufferedInputStream(new FileInputStream("D:\\hello.txt")); 
        OutputStream socketOut = socket.getOutputStream(); 
         
        byte[] buff = new byte[1024]; 
        int len ; 
        while ( (len = bis.read(buff))!=-1) 
        { 
            socketOut.write(buff); 
        } 
        System.out.println("finished"); 
        socket.shutdownOutput(); 
        BufferedReader socketInput = 
                new BufferedReader( new InputStreamReader(socket.getInputStream())); 
        String s = socketInput.readLine(); 
        System.out.println(s); 
        bis.close(); 
        socket.close();  
    } 
     
     
    public static void main(String[] args) throws Exception { 
        SendFile s = new SendFile(); 
        s.send(); 
    } 
 
}


服务器端:
import java.io.*; 
import java.net.*; 
 
public class ReceiveFile { 
 
    /**
     * 创建一个ServerSocket服务,监听10000端口
     * 创建BufferedOutputstream
     * 获取一个socket流,
     * 利用socket流中的InputStream创建一个InputStream
     * 写入文件
     * @throws Exception 
     */ 
    public void Receive() throws Exception{ 
        ServerSocket serSocket = new ServerSocket(10000); 
        Socket socket = serSocket.accept(); 
         
        BufferedOutputStream fileOut =  
                new BufferedOutputStream(new FileOutputStream("E:\\hello.txt")); 
         
        InputStream inSocket =  
                socket.getInputStream(); 
         
        byte[] buf = new byte[1024]; 
        int len =0; 
        System.out.println("Going to While"); 
        while ( (len = inSocket.read(buf))!=-1) 
        { 
            System.out.println("inside while"); 
            fileOut.write(buf, 0, len); 
             
        } 
        String s = "写入成功!"; 
        System.out.println(s); 
        DataOutputStream socketOut = new DataOutputStream(socket.getOutputStream()); 
        socketOut.writeBytes(s); 
         
        fileOut.close(); 
        socket.close(); 
        serSocket.close();       
    } 
     
    public static void main(String[] args) throws Exception { 
        ReceiveFile rec = new ReceiveFile(); 
        rec.Receive(); 
    } 
 

 

------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值