`
whp0731
  • 浏览: 174876 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Socket编程---使用无连接的数据报(UDP) 进行通信

阅读更多

 

 

使用无连接的数据报(UDP) 进行通信

什么是Datagram?
数据报是网上传输的独立数据包 ,数据报是否能正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
 
java中使用Datagram与DatagramPacket类
DatagramSocket类利用UDP协议来实现客户与服务器的Socket.
send():发送数据报
receive(): 接收数据报

 

 以下为流程

 



 

 

 

以下为简单示例,不含一些异常处理、判空处理。

 

一、服务器端

package com.network;

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

public class UDPServer
{

	public static void main(String[] args)throws Exception
	{
		DatagramSocket datagramSocket = new DatagramSocket(5678);
		
		byte[] buffer = new byte[100];
		
		DatagramPacket packet = new DatagramPacket(buffer,100);
		
		datagramSocket.receive(packet);
		
		byte[] data = packet.getData();
		
		int i = packet.getLength();
		
		String content = new String(data,0,i);
		
		System.out.println("content from client : " + content);
		
		int length = content.length();
		
		String strLength = String.valueOf(length);
		
		byte[] b = strLength.getBytes();
		
		InetAddress address = packet.getAddress();
		
		int port = packet.getPort();
		
		DatagramPacket packet2 = new DatagramPacket(b,b.length,address,port);
		
		System.out.println("length: " + new String(b,0,b.length));
		
		datagramSocket.send(packet2);
		
		datagramSocket.close();
		
		
	}

}

 

 

 

二、客户端

 

package com.network;

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

public class UDPClient
{
	public static void main(String[] args) throws Exception
	{
		DatagramSocket datagramSocket = new DatagramSocket();
		
		String content = "hello world!";
		
		byte[] buffer = content.getBytes();
		
		InetAddress address = InetAddress.getByName("localhost");
		
		DatagramPacket packet = new DatagramPacket(buffer,buffer.length,address,5678);
		
		datagramSocket.send(packet);
		
		byte[] b = new byte[100];
		
		DatagramPacket packet2 = new DatagramPacket(b,100);
		
		datagramSocket.receive(packet2);
		
		byte[] b2 = packet2.getData();
		
		int l = packet2.getLength();
		
		String str = new String(b2,0,l);
		
		System.out.println("length of string : " + str);
		
		datagramSocket.close();
	}
}

 

  • 大小: 78.9 KB
分享到:
评论

相关推荐

    实战linux socket编程--示例源码.rar_C++ socket_linux 源码_socket 编程 linux_s

    - “实战linux socket编程--示例源码”是实际的源代码文件,包含了各种Socket编程的实例,如简单TCP服务器、客户端、UDP通信等。 - 分析这些源码,可以帮助读者理解Socket编程的具体实现,包括如何建立连接、发送...

    Linux网络编程-网络基础-socket编程-高并发服务器.pdf

    【Linux网络编程-网络基础-socket编程-高并发服务器】 在深入探讨Linux下的网络编程之前,我们首先要理解网络通信的基础概念——协议。协议是数据传输和解释的规则,它确保了不同设备之间的通信能顺利进行。例如,...

    Socket编程-④udp代码实例+解析

    本篇文章将深入探讨UDP(User Datagram Protocol)协议的Socket编程实例,并对代码进行详细解析。UDP是一种无连接的传输层协议,它不保证数据包的顺序、可靠性和错误校验,但具有低开销、快速传输的特点,常用于实时...

    C语言SOCKET编程--超级完整.doc

    - 虽然可以使用传统的read()和write()进行通信,但使用send()和recv()可以提供更精细的数据控制。 #### 四、Internet套接字类型 - **流式套接字**(Stream Socket): - 流式套接字基于TCP协议,提供面向连接的...

    黑马_Linux网络编程-网络基础-socket编程-高并发服务器

    ### 黑马_Linux网络编程-网络基础-socket编程-高并发服务器 #### 知识点概述 本篇文章旨在深入解读“黑马_Linux网络编程-网络基础-socket编程-高并发服务器”相关的核心概念和技术要点,包括网络基础知识、常用...

    Socket编程-tcp&udp-测试用例.docx

    UDP通信则更直接,因为UDP是无连接的,所以只需创建一个UDP套接字,然后进行数据的发送和接收。 总的来说,OpenWrt和Luci的自定义开发涉及到软路由特性的利用,组件的编译选择,以及通过TCP和UDP进行的网络通信。...

    基于udp的socket编程实例

    在IT领域,网络编程是不可或缺的一部分,而基于UDP(User Datagram Protocol)的Socket编程是其中一种常见的技术。UDP是一种无连接、不可靠的传输协议,适用于实时数据传输或对速度有较高要求的应用场景。本实例将...

    C#的Socket实现UDP协议通信

    ` 是Socket类的实例,用于进行UDP通信。 - `bool RunningFlag = false;` 控制通信循环的开关。 #### 获取本地IP的方法 `getIPAddress()` 方法通过调用 `Dns.GetHostByName()` 和 `Dns.GetHostName()` 来获取本地...

    Socket编程-聊天室.zip

    Socket编程在IT行业中是网络通信的核心技术之一,尤其在开发基于TCP/IP协议的客户端与服务器端交互的应用程序时,Socket是不可或缺的工具。本项目实战——"Socket编程-聊天室",旨在帮助开发者掌握如何利用Socket...

    SocketTest-master_sockettest_UDP_

    在这个项目中,主要关注的是使用UDP(用户数据报协议)进行通信的功能。UDP是一种无连接、不可靠的传输协议,与TCP(传输控制协议)相比,它更轻量级,适合于实时应用或对速度有较高要求的场景。 在开发过程中,...

    Socket编程之TCP-UDP

    在Socket编程中,使用UDP时,开发者同样需要指定IP地址和端口号,但无需建立连接,直接发送和接收数据报即可。 对于初学者,学习Socket编程首先需要理解网络的基本概念,包括IP地址、端口号和协议。然后,你需要...

    基于UDP的Socket编程

    在进行基于UDP的Socket编程时,主要涉及以下几个核心概念和步骤: 1. **创建Socket**: 使用`socket()`函数创建一个Socket对象,指定协议族(通常为AF_INET表示IPv4)和协议类型(SOCK_DGRAM表示UDP)。 2. **绑定...

    华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx

    "华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx" 这份实验报告主要涵盖了计算机网络实验的两个部分:Socket 编程和网络组建实验。下面是对这两部分的详细解释和知识点总结: Socket 编程 Socket ...

    udp使用socket聊天编程

    UDP是一种无连接的、不可靠的传输层协议,它提供了简单高效的数据报服务,适用于实时数据传输如音频、视频等对数据完整性要求不高的场景。Socket则是应用层与传输层之间的接口,它允许程序员通过编程进行网络通信。 ...

    VC6.0下的socket编程 实现了UDP数据传输

    Socket编程是网络编程的基础,而UDP是一种无连接、不可靠的传输协议,适用于对实时性要求较高的应用场景。 首先,我们需要了解Socket API的基本概念。Socket是操作系统提供的接口,它允许应用程序通过网络进行通信...

    实战Linux Socket 编程-示例源码

    TCP(Transmission Control Protocol)提供面向连接、可靠的字节流服务,而UDP(User Datagram Protocol)是无连接、不可靠的数据报服务。TCP提供顺序传输、流量控制、错误校验等功能,适合需要高可靠性传输的场景;...

    SuperSocket-master_Socket基于TCP、UDP

    - UDP是无连接的、不可靠的传输层协议,它不保证数据的顺序或完整性,也不进行拥塞控制。 - UDP速度较快,因为它没有TCP的连接建立、确认和维护过程。 - UDP常用于实时应用,如在线游戏、视频会议和DNS查询,因为...

    C#winform TCP通信 UDP通信 Socket通信 vs2017 .net4.0

    总结来说,"C# WinForm TCP通信 UDP通信 Socket通信 vs2017 .net4.0"项目是一个学习和实践C#网络编程的好材料。通过此项目,开发者可以深入理解TCP和UDP的区别,掌握如何在C#环境中使用Socket进行网络通信,并了解...

    socket网络(UDP协议编程)

    "socket网络(UDP协议编程)"这个标题明确指出了我们要讨论的核心内容——使用套接字(socket)进行网络编程,并且聚焦在用户数据报协议(UDP)上。UDP是一种无连接的、不可靠的传输层协议,与TCP(传输控制协议)...

Global site tag (gtag.js) - Google Analytics