java网络编程使用UDP和TCP协议进行通信的流程

UDP通信程序

UDP发送数据流程


//1.  创建发送端的Socket对象(DatagramSocket)
//DatagramSocket()构造数据报套接字并将其绑定到本地主机上的任何可用端口
DatagramSocket  ds = new DatagramSocket()

//2.  创建数据,并把数据打包
//DataframPacket(byte[] buf, int length, InetAddress address, int port)
//构造一个数据包,发送长度为length的数据包到指定主机上的指定端口号
byte[] bys = "hello, udp, 我来了".getBytes();
int length = bys.length;
InetAddress address = InetAddress.getByName("172.19.10.8");
int port = 1234;
DatagramPacket dp = new DatagramPacket(bys, length, address, port);

//3.  调用DatagramSocket对象的方法发送数据
// void send(DatagramPacket p)从此套接字发送数据包
ds.send(dp)

//4.  关闭发送端
ds.close();

UDP接收数据流程


//1.创建接收端的Socket对象(DatagramSocket)
//DatagramSocket(int port)构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket ds = new DatagramSocket(1234);

//2.创建一个数据包,用于接收数据
//DatagramPacket(byte[] buf, int length)构造一个DatagramPacket用于接收长度为length数据包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);

//3.调用DatagramSocket对象的方法接收数据
ds.receive(dp);

//4.解析数据包,并把数据在控制台显示
//byte[] getData() 返回数据缓冲区
byte[] datas = dp.getData();
int len = dp.getLength();
String dataString = new String(datas, 0, len);
System.out.println("数据是:" + dataString);

//5.关闭接收端
ds.close();

TCP通信程序

TCP发送数据

//1.创建客户端的Socket对象(Socket)
//Socket (InetAddress address, int port) 创建套接字并将其连接到指定IP地址的指定端口号
//Socket s = new Socket(InetAddress.getByName("172.19.10.8"), 100);
//Socket(String host, int port)
Socket s = new Socket("172.19.10.8", 100);

//2.获取输出流,写数据
OutputStream os = s.getOutputStream();
os.write("hello, tcp, 我来了".getBytes());

//3.关闭客户端
s.close();

TCP接收数据

//1. 创建服务器端的Socket对象(ServerSocket)
//ServerSocket(int port) 创建绑定到指定端口的服务器套接字
ServerSocket ss = new ServerSocket(100);
//Socket accept() 倾听要连接到此套接字并接受它
Socket s = ss.accept();

//2.获取输入流,读数据,并把数据显示在控制台
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);

//3.释放资源
s.close();
ss.close();
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值