java 网络编程

网络编程:在通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据交换

网络编程三要素:

        IP地址:要想在网络中的计算机互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定接收数据的计算机和发送数据的计算机,IP就是标识。

        端口:网络通信本质是应用程序的通信,端口可以唯一标识设备中的应用程序,端口就是应用程序的标识

        协议:通过计算机网络可以实现多台计算机的连接,位于同一网络中的计算机在进行连接的时候必须遵守一定的规则,在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据 的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交互,常见的有TCP和UDP协议。

                每次连接的时候都需要”三次握手“

InetAddress

        static InetAddress getByName(String host)确定主机名称的IP地址。主机名称可以是机器名,也可以是IP地址

                InetAddress byName = InetAddress.getByName(host);

        getHostName:获取该IP地址的主机名

                String hostName = byName.getHostName();

        getHostAddress:返回文本显示中的IP地址字符串

                String hostAddress = byName.getHostAddress();

UDP通信

        原理:UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象因此对于基于UDP协议的通信双方,没有所谓的客户端和服务的概念

UDP发送数据

Java提供了DatagramSocket类作为基于UDP协议的Socket

步骤:

        1、创建发送端的Socket对象DatagramSocket

DatagramSocket socket = new DatagramSocket();

        2、创建数据,将数据打包

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String line=null;

while ((line=reader.readLine())!=null) {

         byte[] lineBytes = line.getBytes();

        3、调用DatagramSocket对象发送数据

        DatagramPacket packet = new DatagramPacket(lineBytes, lineBytes.length,                                            InetAddress.getByName("IP地址"),10000);//10000是端口号

        socket.send(packet);

}

        4、关闭发送端

socket.close();

UDP接收数据

        1、创建DatagramSocket对象:使用代参,传入端口

                DatagramSocket receiveSocket = new DatagramSocket(10000);

        2、创建数据包,接收数据

                while (true){

                         byte[] bytes = new byte[1024];

         3、接收数据

                        DatagramPacket packet = new  DatagramPacket(bytes, bytes.length);

                        //接收

                         receiveSocket.receive(packet);

                //解析数据包

                        System.out.println(new String(packet.getData(),0,packet.getLength()));

        4、关闭接收

                        receiveSocket.close();

        }

TCP通信

                

TCP发送数据

        1、创建客户端Socket对象

                Socket socket = new Socket("192.168.11.236",10000);

        2、写数据

                OutputStream outputStream = socket.getOutputStream();

                outputStream.write("Hello!".getBytes());

                outputStream.write("你好呀".getBytes());

        3、关闭

                socket.close();

TCP接收数据

        1、创建ServerSocket对象

                ServerSocket serverSocket = new ServerSocket(12345);

        2、监听客户端、返回Socket对象

                Socket accept = serverSocket.accept();

        3、得到数据

                InputStream inputStream = accept.getInputStream();

                byte[] bytes = new byte[1024];

                int line;

                while ((line=inputStream.read(bytes))!=-1){

                         String s = new String(bytes, 0, line);

                         System.out.println(s);

                }

        4、关闭

                serverSocket.close();

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值