Java基础知识强化之网络编程笔记04:UDP之发送端的数据来自于键盘录入案例
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之发送端的数据来自于键盘录入案例的更多相关文章
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
使用Http的Post方式与网络交互通信.Post方式需要向网络传输一部分数据,同时具有输入流和输出流. 详见:Android(java)学习笔记210:采用post请求提交数据到服务器(qq登录案例 ...
- Java基础知识强化之网络编程笔记16:Android网络通信之 使用Http的Get方式读取网络数据(基于HTTP通信技术)
使用Http的Get方式读取网络数据,使用Get方式与网络通信是最常见的Http通信,建立链接之后就可以通过输入流读取网络数据. 详见:Android(java)学习笔记209:采用get请求提交数据 ...
- Java基础知识强化之网络编程笔记11:TCP之TCP协议上传文本文件
1. TCP协议上传文本文件(客户端上传数据到服务器端) (1)客户端(上传数据到服务端) package cn.itcast_11; import java.io.BufferedReader; i ...
- Java基础知识强化之网络编程笔记09:TCP之客户端键盘录入服务器写到文本文件中
1. TCP之客户端键盘录入服务器写到文本文件中 (1)客户端: package cn.itcast_09; import java.io.BufferedReader; import java.io ...
- Java基础知识强化之网络编程笔记08:TCP之客户端键盘录入服务器控制台输出
1. 客户端: package cn.itcast_08; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...
- Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据
1. TCP协议发送数据 和 接收数据 TCP协议接收数据:• 创建接收端的Socket对象• 监听客户端连接.返回一个对应的Socket对象• 获取输入流,读取数据显示在控制台• 释放资源 TCP协 ...
- Java基础知识强化之网络编程笔记05:UDP之多线程实现聊天室案例
1. 通过多线程改进刚才的聊天程序,这样我就可以实现在一个窗口发送和接收数据了 2. 代码示例: (1)SendThread.java,如下: package com.himi.udpDemo2; ...
- Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
1. UDP协议发送数据 和 接收数据 UDP协议发送数据: • 创建发送端的Socket对象 • 创建数据,并把数据打包 • 调用Socket对象的发送方法,发送数据包 • 释放资源 UDP协议接 ...
- Java基础知识强化之网络编程笔记02:Socket通信原理图解
1. Socket (1)Socket套接字 网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字 (2)Socket原理机制: • 通信两端都有Socket. • 网 ...
随机推荐
- hdu 3018
欧拉回路的题: 主要利用的是并查集,为了节省时间,压缩了它的路径: 代码: #include<cstdio> #include<cstring> #define maxn 10 ...
- POP3、SMTP、IMAP和Exchange的区别在哪里?
著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:永遇乐链接:http://www.zhihu.com/question/24605584/answer/29039357来源: ...
- Android JNI使用方法
经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下.android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和 ...
- pdfminer的TextConverter得到文件字符无空格解决方法
from pdfminer.pdfinterp import PDFResourceManager, process_pdf from pdfminer.converter import TextCo ...
- Yii处理流程
Yii的应用程序处理流程 用户访问URL http://www.example.com/blog/index.php?r=site/contact 1.入口脚本被网站服务器执行以处理此请求. 2.一个 ...
- wikioi 1514 and ZJOI2006 书架
1514 书架 0人推荐 收藏 发题解 提交代码 报错 题目描述 输入描述 输出描述 样例输入 样例输出 提示 题目描述 Description 小 T有一个很大的书柜.这个书柜的构造有些独特,即书柜 ...
- AutoItLibrary
问题: [ ERROR ] Error in file 'E:\test\test_AutoItLibrary.txt': Initializing test library 'AutoItLibra ...
- vimrc语法
前言 工欲善其事,必先利其器.一个programmer必然要先有一个好的editor.vim就是一个十分强大的编辑器.它的强大之处,在于其个性化和可定制.学习vim,就像学习Linux,学习perl, ...
- GNU风格 汇编语法总结(转)
转载自:http://blog.sina.com.cn/s/blog_78d30f6b0101713r.html 汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设置页表.操作 ARM的协处理器 ...
- 使用.htaccess实现apache URL重定向
一.什么是URL重定向? URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术. 二.URL重定向怎么配置? 1)首先需 ...