`

java基于UDP的socket通信

阅读更多
一.socket通信有2种,一种是基于tcp的可靠连接,一种是基于UDP的无连接包投递服务连接,UDP通信中常用到的类有:DatagramSocket类和DatagramPacket类。

二.DatagramSocket类表示用来发送和接收数据报包的套接字。

数据报套接字是包投递服务的发送或接收点。每个在数据报套接字上发送或接收的包都是单独编址和路由的。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

在 DatagramSocket 上总是启用 UDP 广播发送。为了接收广播包,应该将 DatagramSocket 绑定到通配符地址。在某些实现中,将 DatagramSocket 绑定到一个更加具体的地址时广播包也可以被接收。

主要构造方法:

DatagramSocket()

构造数据报套接字并将其绑定到本地主机上任何可用的端口。

DatagramSocket(int port)

创建数据报套接字并将其绑定到本地主机上的指定端口。
主要方法有:
receive(DatagramPacket p)         从此套接字接收数据报包。
send(DatagramPacket p)            从此套接字发送数据报包。
close()                 关闭此数据报套接字。

三.DatagramPacket类提供数据包的服务。

数据报包用来实现无连接包投递服务。每条报文仅根据该包中包含的信息从一台机器路由到另一台机器。从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。不对包投递做出保证。

主要构造方法:

DatagramPacket(byte[] buf, int length)

构造DatagramPacket,用来接收长度为 length的数据包。

DatagramPacket(byte[] buf, int length, InetAddress address, int port)

构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号。
主要方法有:
getPort()返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。
getLength()                 返回将要发送或接收到的数据的长度。
getAddress() 返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。

四.实验代码:

MyReceive.java

package udp;

import java.net.*;

public class MyReceive {


public static void main(String[] args) {

              MyReceive.receive();

}

public static void receive()

{
         try{

          DatagramSocket ds=new DatagramSocket(9528);//在端口9528接收数据报包的套接字

          byte[] buf=new byte[100];

          DatagramPacket dp=new DatagramPacket(buf,100);//创建长度为100的数据接收包

          ds.receive(dp);//套接字接受数据包

          System.out.println(new String(buf,0,dp.getLength()));

          //这里接收完成,我们给发送者一条消息,告诉他发送成功了

          String str="message send success!";

          DatagramPacket senddp=new DatagramPacket(str.getBytes(),str.length(),

                    dp.getAddress(),dp.getPort());

          //创建发送包

          ds.send(senddp);//执行发送

          ds.close();//关闭UDP套接字

         }catch(Exception e)

         {e.printStackTrace();}

}

}


MySend.java


package udp;

import java.io.BufferedInputStream;

import java.io.DataInputStream;

import java.net.*;

public class MySend {

public static void main(String[] args) {

         String str = "";

         try {

          while (str.length() < 1) {

           System.out.println("请输入您的名字");

           str = new DataInputStream(new BufferedInputStream(System.in))

             .readLine();

          }

         } catch (Exception e) {

          e.printStackTrace();

         }

         MySend.send(str);

}

public static void send(String str)

{

         try{

          DatagramSocket ds=new DatagramSocket();

          DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(),

                   InetAddress.getByName("127.0.0.1"),

                   9528);

          ds.send(dp);

          byte[] buf=new byte[100];

          DatagramPacket recedp=new DatagramPacket(buf,100);

          ds.receive(recedp);

          System.out.println(new String(buf,0,recedp.getLength()));

          ds.close();

         }catch(Exception e)

         {e.printStackTrace();}

}

}





分享到:
评论
1 楼 huiqiCHEN 2012-03-12  
明了,谢谢分享。

相关推荐

    JAVA TCP和UDP Socket通信框架

    Java中的TCP和UDP Socket通信是网络编程的基础,用于在不同设备之间建立可靠的数据传输通道。TCP(Transmission Control Protocol)提供的是面向连接、有序且无损的服务,而UDP(User Datagram Protocol)则是无连接...

    Java基于socket实现的客户端和服务端通信功能完整实例

    Java基于socket实现的客户端和服务端通信功能完整实例 在Java中,Socket是实现网络通信的基础,通过Socket可以实现客户端和服务器端之间的通信。本文将详细介绍Java基于Socket实现的客户端和服务端通信功能,包括...

    JAVA基于UDP通信的一对一聊天

    在这个“JAVA基于UDP通信的一对一聊天”示例中,我们将探讨如何利用Java的Socket编程来实现UDP通信的基本原理和流程。 首先,我们需要了解UDP通信的基础。UDP协议不提供连接建立、数据顺序保证或错误校验,因此它的...

    SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现

    SpringMVC的Socket实现+Java Tomcat websocket实现+Java Socket通信实现 +Java UDP通信实现。websocket_study.rar 为springMVC版本的socket实现 websocket02.rar 里面包含tomcat的websocket实现+java socket双向通信...

    基于Java实现的socket即时通信系统

    在Java中,`java.net.Socket`和`java.net.ServerSocket`类是实现Socket通信的核心类。ServerSocket用于服务器端,监听特定端口,等待客户端的连接请求;Socket则代表客户端,它与服务器建立连接后,可以进行数据的...

    java基于UDP协议的聊天程序(完整版)

    1. **Java Socket编程**:Java提供了`java.net.DatagramSocket`类来处理UDP通信。开发者需要创建一个`DatagramSocket`对象来监听特定端口并发送数据报文。 2. **数据报文的封装与解封装**:UDP通信的数据单元是`...

    基于JAVA的简单Socket通信.pdf

    "基于JAVA的简单Socket通信" 本文主要讨论了基于JAVA的简单Socket通信,介绍了Socket通信的原理和过程,并用JAVA编程实现了Socket通信,实现了服务器A和客户机B之间的一对一的通信。 什么是Socket Socket是指什么...

    Java Socket编程实现UDP网络测试

    Java Socket编程实现UDP网络测试是计算机网络领域中的一个重要实践,主要涉及到Java编程语言以及网络通信协议UDP(User Datagram Protocol)。Socket在计算机网络中扮演着桥梁的角色,它允许应用程序通过网络发送和...

    java基于UDP协议的聊天程序(完整版).rar.rar

    在Java中,我们可以通过Java的Socket编程API来实现UDP通信,主要涉及两个类:`DatagramSocket`和`DatagramPacket`。`DatagramSocket`用于创建一个UDP套接字,它允许发送和接收数据报。`DatagramPacket`则用于封装要...

    java_UDPSocket_codes.rar_ServerThread_java udp程序

    总之,这个压缩包提供了一个学习Java UDP多线程通信的好起点,包括服务器端的`ServerThread`实现、简单的客户端示例,以及多线程Socket编程的参考资料。通过对这些代码和资料的学习,开发者可以掌握创建高效、可扩展...

    基于UDP和TCP协议的Socket(网络编程/套接字)案例

    在“pb_Socket”这个压缩包文件中,可能包含了使用Java实现的TCP和UDP Socket通信的示例代码。通常,这些示例会包括客户端(Client)和服务器(Server)两部分。客户端通过Socket连接到服务器,并通过输入/输出流与...

    java基于Socket的网络通信

    Java基于Socket的网络通信是Java编程领域中的一个重要知识点,它涉及到如何通过网络在不同设备间交换数据。Socket在计算机网络中扮演着客户端和服务器之间的桥梁角色,使得它们能够相互通信。在这个Java项目中,我们...

    java-udp.rar_UDP Java_UDP java socket_java socket _java socket

    Java UDP(用户数据报协议)是网络编程中的一个重要部分,特别是在构建实时通信或者对低延迟有较高需求的应用中。在Java中,UDP通信主要通过`java.net.DatagramSocket`类来实现。这个教程将深入讲解如何使用Java进行...

    TCPSocket 和UDP通信java聊天室源文件

    本项目提供的"TCPSocket 和UDP通信java聊天室源文件"是一个很好的实践案例,用于学习如何在Java中实现这两种协议的聊天室功能。下面将详细阐述TCP与UDP的特点、Java中Socket编程的基本概念以及如何运用这些知识来...

    java语言UDP通信

    Java语言中的UDP(User Datagram Protocol)通信是一种基于无连接的数据包网络协议,相较于TCP,它提供了更低的延迟和更高的吞吐量,但不保证数据的顺序和可靠性。在Java中,我们通过`java.net`包中的`...

    JAVA UDPSocket代码

    在Java编程语言中,UDP(User Datagram Protocol)Socket是实现基于无连接网络通信的重要工具。UDP是一种无连接的传输层协议,它不保证数据的顺序、可靠性和完整性,但具有低延迟和高效率的特点,适合实时数据传输...

    C#和java的socket通信

    Java中的Socket通信主要通过`java.net.Socket`和`ServerSocket`类来实现。与C#类似,服务器端需要创建`ServerSocket`,并调用`accept()`方法等待客户端连接。客户端则创建`Socket`对象,指定服务器的IP地址和端口号...

    java udp socket 网络编程

    Java UDP套接字网络编程是Java编程领域中的一个重要部分,主要涉及如何利用Java的Socket类库来实现基于用户数据报协议(User Datagram Protocol)的通信。UDP是一种无连接的、不可靠的传输协议,适用于对实时性要求...

    udp.rar_java socket udp_socket udp

    标题中的"udp.rar_java socket udp_socket udp"表明这是一个关于Java编程中使用UDP(User Datagram Protocol)的教程或代码集合。UDP是一种无连接的传输层协议,常用于需要快速传输但可以容忍数据丢失的场景,如在线...

    java基于UDP实现图片群发功能

    在本文中,我们将深入探讨如何使用Java基于UDP协议实现图片群发功能。UDP(用户数据报协议)是一种无连接的网络协议,它在通信过程中不建立连接,因此具有较高的效率,适合实时性要求高的应用场景。然而,由于其不...

Global site tag (gtag.js) - Google Analytics