网络编程
一、InetAddress
java.net包下,此类表示互联网协议(IP)地址
static InetAddress getByName(String host)//根据主机名或者IP地址获取相关信息
关键在于如何获取InetAddress对象
二、使用UDP协议发送对象
1.创建发送端Socket对象
DatagramSocket:此类用来发送和接受数据报包的套接字,基于UDP协议
(1)DatagramSocket():创建Socket对象并随机分配端口号
DatagramSocket ds = new DatagramSocket();
(2)DatagramSocket(int port ):创建Socket对象并指定端口号
2.创建数据并打包
DatagramPacket:此类表示数据报包
数据byte[]
设备地址IP
进程的地址:端口号
DatagramPacket(byte[] buf,int length,InetAddress address,int port)
3.发送数据
ds.send(p);
4.释放资源
ds.close();
三、UDP接收数据
1.创建接收端Socket对象
DatagramSocket ds = new DatagramSocket(8888);
2.接收数据
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPcket(bys,bys.length);
ds.receive(dp);//阻塞
3.解析数据
//InetAddress getAddress():获取发送端的IP对象
InetAddress address = dp.getAddress();
//byte[] getData():获取接收到的数据,也可以直接创建包对象时的数组
byte[] data = dp.getData();
//int getLength():获取具体收到的字节个数
int length = dp.getLength();
4.输出数据
System.out.println("sender---->" + address.getHostAddress());
System.out.println(new String(data,0,length));
5.释放资源
dp.close();
UDP协议收发数据的注意事项: 端口号错误,数据可以正常发出,不会出现异常,但是收不到数据
四、使用TCP发送数据
1.创建发送端Socket对象(创建连接)
Java.net.Socket实现客户端套接字
Socket(InetAddress address,int port)
Socket s = new Socket(InetAddress address,int port)
2.获取输出流对象
OutputStream os = s.getOutputStream();
3.发送数据
String str = "hello tcp";
os.write(str.getBytes());
4.释放资源
s.close();
四、TCP接收端
1.创建接收端Socket对象
Java.net.ServerSocket
ServerSocket(int port);
ServerSocket ss = new ServerSocket(10086);
2.监听(阻塞)
ServerSocket中没有关于获取数据的方法
Socket s = ss.accept();
3.接受数据
InputStream is = s.getInputStream();
4.获取数据
byte[] bys = new byte[1024];
int len = is.read(bys);
5.输出数据
System.out.println(new String(bys,0,len));
6.释放资源
s.close();