UDP网络编程
概念:
UDP协议(用户数据报协议)是无连接,不可靠的,无序的。速度比较快,
UDP协议以数据报作为数据传输的载体
进行数据传输时,首先将传输的数据定义成数据报(Datagram),在数据报中指明数据将要到达的Socket(主机地址和端口号),然后再将数据发送出去。
相关操作类:
DatagramPacket:表示数据报包
DatagramSocket:进行端到端通信的类
示例:
服务器端实现步骤
1.创建DatagramSocket,指定端口号
2.创建DatagramPacket
3.接收客户端发送的数据信息
4.读取数据
客户端实现步骤
1.定义发送信息
2.创建DatagramPacket,包含将要发送的信息
3.创建DatagramSocket
4.发送数据
- package zhang;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- /**
- * 服务器端,实现基于UDP的用户登陆
- * */
- public class UDPServer {
- public static void main(String[] args) throws IOException {
- //1.创建服务器端DatagramSocket,指定端口
- DatagramSocket socket=new DatagramSocket(8800);
- //2.创建数据报,用于接收客户端发送的数据
- byte[] data=new byte[1024];//创建字节数组,指定接收数据的大小
- DatagramPacket packet=new DatagramPacket(data,data.length);
- //3.接收客户端发送的数据
- System.out.println("服务器端已经启动,等待客户端发送信息");
- socket.receive(packet);//此方法在接收到数据报之前会一直处于阻塞
- //4.读取数据
- String info=new String(data,0,packet.getLength());
- System.out.println("我是服务器,客户端说:"+info);
- //关闭
- socket.close();
- }
- }
- package zhang;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /**
- * 客户端
- * */
- public class UDPClient {
- public static void main(String[] args) throws IOException {
- //1.定义服务器的地址,服务器的端口号以及将要发送的数据
- InetAddress address=InetAddress.getByName("localhost");
- int port=8800;
- byte[] data="用户名:admin;密码:123".getBytes();
- //2.创建数据报,包含发送的数据信息
- DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
- //3.创建DatagramSocket对象
- DatagramSocket socket=new DatagramSocket();
- //4.向服务器发送数据报
- socket.send(packet);
- //关闭
- socket.close();
- }
- }
启动顺序:
先启动服务器:
输出:服务器端已经启动,等待客户端发送信息
再启动客户端:
输出:
服务器端已经启动,等待客户端发送信息
我是服务器,客户端说:用户名:admin;密码:123
UDP网络编程的更多相关文章
- JAVA UDP网络编程学习笔记
一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...
- unix域套接字UDP网络编程
unix域套接字UDP网络编程,服务器如下面: #include <stdio.h> #include <stdlib.h> #include <string.h> ...
- TCP/UDP网络编程的基础知识与基本示例(windows和Linux)
一.TCP编程的一般步骤 服务器端: 1.创建一个socket,用函数socket() 2.绑定IP地址.端口等信息到socket上,用函数bind() 3.开启监听,用函数listen() 4.接收 ...
- TCP与UDP网络编程总结(一)
(1):TCP网络编程 我们注意到服务端与客户端通信时是通过客户端的套接字相互通信的,那么服务端的套接字主要是干什么用的呢? TCP服务端设置监听套接字时 int listen(int sock,in ...
- Java UDP网络编程 - 最简单示例
UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...
- 自测之Lesson15:TCP&UDP网络编程
题目:编写一个TCP通信的程序. 实现代码: #include <stdio.h> #include <sys/socket.h> #include <unistd.h& ...
- 【linux高级程序设计】(第十五章)UDP网络编程应用 2
UDP广播通信 单播:一对一,TCP和UDP均可完成 广播:只能UDP完成.广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口.路由器默认不转发任何广播数据包.故广播在局域网 ...
- java udp网络编程
import java.net.*; /* 通过UDP传输发送文字数据 1.建立socket服务 2.提供数据,并封装到数据包中 3.通过sokect服务的发送功能,将数据包发送出去 4.关闭资源 * ...
- 【linux高级程序设计】(第十五章)UDP网络编程应用 5
域名与IP信息解析 /etc/hosts 文件中有部分IP地址与域名主机名的信息 /etc/resolv.conf 里面有DNS服务器的IP地址 struct hostent { char *h_na ...
随机推荐
- Spring Security入门(3-6)Spring Security 的鉴权 - 自定义权限前缀
- HTML的水平居中和垂直居中解决方案
水平居中:给div设置一个宽度,然后添加margin:0 auto属性 div{ width:200px; margin:0 auto; } 让绝对定位的div居中 div { position: a ...
- ssh整合之三hibernate和spring整合
1.拷贝我们的spring事务控制所需的jar包 2.在spring容器中配置我们的hibernateTemplate以及事务管理器 <?xml version="1.0" ...
- python3.6执行pip3时 Unable to create process using '"'
问题需求 由于在windows操作系统中已经安装了python2.7,要在安装python3的时候 将python3.6安装在C:\Python36目录下 然后进入C:\Python36目录下执行pi ...
- 关于if后面直接加上参数名,不加条件的用法
<template> <section> <p v-if="aa">{{aa}}</p> <p v-if="bb&q ...
- 笔记本电脑连wifi然后通过有线网口做桥接
让你的笔记本电脑作为主机,台式机通过通过一根网线连接到你的笔记本,共享无线网络上网,可以进行如下操作: 1,先找跟网线将两台电脑连接. 2,打开win7自带的windows防火墙,此步在控制面板里可以 ...
- codewars.DNA题目几种解法分析(字符串替换)
题干: 意思就是字符串替换,"A"与"C"配对,"T"与"G"配对,DNA不为空. 解法一:我的解法,用for循环遍历字 ...
- ALS音乐推荐(上)
本篇文章的开头笔者提出一个疑问,何为数据科学,数据科学是做什么的?大家带着这个疑问去读接下来的这篇音乐推荐的公众号. 从经验上讲,推荐引擎属于大规模机器学习,在日常购物中大家或许深有体会,比如:你在淘 ...
- ASP.NET MVC5 实现基于Quartz.NET任务调度
工作之余.技术?.记是不可能记住的. 只有写点东西 才能维持得了生活这样子的.好早就像写一篇关于任务调度的文章.终究是太懒了 一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的 ...
- 【Android】Android Studio3.1 Mac版本设置项目桌面icon
近来项目处于测试阶段,工作少了许多,就装了个最新的Android Studio,想写一下安卓.新建好项目,想设置个桌面的icon.我先准备好自己的icon图片,然后复制粘贴到res/mipmap-hd ...