网络编程Socket之UDP
服务器端实现步骤:
1. 创建 DatagramSocket,指定端口号
2. 创建 DatagramPacket
3. 接收客户端发送的数据信息
4. 读取数据
- package cn.jmu.edu;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /**
- * 服务器端。实现基于UDP的用户登陆
- *
- * @author Sky
- * @date 2016年10月28日
- */
- 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.接收客户端发送的数据(保存在packet中)
- System.out.println("***服务器端已经启动,等待客户端发送数据***");
- socket.receive(packet);
- //4.读取数据
- String info = new String(data, 0, packet.getLength());
- System.out.println("我是服务器,客户端说:" + info);
- /*
- * 向客户端响应数据
- */
- //1.定义客户端的地址、端口号、数据
- InetAddress address = packet.getAddress();
- int port = packet.getPort();
- byte[] data2 = "欢迎您!".getBytes();
- //2.创建数据报,包含响应的数据信息
- DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
- //3.响应客户端
- socket.send(packet2);
- //4.关闭资源
- socket.close();
- }
- }
客户端实现步骤:
1. 定义发送的信息
2. 创建 DatagramPacket,包含将要发送的信息
3. 创建 DatagramSocket(用来发送数据)
4. 发送信息
- package cn.jmu.edu;
- import java.io.IOException;
- import java.net.DatagramPacket;
- import java.net.DatagramSocket;
- import java.net.InetAddress;
- /**
- * UDP客户端类
- *
- * @author Sky
- * @date 2016年10月28日
- */
- public class UDPClient {
- public static void main(String[] args) throws IOException {
- /*
- * 向服务器端发送数据
- */
- //1.定义服务器的地址、端口号、数据
- InetAddress address = InetAddress.getByName("localhost");
- int port = 8800;
- byte[] data = "用户名:Sky;密码:winner".getBytes();
- //2.创建数据报,包含发送的数据信息
- DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
- //3.创建 DatagramSocket 对象(实现数据的发送)
- DatagramSocket socket = new DatagramSocket();
- //4.向服务器端发送数据报
- socket.send(packet);
- /*
- * 接收服务器端响应的数据
- */
- //1.创建数据报,用于接收 服务器端响应的数据
- byte[] data2 = new byte[1024];
- DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
- //2.接收服务器响应的数据
- socket.receive(packet2);
- //3.读取数据
- String reply = new String(data2, 0, packet2.getLength());
- System.out.println("我是客户端,服务器端响应:" + reply);
- //4.关闭资源
- socket.close();
- }
- }
运行结果:
网络编程Socket之UDP的更多相关文章
- 网络编程socket、udp
PS:主机字节顺序,个位在低字节上 计算机本身不能通讯,使通过在同一主机或者不同主机内的软件进行数据传输. 套接字socket:套接字socket可以参照文件指针来理解,文件指针是表示对文件打开进行某 ...
- python_网络编程socket(UDP)
服务端: import socket sk = socket.socket(type=socket.SOCK_DGRAM) #创建基于UDP协议的socket对象 sk.bind(('127.0.0. ...
- Socket网络编程TCP、UDP演示样例
Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...
- 网络编程socket基本API详解(转)
网络编程socket基本API详解 socket socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信. socket ...
- 网络编程第三讲UDP编写
网络编程第三讲UDP编写 一丶UDP简介 UDP是面向无连接的.就是说数据传输会丢掉.网络延时比较大的情况下.会早上丢包.例如视频通话.就是UDP UDP不需要建立建立. 下面有UDP编写流程图 下图 ...
- Day10 Python网络编程 Socket编程
一.客户端/服务器架构 1.C/S架构,包括: 1.硬件C/S架构(打印机) 2.软件C/S架构(web服务)[QQ,SSH,MySQL,FTP] 2.C/S架构与socket的关系: 我们学习soc ...
- 铁乐学Python_Day33_网络编程Socket模块1
铁乐学Python_Day33_网络编程Socket模块1 部份内容摘自授课老师的博客http://www.cnblogs.com/Eva-J/ 理解socket Socket是应用层与TCP/IP协 ...
- Python网络编程socket
网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
随机推荐
- c#获取带有汉字的字符串长度
不知道大家注意没,用c#下自带的str.Length方法获得字符串str长度的时候,返回的总是字符的个数,但是如果字符串中包含汉字的话,一个汉字是占两个字符长度的,获取的长度值就有了问题. 解决方案: ...
- web.py simpletodo 例子
一个很好的例子: 许多新手,特别是从 ASP/PHP/JSP 转过来的同学,经常问下面这几个问题: 所有东西都放在一个 code.py 中呀?我有好多东西该如何部署我的代码? 是不是 /index 对 ...
- 快速创建php server
mkdir testmv test.html testphp -S localhost:8082http://localhost:8082/test.html
- COJ 0601&0602 动态规划(二)及加强
未加强传送门0601:http://oj.cnuschool.org.cn/oj/home/addSolution.htm?problemID=571 加强传送门0602:http://oj.cnus ...
- phpMyAdmin import.php 安全漏洞
漏洞名称: phpMyAdmin import.php 安全漏洞 CNNVD编号: CNNVD-201307-068 发布时间: 2013-07-05 更新时间: 2013-07-05 危害等级: ...
- Android安全bug ANDROID-8219321
ANDROID-8219321漏洞主要源自Android ZipFile函数漏洞:没有进行校验重名entry逻辑漏洞,逻辑漏洞细节详见Google+文章和Bluebox Security提报Andro ...
- HDOJ(HDU) 2148 Score(比较、)
Problem Description 转眼又到了一年的年末,Lele又一次迎来了期末考试.虽然说每年都要考试,不过今年的这场考试对Lele来说却意义重大. 因为经济原因,如果今年没有排在班级前几名, ...
- 高效算法——G - 贪心
G - 贪心 Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Submit Status Desc ...
- Chrome DevTools学习笔记
---恢复内容开始--- chrome和firefox的开发者工具大同小异,都非常强大.今天在博客园上看了这篇文章(http://www.cnblogs.com/Wayou/p/chrome-cons ...
- 每一个web开发者都应该了解的HTTP/2
我认为每一个 web 开发者都应该对这个支撑了整个 Web 世界的 HTTP 协议有所了解,这样才能帮助你更好的完成开发任务.在这篇文章中,我将讨论什么是 HTTP,它是怎么产生的,它的地位,以及我们 ...