---------------------- 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培训、期待与您交流!----------------------