Java网络编程UDP协议发送接收数据

本文实例为大家分享了Java网络编程UDP协议发送接收数据的具体代码,供大家参考,具体内容如下

UDP协议发送数据步骤

A:创建发送端socket对象;

B:创建数据,并把数据打包;

C:调用socket对象的发送方法发送数据包;

D:释放资源

package net;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class SendDemo {
 public static void main(String[] args) throws IOException {
  //A
  DatagramSocket ds = new DatagramSocket();

  //B
  byte[] by = "Hello,UDP".getBytes();
  int length = by.length;
  InetAddress addr = InetAddress.getByName("192.168.1.22");
  int port = 10010;
  DatagramPacket dp = new DatagramPacket(by, length, addr, port);

  //C
  ds.send(dp);

  //D
  ds.close();

 }
}

UDP协议接收数据步骤

A:创建接收端socket对象;

B:创建一个数据包(接收容器);

C:调用socket对象的接收方法接收数据;

D:解析数据,显示到控制台;

E:释放资源

package net;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ReceiveDemo {
 public static void main(String[] args) throws IOException {
  //A
  DatagramSocket ds = new DatagramSocket(10010);

  //B
  byte[] by = new byte[1024];
  int length = by.length;
  DatagramPacket dp = new DatagramPacket(by, length);

  //C
  ds.receive(dp);

  //D
  //获取对方ip
  InetAddress addr = dp.getAddress();
  String ip = addr.getHostAddress();
  byte[] by2 = dp.getData();
  int len = by2.length;
  String s = new String(by2, 0, len);
  System.out.println(ip+"发送的数据是:"+s);

  //E
  ds.close();
 }
}

先运行接收端代码,再运行发送端代码。

多次从键盘接收发送数据版本

package net;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class SendDemo {
 public static void main(String[] args) throws IOException {
  //A
  DatagramSocket ds = new DatagramSocket();
  //数据来自键盘录入
  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  String line = null;
  while((line = br.readLine()) != null){
   //当输入jieshu时,结束
   if("jieshu".equals(line)){
    break;
   }
   //B
   byte[] by = line.getBytes();
   int length = by.length;
   InetAddress addr = InetAddress.getByName("192.168.1.22");
   int port = 10010;
   DatagramPacket dp = new DatagramPacket(by, length, addr, port);

   //C
   ds.send(dp);
  }
  //D
  ds.close();

 }
}
package net;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ReceiveDemo {
 public static void main(String[] args) throws IOException {
  //A
  DatagramSocket ds = new DatagramSocket(10010);
  //多次接受版本
  while(true){
   //B
   byte[] by = new byte[1024];
   int length = by.length;
   DatagramPacket dp = new DatagramPacket(by, length);

   //C
   ds.receive(dp);

   //D
   //获取对方ip
   InetAddress addr = dp.getAddress();
   String ip = addr.getHostAddress();
   byte[] by2 = dp.getData();
   int len = by2.length;
   String s = new String(by2, 0, len);
   System.out.println(ip+"发送的数据是:"+s);
  }

  //E
  //ds.close();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2021-08-14

java利用udp实现发送数据

本文实例为大家分享了java利用udp实现发送数据的具体代码,供大家参考,具体内容如下 1.udp的特点 数据以包的形式发送数据 udp是面向无连接的 udp会丢失数据,是一种不安全的连接 udp的传输速度较快 2.发送端 package cn.uu710.SocketTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.

Java NIO实例UDP发送接收数据代码分享

Java的NIO包中,有一个专门用于发送UDP数据包的类:DatagramChannel,UDP是一种无连接的网络协议, 一般用于发送一些准确度要求不太高的数据等. 完整的服务端程序如下: public class StatisticsServer { //每次发送接收的数据包大小 private final int MAX_BUFF_SIZE = 1024 * 10; //服务端监听端口,客户端也通过该端口发送数据 private int port; private DatagramChann

java编程实现基于UDP协议传输数据的方法

本文实例讲述了java编程实现基于UDP协议传输数据的方法.分享给大家供大家参考,具体如下: UDP协议(User Datagram Protocol,用户数据报协议)不同于TCP协议,它是不可能靠的,但是它比TCP协议具有更快的传输速度,UDP发送的数据单元称为数据报,当网络传输UDP传输UDP数据报是无法保证数据能够到达目的地,也无法保证按发送的顺序到达目的地,也就是说先发送了"hello",再发送了"world",但接收方可能会先收到"world&q

Java编程实现基于TCP协议的Socket聊天室示例

本文实例讲述了Java编程实现基于TCP协议的Socket聊天室.分享给大家供大家参考,具体如下: 这里使用Socket套接字进行编程,完成的是基于TCP可靠服务实现服务器与客户端的双通信. Server服务器端: package com.han; import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.Win

Java基于UDP协议实现简单的聊天室程序

最近比较闲,一直在抽空回顾一些Java方面的技术应用. 今天没什么事做,基于UDP协议,写了一个非常简单的聊天室程序. 现在的工作,很少用到socket,也算是对Java网络编程方面的一个简单回忆. 先看一下效果: 实现的效果可以说是非常非常简单,但还是可以简单的看到一个实现原理.  "聊天室001"的用户,小红和小绿相互聊了两句,"聊天室002"的小黑无人理会,在一旁寂寞着. 看一下代码实现: 1.首先是消息服务器的实现,功能很简单: •将客户端的信息(进入了哪一

Python+Socket实现基于UDP协议的局域网广播功能示例

本文实例讲述了Python+Socket实现基于UDP协议的局域网广播功能.分享给大家供大家参考,具体如下: 服务器端: # udp_gb_server.py '''服务端(UDP协议局域网广播)''' import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) PORT = 1060 network = '<b

java网络之基于UDP的聊天程序示例解析

基于UDP的Socket通信 UDP协议不是一种基于稳定连接的协议,是一种面向数据报包的通信协议,不需要通信双方建立稳定的连接,也没有所谓服务端和客户的概念,数据报包在传输的时候不保证一定及时到达,也不能保证数据报包的到达顺序,但是UDP协议传输效率要远高于TCP/IP. 以下是一个基于UDP的简单的消息发送接收程序. 消息发送方 1.创建一个数据报的网络通道 DatagramSocket ds = new DatagramSocket(); 2.准备需要传输的数据 String msg = "

Java编程实现基于用户的协同过滤推荐算法代码示例

协同过滤简单来说是利用某兴趣相投.拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要. 协同过滤又可分为评比(rating)或者群体过滤(social filtering)协同过滤以其出色的速度和健壮性,在全球互联网领域炙手可热 UserCF的核心思想即为根据用户数据模拟向量相似度,我们根据这个相似度,来找出指定用户的相似用户,然后将相似用

Java编程实现基于图的深度优先搜索和广度优先搜索完整代码

为了解15puzzle问题,了解了一下深度优先搜索和广度优先搜索.先来讨论一下深度优先搜索(DFS),深度优先的目的就是优先搜索距离起始顶点最远的那些路径,而广度优先搜索则是先搜索距离起始顶点最近的那些路径.我想着深度优先搜索和回溯有什么区别呢?百度一下,说回溯是深搜的一种,区别在于回溯不保留搜索树.那么广度优先搜索(BFS)呢?它有哪些应用呢?答:最短路径,分酒问题,八数码问题等.言归正传,这里笔者用java简单实现了一下广搜和深搜.其中深搜是用图+栈实现的,广搜使用图+队列实现的,代码如下:

C#基于UDP进行异步通信的方法

本文实例讲述了C#基于UDP进行异步通信的方法.分享给大家供大家参考.具体如下: 服务器端: using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.Threading; namespace AsyncServer { public class UdpState { public UdpClient udp

Java编程实现提取文章中关键字的方法

本文实例讲述了Java编程实现提取文章中关键字的方法.分享给大家供大家参考,具体如下: 实现代码: /** * 相关的jar包 * lucene-core-3.6.2.jar,lucene-memory-3.6.2.jar, * lucene-highlighter-3.6.2.jar,lucene-analyzers-3.6.2.jar * IKAnalyzer2012.jar * * 截取一片文章中频繁出现的关键字,并给予分组排序(倒叙),以数组格式返回n个关键字 * * 并该类内部含有一个

Java编程求二叉树的镜像两种方法介绍

给出一棵二叉树,求它的镜像,如下图:右边是二叉树是左边二叉树的镜像. 仔细分析这两棵树的特点,看看能不能总结出求镜像的步骤.这两棵树的根节点相同,但他们的左右两个子节点交换了位置.因此我们不妨先在树中交换根节点的两个子节点,就得到了下面一幅图中的第二颗树 解法1(递归) 思路1:如果当前节点为空,返回,否则交换该节点的左右节点,递归的对其左右节点进行交换处理. /*class TreeNode{ int val; TreeNode left=null; TreeNode right=null;