「javaudp例程」javaudp网络编程

博主:adminadmin 2022-12-25 22:00:06 51

今天给各位分享javaudp例程的知识,其中也会对javaudp网络编程进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

JAVA UDP聊天程序问题 给100分!

public void run() /* 用于被调用的接口run方法 */

{

while (true)

{

try

{

byte[] buf = new byte[1024];/* 接收端程序,设置BUF数组长度为1024位 */

DatagramPacket dp = new DatagramPacket(buf, buf.length);/* 创建接收数据报的实例 */

ds.receive(dp);

lst.add("他说:" + new String(buf), 0);

} catch (IOException ex)

{

}

}

}

======================

线程的run方法改成上面这样就可以了,原因是因为接收端每次循环都是使用的同一个buf,而buf没有清空,所以导致每次接收都只更新前面一小段信息,后面的信息没有改变。

Java写的一个udp的demo用来计算探针传送过来的数据,怎么实现一个接口来调用这个数据

Java UDP通信简单实现

1、Java实现方式

1)server端

/**

 * UDPserver端

 * */

public class UdpServer {

    // 定义一些常量

    private final intMAX_LENGTH = 1024; // 最大接收字节长度

    private final intPORT_NUM   = 5066;   // port号

    // 用以存放接收数据的字节数组

    private byte[] receMsgs = new byte[MAX_LENGTH];

    // 数据报套接字

    private DatagramSocket datagramSocket;

    // 用以接收数据报

    private DatagramPacket datagramPacket;

   

    public UdpServer(){

        try {

            /******* 接收数据流程**/

            // 创建一个数据报套接字,并将其绑定到指定port上

            datagramSocket = new DatagramSocket(PORT_NUM);

            // DatagramPacket(byte buf[], int length),建立一个字节数组来接收UDP包

            datagramPacket = new DatagramPacket(receMsgs, receMsgs.length);

            // receive()来等待接收UDP数据报

            datagramSocket.receive(datagramPacket);

           

            /****** 解析数据报****/

            String receStr = new String(datagramPacket.getData(), 0 , datagramPacket.getLength());

            System.out.println("Server Rece:" + receStr);

            System.out.println("Server Port:" + datagramPacket.getPort());

           

            /***** 返回ACK消息数据报*/

            // 组装数据报

            byte[] buf = "I receive the message".getBytes();

            DatagramPacket sendPacket = new DatagramPacket(buf, buf.length, datagramPacket.getAddress(), datagramPacket.getPort());

            // 发送消息

            datagramSocket.send(sendPacket);

        } catch (SocketException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            // 关闭socket

            if (datagramSocket != null) {

                datagramSocket.close();

            }

        }

    }

}

2)client

/***

 * UDPclientClient端

 ***/

public class UdpClient {

   

    private String sendStr = "SendString";

    private String netAddress = "127.0.0.1";

    private final intPORT_NUM = 5066;

   

    private DatagramSocket datagramSocket;

    private DatagramPacket datagramPacket;

   

    public UdpClient(){

        try {

           

            /*** 发送数据***/

            // 初始化datagramSocket,注意与前面Server端实现的差别

            datagramSocket = new DatagramSocket();

            // 使用DatagramPacket(byte buf[], int length, InetAddress address, int port)函数组装发送UDP数据报

            byte[] buf = sendStr.getBytes();

            InetAddress address = InetAddress.getByName(netAddress);

            datagramPacket = new DatagramPacket(buf, buf.length, address, PORT_NUM);

            // 发送数据

            datagramSocket.send(datagramPacket);

           

            /*** 接收数据***/

            byte[] receBuf = new byte[1024];

            DatagramPacket recePacket = new DatagramPacket(receBuf, receBuf.length);

            datagramSocket.receive(recePacket);

           

            String receStr = new String(recePacket.getData(), 0 , recePacket.getLength());

            System.out.println("Client Rece Ack:" + receStr);

            System.out.println(recePacket.getPort());

           

           

        } catch (SocketException e) {

            e.printStackTrace();

        } catch (UnknownHostException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        } finally {

            // 关闭socket

            if(datagramSocket != null){

                datagramSocket.close();

            }

        }

    }  

}

java 实现 UDP连接的源程序

import java.io.*;

import java.lang.*;

import java.net.*;

public class uclient

{

private DatagramSocket cli;

private DatagramPacket pac;

private byte sb[];

private String sen;

public uclient()

{

Init();

}

public void Init()

{

try

{

//指定端口号,避免与其他应用程序发生冲突

cli=new DatagramSocket(10002);

sb=new byte[1024];

sen="UDP方式发送数据";

sb=sen.getBytes();

pac=new DatagramPacket(sb,sb.length,InetAddress.getByName("localhost"),10005);

cli.send(pac);

}

catch(SocketException se)

{

se.printStackTrace();

}

catch(IOException ie)

{

ie.printStackTrace();

}

}

public static void main(String args[])

{

new uclient();

}

}

接收端数据:

//加以改进代码,可以改变接收方式

import java.io.*;

import java.lang.*;

import java.net.*;

public class userve

{

private DatagramSocket ser;

private DatagramPacket pac;

private byte rb[];

private String rev;

public userve()

{

Init();

}

public void Init()

{

try

{

ser=new DatagramSocket(10005);

rb=new byte[1024];

pac=new DatagramPacket(rb,rb.length);

rev="";

int i=0;

while(i==0)//无数据,则循环

{

ser.receive(pac);

i=pac.getLength();

//接收数据

if(i0)

{

//指定接收到数据的长度,可使接收数据正常显示,开始时很容易忽略这一点

rev=new String(rb,0,pac.getLength());

System.out.println(rev);

i=0;//循环接收

}

}

}

catch(Exception e)

{

e.printStackTrace();

}

}

public static void main(String args[])

{

new userve();

}

}

javaudp例程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于javaudp网络编程、javaudp例程的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。