Java---网络

目录

一、网络编程

二、通信要素

IP:

端口:

通信协议:

TCP:

UDP:

三、java基于TCP协议封装的类,如何使用

ServerSocket 服务器端

Socket 客户端

四、java基于UDP协议封装的类,如何使用


一、网络编程

使开发的程序,借助网络,在不同计算机之间进行数据传输。

Java语言支持网络传输的,将连接网络的细节都封装好了,提供给程序员的都是Api,使用这些类,可以轻松开发出具有网络通信 的软件。

计算机网络:通过通信线路(光纤,交换机,网线),把不同区域的计算机(广义)连接起来,通过特定的软件,能够实现信息,数据的共享。

二、通信要素

IP:

寻址 找主机 每台电脑都有一个ip 局域网ip(192.168.110) 广域网ip

网络中的计算机使用ip地址进行唯一标识

本地回环地址::127.0.0.1 访问自己电脑的,如果你的计算机没有连接任何的通信设备,

端口:

端口号是与计算机上的程序对应的 ,每个运行中的程序都会分配一个端口号,不能重复

端口号范围是0-65535 0-1024被系统占用 定义时1024-65535

通信协议:

通信双方,如何安全可靠的进行数据传输,传输什么内容,什么速度传,传的过程中出问题了怎么解决---->协议

在传输层,有两个非常重要的协议

TCP:

传输控制协议TCP(Transmission Control Protocol) 安全可靠,

必须先测试网络是否通畅

三次握手:

客户端                            服务器

在吗 ------------------------>第一次

第二次<----------------------在的          两次不行 不知道客户端是否连接

知道了------------------------->第三次

四次挥手:

客户端                                  服务器

我要走了 ------------------------>第一次

第二次<---------------------- 知道了

第三次<-------------------------将其他的带走

真走了--------------------------->第四次

UDP:

用户数据报协议UDP(User DatagramProtocol)。

将数据封装在一个数据报中,包含数据源,目标,数据 每次就只管发送,发送失败或者成功,都不知道 速度快,但不安全.

三、java基于TCP协议封装的类,如何使用

Socket 客户端

ServerSocket 服务器端

先启动服务器

再启动客户端

服务器,有一个监听程序,监听到了,获取对应客户端程序

ServerSocket 服务器端

public static void main(String[] args) throws IOException {
        //只需要定义端口
        //创建服务器端,指定端口,ip与计算机本机相同,程序在那台电脑运行,ip就是那个
        ServerSocket serverSocket=new ServerSocket(9999);
        System.out.println("服务器启动成功");
        //在服务器端监听客户端,是阻塞式的, 如果有程序连接,就会接受到对应的客户端程序
        Socket socket=serverSocket.accept();
        System.out.println("客户端连接成功"+socket);
        //客户端连接成功Socket[addr=/127.0.0.1,port=53907,localport=9999]


        //获取输入流对象
        InputStream in=socket.getInputStream();
        DataInputStream datain=new DataInputStream(in);
        //处理流直接拿到字符串
        System.out.println(datain.readUTF());
    }

Socket 客户端

public static void main(String[] args) {
        //创建客户端程序,创建时会进行三次握手来检测网络,以及服务器是否正常
        try {
            Socket socket=new Socket("127.0.0.1",9999);

            OutputStream out=socket.getOutputStream();//获取输出流对象
            DataOutputStream dataout=new DataOutputStream(out);

            dataout.writeUTF("你好--服务器");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("网络连接失败/ 服务器未启动");
        }
    }

四、java基于UDP协议封装的类,如何使用

发送端

public static void main(String[] args) throws IOException {
        //负责发送和接受数据
        DatagramSocket datagramSocket=new DatagramSocket();

        //数据报封装
        String s="你好 接收端";
        DatagramPacket datagramPacket=new DatagramPacket(s.getBytes(),s.getBytes().length, InetAddress.getByName("127.0.0.1"),9999);

        datagramSocket.send(datagramPacket);//发送数据
        datagramSocket.close();

    }

接收端

 public static void main(String[] args) throws IOException {
        DatagramSocket datagramSocket=new DatagramSocket(9999);
        byte []b=new byte[1024];

        DatagramPacket datagramPacket=new DatagramPacket(b,b.length);
        datagramSocket.receive(datagramPacket);//接受数据

        String s=new String(datagramPacket.getData(),0,datagramPacket.getLength());
        System.out.println(s);
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值