Java--13.网络编程

23 篇文章 0 订阅
本文介绍了Java的网络编程,包括TCP通信的ServerSocket和Socket的使用,以及UDP通信的发送与接收方法。内容详细,适用于Java开发者学习。
摘要由CSDN通过智能技术生成

Java–13

第十章 网络编程


前言

21世纪,走进了信息时代,各种各样的软件层出不穷,但是总离不开程序开发,离不开程序开发语言,Java语言作为人们所熟知的一门语言,对于其有必要进行系统的学习。


网络编程

1.定义

 网络编程即Socket套接字编程,使用一个服务器,支持多个客
 户端进行数据传递;

2.TCP通信

TCP通信需要服务器端与客户端进行连接,其中ServerSocket
即服务器端的Socket,可以创建一个服务器,使得其它客户端
可以进行连接并进行交互访问;

(1).ServerSocket

 try {
            ServerSocket server=new ServerSocket(8080);//实例化ServerSocket对象,参数为端口号
            while(true){
                System.out.println("--等待连接");
                Socket client= server.accept();//获取客户端连接
                if(client!=null){
                    System.out.println("--连接成功"+client.getInetAddress());
                    OutputStream outputStream = client.getOutputStream();//获取客户端的输出流
                    outputStream.write("Hello World".getBytes());
                    System.out.println("发送成功");
                    outputStream.close();
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

在这里插入图片描述

(2).Socket

Socket即创建客户端,可以连接服务器,并进行数据交互
	Socket client = new Socket("localhost", 8080);//实例化客户端,第一个参数为IP地址,第二个为端口号
            System.out.println("--连接成功");
            int a = 0;
            int b = 0;
            byte[] by = new byte[100];
            InputStream inputStream = client.getInputStream();//获取当前客户端的输入流
            String str = "";

            while ((a = inputStream.read()) != -1) {
                by[b++] = (byte) a;
            }
            System.out.println(new String(by));//输出数据
            inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

在这里插入图片描述

3.UDP通信

UDP通信是的发送方与接收方不需要进行连接,故其数据传输并
不安全,其需要使用到DatagramSocket与DatagramPacket

(1).发送方

	try {
            DatagramSocket sender=new DatagramSocket();//实例化DatagramSocket对象
            byte[] data="Hello World".getBytes();//将数据转换成字节形式
            //实例化DatagramPacket对象,参数依次为,需要传输的字节数据,起始位置,结束为止,目标ip地址,端口号
            DatagramPacket packet=new DatagramPacket(data,0,data.length, InetAddress.getByName("localhost"),8080);
            sender.send(packet);//发送数据包
        } catch (SocketException | UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

(2).接收方

	try {
            DatagramSocket receiver=new DatagramSocket(8080);//指定监听的端口号
            byte[] data=new byte[100];
            DatagramPacket packet=new DatagramPacket(data,data.length);
            while (true){
                receiver.receive(packet);//接收数据
                System.out.println(new String(data));
            }
        } catch (UnknownHostException | SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

笔记如有错误,遗漏之处,欢迎指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值