所使用的内容
本页面所完成的事本机发送与接收
执行是请先运行接收页面,再进行发送页面
*Socket:网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字
*
* Socket原理机制:
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。
UDP传输:
DatagramSocket与DatagramPacket此类表示数据报包
建立发送端,接收端。
建立数据包。
调用Socket的发送接收方法。
关闭Socket。
发送端与接收端是两个独立的运行程序。
DatagramSocket构造方法摘要:
DatagramSocket(int port, InetAddress laddr)
创建数据报套接字,将其绑定到指定的本地地址。
DatagramSocket常用方法:
void send(DatagramPacket p)
从此套接字发送数据报包。
void receive(DatagramPacket p)
从此套接字接收数据报包。
DatagramPacket构造方法摘要:
DatagramPacket(byte[] buf, int length, InetAddress address, int port)
构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
DatagramPacket(byte[] buf, int length)
构造 DatagramPacket,用来接收长度为 length 的数据包。**
public static void main(String[] args) throws Exception {
//端口
int port=10008;
//发送者ip地址
InetAddress ia=InetAddress.getLocalHost(); //创建Socket对象
DatagramSocket ds=new DatagramSocket(port);
//创建发送数据
String s="晚安";
byte[] buf=s.getBytes();
//创建数据包
DatagramPacket dp=new DatagramPacket(buf, buf.length,ia,10001);//10001接收方端口
//发送数据
ds.send(dp);
//发送结束后结束
ds.close();
}
//这是发送端
//接收端
public static void main(String[] args) throws Exception {
//接收端端口
int port=10001;
//ip地址
// InetAddress ia=InetAddress.getByName("192.4.2.5");
//创建Socket接收对象
DatagramSocket ds=new DatagramSocket(port);
System.out.println("接收者打开...........");
//接收对象
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf, buf.length);
ds.receive(dp);
//将接收到的解码
//获取ip
String senip=dp.getAddress().toString();
//获取端口
int senport=dp.getPort();
//将接受到数组转换成字符串
byte[] bs=dp.getData();
String message=new String(bs);
System.out.println("接收到"+senip+"发送的"+message);
//关闭Socket
ds.close();
}