目录
一、网络编程概述
1、IP
在Java中提供了操作IP地址的接口
//实例化IP对象
InetAddress address = InetAddress.getByName("localhost");
//ip名和ip地址都可以,推荐使用ip地址
// InetAddress address = InetAddress.getByName("127.0.0.1");
//获取该IP地址的主机名
String name = address.getHostName();
//获取该IP地址
String ip = address.getHostAddress();
System.out.println("主机名" + name);
System.out.println("IP地址" + ip);
运行结果:
2、端口
3、数据传输协议
UDP协议:
TCP协议:
三次握手:
二、UDP通信程序
UDP发送数据的基本步骤:
1、UDP发送数据
public class Provider {
public static void main(String[] args) throws Exception{
//1、创建发送端的Socket对象(DatagramSocket)
DatagramSocket ds = new DatagramSocket();
//2、创建数据,并把数据打包
//构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号
byte[] bys = "hello,udp,I'm coming!".getBytes();
// int length = bys.length;
// InetAddress address = InetAddress.getByName("localhost");
// int port = 10086;
// DatagramPacket dp = new DatagramPacket(bys, length, address, port);
DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("localhost"), 10086);
//3、调用DatagramSocket对象的方法发送数据包
ds.send(dp);
//4、关闭发送端
ds.close();
}
}
2、UDP接受数据
public class Consumer {
public static void main(String[] args) throws Exception {
//1、创建接收端的Socket对象(DatagramSocket)
//构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket ds = new DatagramSocket(10086);
//2、创建一个数据包,用于接受数据
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
//3、调用DatagramSocket对象的方法接收数据
ds.receive(dp);
//4、解析数据包,并把数据在控制台显示
//返回数据缓存区
byte[] datas = dp.getData();
//获取到实际发送过来的数据长度
int len = dp.getLength();
String dataString = new String(datas, 0, len);
System.out.println("数据是:" + dataString);
//5、关闭接收端
ds.close();
}
}
3、生产者与消费者测试
首先先运行消费者对设置的端口进行监听,再运行生产者发送消息:
可以看到数据接收成功!
三、TCP通信程序
1、TCP发送数据
public class Provider {
public static void main(String[] args) throws Exception {
//1、创建Socket对象(Socket)
//创建流套接字将其连接到指定IP地址的端口号
// Socket s = new Socket(InetAddress.getByName("localhost"), 10000);
Socket s = new Socket("localhost", 10000);
//2、获取输出流,写数据
//返回此套接字的输出流
OutputStream os = s.getOutputStream();
os.write("hello,tcp,I'm coming!".getBytes());
//3、释放资源
s.close();
}
}
2、TCP接收数据
public class Consumer {
public static void main(String[] args) throws Exception {
//1、创建服务器端的Socket对象(ServerSocket)
//创建绑定到指定端口的服务器套接字
ServerSocket ss = new ServerSocket(10000);
//2、侦听要连接到此套接字并接收它
Socket s = ss.accept();
//3、获取输入流、读数据,并把数据显示在控制台
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String data = new String(bys, 0, len);
System.out.println("数据是:" + data);
//4、释放资源
s.close();
ss.close();
}
}
3、 生产者与消费者测试
首先先运行消费者对设置的端口进行监听,再运行生产者发送消息:
可以看到数据接收成功!