黑马程序员_Java_网络编程(一)

本文介绍了网络编程的基本概念,包括IP地址、端口号、UDP与TCP协议等,并通过一个GUI聊天室案例详细展示了如何利用UDP实现简单的数据收发功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

一.网络编程概念


 1.IP地址
                 每一台机器都有一个唯一的IP地址, 通过IP地址可以找到这台机器.
                 IPv4 由4组0~255组成. 42亿个. 3/4在北美. 亚洲4亿. 中国2.5亿. 2011年3月分配完毕.
                 IPv6 由8组每组4个16进制组成.
                 ipconfig可以查询自己的IP.
                 ping 尝试连接某ip地址
                127.0.0.1 本地回路地址, ping这个地址可以测试网卡是否可用
                 255.255.255.255 广播地址


 2.端口号
                计算机上的每一个程序都会对应一个端口号 0~65536
                尽量使用1024以上的, 1024以下基本都被系统程序占用了


 3.UDP
                面向无连接, 不保证数据安全, 速度快.


 4.TCP
               面向连接, 数据安全, 速度稍慢. 三次握手. 发起请求, 接受请求, 发送数据.
  
二.API


   1.UDP发送:


                 需要创建Socket, 发送端不需要指定ip地址和端口, 使用本机地址发送, 会自动找到未使用的端口.


                  DatagramSocket socket = new DatagramSocket();


                  发送时需要创建数据包, 包含字节数组, 长度, ip地址, 端口号


                 DatagramPacket packet = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getByName("127.0.0.1"), 8888);


                 发送


                 socket.send(packet);


                 释放资源


                 socket.close();


 2.UDP接收


                需要创建Socket, 接收时必须指定端口号.


                DatagramSocket socket = new DatagramSocket(8888);


                  接收时也需要创建数据包, 用来存储数据. 需要一个字节数组.


                  DatagramPacket packet = new DatagramPacket(new byte[1024], 1024);


                  接收数据


                   socket.receive(packet);


                    从数据包中获取数据


                    byte[] data = packet.getData();


                    获取数据长度


                    int len = packet.getLength();


                    获取ip地址


                     packet.getInetAddress().getHostAddress();


                     获取端口号
                     packet.getPort();
  
三.GUI聊天室(老师所讲案例总结)


 1.界面所需组件
                 TextArea 接收
                 TextArea 发送
                 TextField 填写IP
                 Button 发送
                 Button 清屏
                 Button 聊天记录


 2.界面布局
                 Frame是边界布局
                 其中包含两个Panel, 一个是Center用来放文本域, 一个是South用来放文本框及按钮
                上面的Panel是边界布局BorderLayout, 其中有两个TextArea, 一个接收一个发送, 接收的在Center, 发送的在South
                下面的Panel是流式布局FlowLayout, 其中包含文本框和3个按钮


 3.发送
                 给发送按钮添加ActionListener, 当点击按钮时发送
                 获取文本框中的内容, ip地址
                 获取发送文本域中的内容, 消息内容
                 将消息内容发送到指定的ip地址, 端口号统一8888, 需要判断ip地址, 如果没填就像广播地址255.255.255.255发送
                 然后将发送出去的内容显示在接收文本域中
                 在发送文本域中添加KeyListener, 当按下CTRL+ENTER时发送


 4.接收
                 开启一条线程用来接收数据
                 接收到数据之后显示在接收文本域中


 5.清屏
                给清屏按钮添加ActionListener, 当点击按钮时清除接收文本域中所有内容
  

---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!----------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值