1. 数据来自于键盘录入

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

2. 代码实现:

(1)发送端:

  1. package com.himi.updDemo1;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.util.Scanner;
  7. /**
  8. *
  9. * UDP协议发送数据:
  10. * 1. 创建发送端的Socket对象
  11. * 2. 创建数据,并把数据打包
  12. * 3. 调用Socket对象的发送方法,发送数据包
  13. * 4. 释放资源
  14. *
  15. */
  16. public class UdpSendDemo {
  17. public static void main(String[] args) throws IOException {
  18. //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket.
  19. //DatagramSocket:DatagramSocket()
  20. DatagramSocket ds = new DatagramSocket();
  21. //创建数据,并把数据打包
  22. //DatagramPacket:此类表示数据报包
  23. /**DatagramPacket(byte[] buf, int length, InetAddress address, int port)
  24. ** 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
  25. */
  26. while(true) {
  27. Scanner sc = new Scanner(System.in);
  28. String data = sc.nextLine();
  29. if(data.equals("886")){
  30. break;
  31. }
  32. byte[] bytes = data.getBytes();
  33. //IP地址对象
  34. InetAddress address = InetAddress.getByName("49.123.72.145");
  35. //端口号
  36. int port = 10086;
  37. //数据打包
  38. DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port);
  39. //调用Socket对象的发送方法,发送数据包
  40. //public void send(DatagramPacket p)
  41. ds.send(dp);
  42. }
  43. //释放资源
  44. ds.close();
  45. }
  46. }

(2)接收端:

  1. package com.himi.updDemo1;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. /**
  7. *
  8. * UDP协议接收数据:
  9. * 1. 创建接收端的Socket对象
  10. * 2. 创建数据包,接收数据(接收容器)
  11. * 3. 调用Socket对象的接收方法,接收数据包
  12. * 4. 解析数据包,并显示在控制台
  13. * 5. 释放资源
  14. *
  15. */
  16. public class UdpReceiveDemo {
  17. public static void main(String[] args) throws IOException {
  18. // 创建接收端的Socket对象
  19. //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口
  20. DatagramSocket ds = new DatagramSocket(10086);
  21. while (true) {
  22. // 创建数据包,接收数据(接收容器)
  23. // DatagramPacket(byte[] buf, int length)
  24. byte[] bytes = new byte[1024];
  25. int length = bytes.length;
  26. DatagramPacket dp = new DatagramPacket(bytes, length);
  27. // 调用Socket对象的接收方法,接收数据包
  28. // public void receive(DatagramPacket p)
  29. ds.receive(dp);// 阻塞式方法
  30. // 解析数据包,并显示在控制台
  31. // 获取对方的IP
  32. // public InetAddress getAddress()
  33. InetAddress address = dp.getAddress();
  34. String IP = address.getHostAddress();
  35. // public byte[] getData():获取数据的缓冲区
  36. // public int getLength():获取数据的实际长度
  37. byte[] bys = dp.getData();
  38. int len = dp.getLength();
  39. String s = new String(bys, 0, len);
  40. System.out.println("发送端" + IP + "的数据:" + s);
  41. }
  42. //释放资源
  43. //ds.close();
  44. }
  45. }

运行效果如下:

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. hdu 3018

    欧拉回路的题: 主要利用的是并查集,为了节省时间,压缩了它的路径: 代码: #include<cstdio> #include<cstring> #define maxn 10 ...

  2. POP3、SMTP、IMAP和Exchange的区别在哪里?

    著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:永遇乐链接:http://www.zhihu.com/question/24605584/answer/29039357来源: ...

  3. Android JNI使用方法

    经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下.android JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和 ...

  4. pdfminer的TextConverter得到文件字符无空格解决方法

    from pdfminer.pdfinterp import PDFResourceManager, process_pdf from pdfminer.converter import TextCo ...

  5. Yii处理流程

    Yii的应用程序处理流程 用户访问URL http://www.example.com/blog/index.php?r=site/contact 1.入口脚本被网站服务器执行以处理此请求. 2.一个 ...

  6. wikioi 1514 and ZJOI2006 书架

    1514 书架 0人推荐 收藏 发题解 提交代码 报错 题目描述 输入描述 输出描述 样例输入 样例输出 提示 题目描述 Description 小 T有一个很大的书柜.这个书柜的构造有些独特,即书柜 ...

  7. AutoItLibrary

    问题: [ ERROR ] Error in file 'E:\test\test_AutoItLibrary.txt': Initializing test library 'AutoItLibra ...

  8. vimrc语法

    前言 工欲善其事,必先利其器.一个programmer必然要先有一个好的editor.vim就是一个十分强大的编辑器.它的强大之处,在于其个性化和可定制.学习vim,就像学习Linux,学习perl, ...

  9. GNU风格 汇编语法总结(转)

    转载自:http://blog.sina.com.cn/s/blog_78d30f6b0101713r.html 汇编源程序一般用于系统最基本的初始化:初始化堆栈指针.设置页表.操作 ARM的协处理器 ...

  10. 使用.htaccess实现apache URL重定向

    一.什么是URL重定向? URL重定向(URL redirection,或称网址重定向或网域名称转址),是指当使用者浏览某个网址时,将他导向到另一个网址的技术. 二.URL重定向怎么配置? 1)首先需 ...