JAVA温习课堂14

52、TCP/IP 编程基础(国际标准)传输控制协议TCP,网络互联协议IP
    网络编程的目的:直接或间接通过网络协议与其它计算机进行通讯
        准确定义网络上一台或多台主机 InetAddress.getByName(String arg);
        找到主机后如何可靠高效地进行数据传输
    IP定位网络中的一台主机
    端口定位主机的一个网络程序
    InetAddress : 对象表示网络中的一个地址
    Socket 对象 (套接字): 端口号与IP地址的组合得出网络套接字 
        连接到远程主机
        绑定到端口
        接收从远程机器来的连接请求
        监听到达的数据
        发送数据
        接收数据
        关闭连接

实例代码:(服务端监听端口,客户端连接至服务端,两者进行通信)
    @Test
    public void testServerSocket() throws IOException{
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("监听端口号8888");
        Socket socket = serverSocket.accept();

        OutputStream out = socket.getOutputStream();
        DataOutputStream dou = new DataOutputStream(out);
        dou.writeUTF("此条信息~~来自服务器");

        serverSocket.close();
        socket.close();
    }

    @Test
    public void testSocket() throws IOException{

        InetAddress ip = InetAddress.getLocalHost();
        String ipAddress = ip.getHostAddress();
        System.out.println(ipAddress);

        Socket socket = new Socket(ipAddress,8888);
        InputStream in = socket.getInputStream();
        DataInputStream din = new DataInputStream(in);

        System.out.println(din.readUTF());

        din.close();
        socket.close();
    }

实例代码:(服务端发送文件给客户端,客户端接收并存至硬盘!)
    @Test
    public void testFileSocket() throws IOException{

        ServerSocket serverSocket = new ServerSocket(8888);

        System.out.println("等待连接......");

        Socket socket = serverSocket.accept();

        System.out.println("连接进入");
        // 获取当前类目录下的配置文件
        InputStream in = this.getClass().getResourceAsStream("爱很美.jpg");
        byte [] buffer = new byte[1024];
        int len = 0;

        OutputStream out = socket.getOutputStream();

        while((len = in.read(buffer)) != -1){
            out.write(buffer,0,len);
        }


        in.close();
        out.close();
        socket.close();
        serverSocket.close();

    }
    @Test
    public void testFileSocketClient() throws IOException{

        InetAddress ip = InetAddress.getByName("127.0.0.1");

        Socket socket = new Socket(ip,8888);
        // 读取服务器发过来的数据
        InputStream in  = socket.getInputStream();

        OutputStream out = new FileOutputStream("E:\\爱很美.jpg");

        byte[] buffer = new byte[1024];
        int len = 0;

        while((len = in.read(buffer)) != -1){
            out.write(buffer,0, len);
        }
        System.out.println("获取完成");

        in.close();
        out.close();
        socket.close();
    }

    UDP(DatagramSocket 和 DatagramPacket 实现基于UDP协议网络程序)
        DatagramPacket:对象封装了UDP数据报,在数据报中包含了客户端的IP地址和端口号以及服务器的IP地址和端口号
        DatagramSocket: 发送和接收系统不保证UDP数据报一定能够安全送到目的地,也不能确定什么时候可以抵达
更新时间:2016年10月8日
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值