`

java中的UDP简单编程

阅读更多

java中的UDP,也是十分有用的,比如可以用其编个简单的二人聊天程序,最近学习这方面知识,现摘录着。我们可以使用datagrampacket类和datagramsocket类,datagramsocket类用来创建接收和发送UDP的SOCKET实例,而datagrampacket类则是用于处理报文,将byter数组,目标地址,目标端口等数据包装成报文或者将报文拆成BYTE数组。

下面给出简单的代码段
  int portIn = 5000;//输入端口
  int portOut = 5001;//输出端口

  DatagramPacket sendpacket,receivepacket;//声明发送和接收数据包
  DatagramSocket sendsocket,receivesocket;//声明发送和接收DatagramSocket

初始化:
 try {     
        sendsocket=new DatagramSocket(5001);//实例化DatagramSocket类作为输出端
           receivesocket=new DatagramSocket(5000);//实例化DatagramSocket类作为输入端
           online = !(sendsocket.isClosed());
      }
      catch(SocketException se){//异常捕获
         se.printStackTrace() ;
         System.exit(0);
     }
  }

之后,输入对方IP地址,并且连接对方,其核心代码为
    portIn = (int) Integer.parseInt(str2);
     portOut = (int) Integer.parseInt(str3);
  
     
     if(online){
      sendsocket.close();
      receivesocket.close();
      textArea1.append("\n formal connection closed");
     }
           
     try {
       textArea1.append("\n building a connection use the port defined..."); 
        sendsocket=new DatagramSocket(portOut);
           receivesocket=new DatagramSocket(portIn);
           textArea1.append("\n connection builded.");
      }
      catch(SocketException se){
         se.printStackTrace() ;
         System.exit(0);
     }
     online = !(sendsocket.isClosed());
    }
     
     
 else
        textArea1.append("\nplease input ports and IP");
        
    }

上面的代码,首先判断,如果没有获得连接,则提示用户,通过online属性来判断系统当前的状态,如果已经连接,则断开连接,然后再建立新的连接,否则直接建立连接。

而监听接受的信息方法为
 public void waitforpackets(){//检测并接受对方发来的消息
    while(true){
        try{
             byte[]array=new byte[100];
              receivepacket=new DatagramPacket(array,array.length );
              receivesocket.receive(receivepacket);//接收
              textArea1.append("\nfrom "+receivepacket.getAddress() +":"+receivepacket.getPort()+" get:");
             byte data[]=receivepacket.getData() ;
              String received=new String(data,0);
              textArea1.append(received);
        }
        catch (IOException se){
                se.printStackTrace() ;
        }
    }
  }
 
DatagrmPacket类的最重要的方法是getdata(),从接收包中取得报文的byte数组编码,然后通过调用receivesocket的receive函数接受消息,然后将接收的报文保存。

而发送的代码为
  String str=textField2.getText();
        if(online){
         if(str.compareTo("")!=0 ){
          
             
             try {
              
                                 
                 textArea1.append("\nto "+textField2.getText() +":"+portOut+" say: "+textField1.getText() );
                 String s=textField1.getText() ;
                 byte data[]=new byte[100];
                 s.getBytes(0,s.length() ,data,0);
                 sendpacket=new DatagramPacket(data,s.length() ,InetAddress.getByName(textField2.getText()),portOut);
                 sendsocket.send(sendpacket);
             }
             catch(IOException exc){
                 exc.printStackTrace() ;
             }
       
DatagramPacket的实例化中,这里的格式是DatagramPacket(byte[] buf,int length,InetAddress addr,int port),从 buf数组取出长度为length长度的数据创建数据包对象,目标是addr地址,port端口

分享到:
评论

相关推荐

    JAVA进行UDP编程

    下面将详细介绍Java进行UDP编程的相关知识点。 **一、UDP的特点** 1. **无连接性**:UDP不建立连接,直接发送数据,因此速度快,但可能会丢失数据或顺序错乱。 2. **不可靠性**:UDP不保证数据包的接收,也不检测和...

    JAVA的udp编程

    Java的UDP编程

    java udp socket 网络编程

    - UDP编程中应处理各种异常,如`SocketException`、`IOException`等。 - 必要时,使用`close()`方法关闭套接字,释放系统资源。 7. **性能优化**: - UDP的高效性在于其无连接特性和快速传输,但这也可能导致丢...

    java_UDP.rar_ java_UDP_java udp_java 缃戠粶缂栫▼_udp java_udp编程

    了解了以上基础知识后,你可以通过解压并研究`java_UDPServer.rar`和`java_UDPClient.rar`中的代码来深入理解Java UDP编程的实际应用。这些实例将帮助你掌握如何在实际项目中创建UDP服务器和客户端,实现数据的发送...

    JAVA udp 协议编程

    Java UDP协议编程主要涉及到网络通信中的无连接服务,它的特点是快速、简单,但不保证数据的可靠传输。UDP(User Datagram Protocol)在OSI模型的传输层中运作,与TCP协议相比,它不进行数据包的分组、组装和排序,...

    Java中实现UDP协议编程的方法

    #### 在Java中实现UDP编程 Java提供了丰富的网络编程支持,包括对UDP协议的支持。主要通过`java.net`包下的`DatagramSocket`和`DatagramPacket`类来实现。 - **DatagramSocket**:表示一个UDP套接字,用于发送或...

    Java中的UDP协议编程

    总之,Java中的UDP编程提供了高效、轻量级的通信方式,适用于实时性要求高且对数据完整性要求不那么严格的应用场景。不过在实际开发中,需要充分理解UDP的特性,并根据具体需求进行合理的设计和优化。

    java Udp 收发结构体实例 Socket编程

    Java UDP(用户数据报协议)收发结构体实例与Socket编程是网络通信中的重要主题,尤其是在需要高效、无连接的数据传输场景下。UDP是一种无连接的传输层协议,相较于TCP,它提供了更低的延迟和更高的吞吐量,但不保证...

    Java udp通信编程client端

    Java udp通信编程client端

    c与Java的UDP收发

    **Java的UDP编程** 在Java中,我们可以使用`java.net.DatagramSocket`类来进行UDP通信。服务器创建一个`DatagramSocket`实例,绑定到指定端口,使用`DatagramPacket`接收和发送数据。客户端也创建`DatagramSocket`...

    udp编程 java

    本篇文章将深入探讨如何在Java中进行简单的UDP编程。 首先,了解UDP的特点是必要的。与TCP相比,UDP没有建立连接、数据确认和流量控制等机制,因此它更快、更轻量级,但同时也可能丢失数据或接收到重复的数据包。...

    java接听UDP广播

    Java UDP(用户数据报协议)是网络编程中的一个重要部分,尤其在需要低延迟、无连接通信的场景下。本文将详细讲解如何使用Java来实现一个UDP广播监听器,以接收并处理UDP广播数据。 首先,我们需要理解UDP的基本...

    Java udp通信编程server端

    Java udp通信编程server端程序

    编程实现基于UDP的PING (Java)

    在计算机网络中,PING是一种广泛...通过这个课程设计,你将深入理解UDP的工作原理,掌握Java中的网络编程技术,并能应用到实际的网络诊断和测试中。这个项目不仅锻炼了编程能力,还加深了对计算机网络基础知识的理解。

    java-tcp-udp编程

    本篇文章将深入探讨Java如何进行TCP和UDP编程,并结合提供的文件名,分析相关知识点。 首先,TCP是一种面向连接的、可靠的传输协议,它通过三次握手建立连接,确保数据的有序无损传输。在Java中,我们通常使用`java...

    基于UDP网络编程简单聊天窗口(客户端和服务端图形界面)适合新手当作业或学习

    【标题】中的“基于UDP网络编程简单聊天窗口”是指使用UDP协议进行网络通信的一个简易聊天应用,它包含客户端和服务器端的图形用户界面。UDP,即User Datagram Protocol,是一种无连接的、不可靠的传输层协议,常...

    基于java的UDP协议编程.pdf

    在实际的Java程序中,UDP编程大致可以分为以下几个步骤: 1. 创建DatagramSocket实例,绑定到一个端口上。在客户端,这一步骤是可选的,因为可以使用无参构造函数让系统随机选择端口。 2. 构造DatagramPacket对象...

    java网络编程,UDP,发送16进制报文。

    Java网络编程是软件开发中的重要领域,特别是在分布式系统和物联网(IoT)中。本教程主要关注使用Java标准版(J2SE)进行UDP(用户数据报协议)通信,特别是如何发送16进制格式的报文。UDP是一种无连接的、不可靠的...

    UDP简易客户端与服务器端程序(Java)

    在这个Java实现的UDP简易客户端与服务器端程序中,我们可以通过两个核心文件——UDPClient.java和UDPServer.java来理解其工作原理。 首先,让我们来看看`UDPServer.java`。服务器端通常负责监听特定的端口,接收...

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

    Java基于UDP协议的聊天程序是一种实现...总的来说,Java基于UDP协议的聊天程序是一个实践性的项目,涵盖了网络通信、多线程编程、输入输出处理等多个Java开发的重要领域,对于提升编程能力和理论知识都有很大的帮助。

Global site tag (gtag.js) - Google Analytics