1. 数据来自于键盘录入

键盘录入数据要自己控制录入结束。

2. 代码实现:

(1)发送端:

 package com.himi.updDemo1;

 import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner; /**
*
* UDP协议发送数据:
* 1. 创建发送端的Socket对象
* 2. 创建数据,并把数据打包
* 3. 调用Socket对象的发送方法,发送数据包
* 4. 释放资源
*
*/
public class UdpSendDemo {
public static void main(String[] args) throws IOException {
//创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
//DatagramSocket:DatagramSocket()
DatagramSocket ds = new DatagramSocket(); //创建数据,并把数据打包
//DatagramPacket:此类表示数据报包
/**DatagramPacket(byte[] buf, int length, InetAddress address, int port)
** 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
*/ while(true) {
Scanner sc = new Scanner(System.in);
String data = sc.nextLine();
if(data.equals("886")){
break;
} byte[] bytes = data.getBytes();
//IP地址对象
InetAddress address = InetAddress.getByName("49.123.72.145");
//端口号
int port = 10086;
//数据打包
DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port); //调用Socket对象的发送方法,发送数据包
//public void send(DatagramPacket p)
ds.send(dp); }
//释放资源
ds.close(); } }

(2)接收端:

 package com.himi.updDemo1;

 import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress; /**
*
* UDP协议接收数据:
* 1. 创建接收端的Socket对象
* 2. 创建数据包,接收数据(接收容器)
* 3. 调用Socket对象的接收方法,接收数据包
* 4. 解析数据包,并显示在控制台
* 5. 释放资源
*
*/ public class UdpReceiveDemo { public static void main(String[] args) throws IOException {
// 创建接收端的Socket对象
//DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocket ds = new DatagramSocket(10086); while (true) {
// 创建数据包,接收数据(接收容器)
// DatagramPacket(byte[] buf, int length)
byte[] bytes = new byte[1024];
int length = bytes.length; DatagramPacket dp = new DatagramPacket(bytes, length); // 调用Socket对象的接收方法,接收数据包
// public void receive(DatagramPacket p)
ds.receive(dp);// 阻塞式方法 // 解析数据包,并显示在控制台
// 获取对方的IP
// public InetAddress getAddress()
InetAddress address = dp.getAddress();
String IP = address.getHostAddress(); // public byte[] getData():获取数据的缓冲区
// public int getLength():获取数据的实际长度
byte[] bys = dp.getData();
int len = dp.getLength();
String s = new String(bys, 0, len); System.out.println("发送端" + IP + "的数据:" + s);
} //释放资源
//ds.close(); } }

运行效果如下:

Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例的更多相关文章

  1. Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)

    使用Http的Post方式与网络交互通信.Post方式需要向网络传输一部分数据,同时具有输入流和输出流. 详见:Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例 ...

  2. Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)

    使用Http的Get方式读取网络数据,使用Get方式与网络通信是最常见的Http通信,建立链接之后就可以通过输入流读取网络数据. 详见:Android(java)学习笔记209:采用get请求提交数据 ...

  3. Java基础知识强化之网络编程笔记11:TCP之TCP协议上传文本文件

    1. TCP协议上传文本文件(客户端上传数据到服务器端) (1)客户端(上传数据到服务端) package cn.itcast_11; import java.io.BufferedReader; i ...

  4. Java基础知识强化之网络编程笔记09:TCP之客户端键盘录入服务器写到文本文件中

    1. TCP之客户端键盘录入服务器写到文本文件中 (1)客户端: package cn.itcast_09; import java.io.BufferedReader; import java.io ...

  5. Java基础知识强化之网络编程笔记08:TCP之客户端键盘录入服务器控制台输出

    1. 客户端: package cn.itcast_08; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  6. Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据

    1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...

  7. Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例

    1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2.  代码示例: (1)SendThread.java,如下: package com.himi.udpDemo2; ...

  8. Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

    1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源  UDP协议接 ...

  9. Java基础知识强化之网络编程笔记02:Socket通信原理图解

    1. Socket (1)Socket套接字  网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字 (2)Socket原理机制:  • 通信两端都有Socket.  • 网 ...

随机推荐

  1. Codeforces Round #197 (Div. 2) : B

    也是水题一个,不过稍微要细心点.... 贴代码: #include<iostream> using namespace std; long long n,m; ; int main() { ...

  2. .h头文件、 .lib库文件、 .dll动态链接库文件之间的关系

    转自.h头文件. .lib库文件. .dll动态链接库文件之间的关系 h头文件作用:声明函数接口 dll动态链接库作用:含有函数的可执行代码 lib库有两种: (1)静态链接库(Static Liba ...

  3. Hard Life

    poj3155:http://poj.org/problem?id=3155 题意:最大密度子图的模板题. 题解:直接看代码. /* 题意简述一个公司有n个人,给出了一些有冲突的人的对数(u,v),所 ...

  4. Android的那些轮子

    整个AOSP代码,包天包地,从kernel,libc,gui,net……简直包括了绝大多普通程序员职业生涯涉及的整个领域.其实,开源界早已经遇到并且解决了Android的很多问题,不过google讨厌 ...

  5. Cursor的moveToFirst和moveToNext

    参考: http://blog.csdn.net/kerlw/article/details/6126448 总结: 查询得到的cursor是指向第一条记录之前的,因此查询得到cursor后第一次调用 ...

  6. Apache Struts 跨站脚本漏洞

    漏洞名称: Apache Struts 跨站脚本漏洞 CNNVD编号: CNNVD-201311-010 发布时间: 2013-11-04 更新时间: 2013-11-04 危害等级:    漏洞类型 ...

  7. 返回当前页面title、url等操作

    import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /* * 返回当前页面 ur ...

  8. HTML5 Canvas核心技术—图形、动画与游戏开发.pdf8

    第6章 精灵 精灵(sprite),它是一种可以集成入动画之中的图像对象,赋予它们各种行为,精灵并非Canvas API的一部分,,但都是从它衍生而来 本章将会实现三种设计模式:策略模式(精灵与绘制器 ...

  9. C语言调用汇编实现字符串对换

    1. 前面配置arm交叉编译环境. 2. 配置好qemu-arm C语言代码string-switch.c: #include <stdio.h> #include <stdlib. ...

  10. C标准库简单解读

    1,程序运行时动态链接共享库; libc(character),libm(math),使用标准库的函数; eg:stdlib.h exit(); size_t数据类型,NULL空指针在头文件stdde ...