「javaudp例子」javaudp通信

博主:adminadmin 2023-01-08 00:27:08 796

本篇文章给大家谈谈javaudp例子,以及javaudp通信对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

一个简单java实现udp通信

UDP也可以和TCP那样遍历list然后发送啊

客户端向外面开一个UDP端口接受数据报

然后服务器这边要是有消息要发送就直接发送数据报包就可以了嘛

UDP都不用保持着连接的,比TCP还简单些

另外也可以用组播来实现,搜索下java UDP 组播,你能找到不少实例性的代码,也有聊天室的代码

java编程 利用UDP方式,客户端向服务器发送三边值,服务器,根据三边值计算三角形面积返回客户端

创建两个类 分别添加main方法 一个作为server类一个作为client类

客户端先发送再接收  服务器端先接收再发送

下面给你一个server和client的例子 你在基础上改一下就行了

client发送的时候发送三边值  server接收后 写一个计算三角形面积的函数 把接收到的三边值传入函数计算出结果作为数据返回到client端

/**

 *UDPServer

 */

import java.io.*;

import java.net.*;

class UDPServer{

    public static void main(String[] args)throws IOException{

        DatagramSocket  server = new DatagramSocket(5050);

        byte[] recvBuf = new byte[100];

        DatagramPacket recvPacket 

            = new DatagramPacket(recvBuf , recvBuf.length);

        server.receive(recvPacket);

        String recvStr = new String(recvPacket.getData() , 0 , recvPacket.getLength());

        System.out.println("Hello World!" + recvStr);

        int port = recvPacket.getPort();

        InetAddress addr = recvPacket.getAddress();

        String sendStr = "Hello ! I'm Server";

        byte[] sendBuf;

        sendBuf = sendStr.getBytes();

        DatagramPacket sendPacket 

            = new DatagramPacket(sendBuf , sendBuf.length , addr , port );

        server.send(sendPacket);

        server.close();

    }

}

/**

 *UDPClient

 */

import java.io.*;

import java.net.*;

class UDPClient{

    public static void main(String[] args)throws IOException{

        DatagramSocket client = new DatagramSocket();

        

        String sendStr = "Hello! I'm Client";

        byte[] sendBuf;

        sendBuf = sendStr.getBytes();

        InetAddress addr = InetAddress.getByName("127.0.0.1");

        int port = 5050;

        DatagramPacket sendPacket 

            = new DatagramPacket(sendBuf ,sendBuf.length , addr , port);

        client.send(sendPacket);

        byte[] recvBuf = new byte[100];

        DatagramPacket recvPacket

            = new DatagramPacket(recvBuf , recvBuf.length);

        client.receive(recvPacket);

        String recvStr = new String(recvPacket.getData() , 0 ,recvPacket.getLength());

        System.out.println("收到:" + recvStr);

        client.close();

    }

}

java 中怎么使用UDP?

发送步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。

将数据打包到DatagramPacket中去

通过socket服务发送 (send()方法)

关闭资源

import java.io.IOException;  

import java.net.*;  

  

public class Send {  

  

    public static void main(String[] args)  {  

          

        DatagramSocket ds = null;  //建立套间字udpsocket服务  

          

        try {  

          ds = new DatagramSocket(8999);  //实例化套间字,指定自己的port  

        } catch (SocketException e) {  

            System.out.println("Cannot open port!");  

            System.exit(1);   

        }  

          

        byte[] buf= "Hello, I am sender!".getBytes();  //数据  

        InetAddress destination = null ;  

        try {  

            destination = InetAddress.getByName("192.168.1.5");  //需要发送的地址  

        } catch (UnknownHostException e) {  

            System.out.println("Cannot open findhost!");  

            System.exit(1);   

        }  

        DatagramPacket dp =   

                new DatagramPacket(buf, buf.length, destination , 10000);    

        //打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!)  

          

        try {  

            ds.send(dp);  //发送数据  

        } catch (IOException e) {  

        }  

        ds.close();  

    }  

}

接收步骤:

使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。

定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容

通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中

使用DatagramPacket的方法,提取数据。

关闭资源。

import java.net.*;  

  

public class Rec {  

  

    public static void main(String[] args) throws Exception {  

          

        DatagramSocket ds = new DatagramSocket(10000);  //定义服务,监视端口上面的发送端口,注意不是send本身端口  

          

        byte[] buf = new byte[1024];//接受内容的大小,注意不要溢出  

          

        DatagramPacket dp = new DatagramPacket(buf,0,buf.length);//定义一个接收的包  

          

        ds.receive(dp);//将接受内容封装到包中  

          

        String data = new String(dp.getData(), 0, dp.getLength());//利用getData()方法取出内容  

          

        System.out.println(data);//打印内容  

          

        ds.close();//关闭资源     

    }  

}

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端口扫描

给你个UDP服务端与客户端的示例:

服务端代码:

import java.net.DatagramPacket;

import java.net.InetAddress;

import java.net.MulticastSocket;

public class UDPMulticastServer {

final static int RECEIVE_LENGTH = 1024;

static String multicastHost = "224.0.0.1";

static int localPort = 9998;

public static void main(String[] args) throws Exception {

InetAddress receiveAddress = InetAddress.getByName(multicastHost);

if (!receiveAddress.isMulticastAddress()) {// 测试是否为多播地址

throw new Exception("请使用多播地址");

}

int port = localPort;

MulticastSocket receiveMulticast = new MulticastSocket(port);

receiveMulticast.joinGroup(receiveAddress);

boolean isStop = false;

while(!isStop){

DatagramPacket dp = new DatagramPacket(new byte[RECEIVE_LENGTH], RECEIVE_LENGTH);

receiveMulticast.receive(dp);

String data = new String(dp.getData()).trim(); 

System.out.println(data);

if("exit".equals(data)){

System.out.println("程序退出");

isStop = true;

}

}

receiveMulticast.close();

}

}

客户端代码:

import java.net.DatagramPacket;

import java.net.InetAddress;

import java.net.MulticastSocket;

public class UDPMulticastClient {

static String destAddressStr = "224.0.0.1";  

  

    static int destPortInt = 9998;  

    static int TTLTime = 4;  

    public static void main(String[] args) throws Exception {  

      

     InetAddress destAddress = InetAddress.getByName(destAddressStr);  

    if(!destAddress.isMulticastAddress()){//检测该地址是否是多播地址  

             throw new Exception("地址不是多播地址");  

    }  

    int destPort = destPortInt;  

    MulticastSocket multiSocket =new MulticastSocket();  

//     int TTL = TTLTime;  

//     multiSocket.setTimeToLive(TTL);  

    byte[] sendMSG = "exit".getBytes();  

    DatagramPacket dp = new DatagramPacket(sendMSG, sendMSG.length, destAddress  , destPort);  

    multiSocket.send(dp);  

    multiSocket.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通信的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。