网络编程概述

InetAddress

Java中使用InetAddress类代表IP

代码

        InetAddress inet1 = InetAddress.getByName("192.168.10.14");
        System.out.println(inet1);
        InetAddress inet2 = InetAddress.getByName("www.baidu.com");
        System.out.println(inet2);
        //获取域名
        System.out.println(inet2.getHostName());
        //获取IP地址
        System.out.println(inet2.getHostAddress());

在这里插入图片描述

Socket

端口号和IP地址的组合得出一个网络套接字:Socket。

Socket编程

客户端发送消息给服务端,服务端打印消息。服务器端返回打印成功给客户端。

    //客户端
    public void client() throws IOException {
        //对方的IP
        InetAddress inet = InetAddress.getByName("127.0.0.1");
        //创建一个socket
        //IP地址 端口
        Socket socket = new Socket(inet,8899);
        //流
        OutputStream os = socket.getOutputStream();
        os.write("这里是客户端".getBytes());
        //接收服务器的返回
        InputStream is = socket.getInputStream();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[5];
        int len;
        while ((len=is.read(buffer))!=-1){
            String str = new String(buffer,0,len);
            baos.write(buffer,0,len);
        }
        System.out.println(baos.toString());
        //释放资源
        os.close();
        socket.close();
    }
    //服务端
    public void server() throws IOException {
        //自己的端口
        ServerSocket ss = new ServerSocket(8899);
        Socket socket = ss.accept();
        //流
        InputStream is = socket.getInputStream();

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[5];
        int len;
        while ((len=is.read(buffer))!=-1){
            String str = new String(buffer,0,len);
            baos.write(buffer,0,len);
        }
        System.out.println(baos.toString());

        OutputStream os = socket.getOutputStream();
        os.write("你好,已收到".getBytes());

        baos.close();
        is.close();
        socket.close();
        ss.close();
    }

UDP网络编程

    //发送端
    public void send() throws SocketException, UnknownHostException {
        DatagramSocket socket = new DatagramSocket();
        String str=  "UDP发送的消息";
        byte[] data = str.getBytes();
        InetAddress inet = InetAddress.getLocalHost();
        //数据报
        //传送对象 偏移量 长度 发送对象 端口号
        DatagramPacket packet = new DatagramPacket(data,0,data.length,inet,9090);
        socket.close();
    }
    //接收端
    public void receiver() throws IOException {
        DatagramSocket socket = new DatagramSocket(9090);
        byte[] buffer = new byte[100];
        //数据放在哪儿 偏移量
        DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
        socket.receive(packet);
        //输出
        System.out.println(new String(packet.getData(),0,packet.getLength()));
        socket.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值