------- android培训、java培训、期待与您交流! ----------
一.基本概念
IP地址:计算机用来发送接收数据的地址。有了IP地址,别人就能将数据准确的发送给你的计算机。(127.0.0.1本机回环地址)
端口号:计算机程序用来发送接收数据的地址。有了端口号,别人就能将数据准确的放送给你计算机的某个程序。(计算机中有效端口0~65535,0~1024为系统保留端口)
通信协议:发送和接收数据的规则。
--UDP协议
面向无连接,容易丢包,数据传输较快,数据包大小限制在64KB内。
--TCP协议
面向连接,不易丢包,数据传输较慢,能进行大数据传送。
Socket:程序间的发送和接收数据的塔台,数据在两个Socket 间通过IO传输。
二.UDP协议下的Socket编写
-- 数据发送端的Socket编写
1.创建DatagramSocket对象。发送数据包,并指定发送数据的端口
DatagramSocket ds = new DatagramSocket (6666);
2.确定数据,并将要发送的数据封装成包即将数据封装到DatagramPacket对象中。
byte[] buf = 'abcdefghijklmnopqrstuvwxyz".getByte();
DatagramPacket dp = new DatagramPacket (buf, buf.length, InetAddress.getByName("127.0.0.1"),1000);
buf 是发送的数据,byte[]类型。 buf.length是数据的长度。
InetAddress.getByName("127.0.0.1"), 发送目的地,1000是目的地的端口号。
3.调用DatagramSocket对象的send(DatagramPacket dp)方法发送数据包
ds.send(dp);
4.调用DatagramSocket对象的close()方法关闭程序占用的系统资源。
ds.close();
--数据接收端的Socket编写
1.创建DatagramSocket对象。接收数据包,并指定接收数据的端口。
DatagramSocket ds = new DatagramSocket (10000);
2.创建DatagramPacket对象封装接收的数据。
byte[] buf =new byte[] ;
DatagramPacket dp = new DatagramPacket (buf,buf.length()) buf用于存放接收数据的字节数组。buf.length()接收数据的长度。
3.调用DatagramSocket对象的receive((DatagramPacket dp)方法接收数据。
ds.receive((DatagramPacket dp)
4.使用DatagramPacket对象的方法获取要使用的数据。
//获取发送数据者的主机地址
String ip = ds.getAddress().gethostAddress();
//获取封装在DatagramPacket对象中的数据,并将数据转换为字符串。
//String data = new String(dp.getData(),0,dp.getLength()) 0是数据的开始位置,dp.getLength()是数据的结束位置。
//获取发送者的端口
int port = dp.getPort();
5.关闭资源
ds.close();