美文网首页
创建接受和发送UDP的socket实例

创建接受和发送UDP的socket实例

作者: 茴香豆的第五种写法 | 来源:发表于2017-03-22 14:54 被阅读0次

最近项目中需要用到通信这块,与上位机交互,考虑udp相对于tcp传输速度快,并且不需要三次握手,这里用了MulticastSocket来实现udp通信.

实现思路:

DatagramPacket

第一个参数:存放数据的字节数组;第二个参数:存放数据的字节长度;第三个参数:指定链接的ip地址(IP地址的范围是224.0.0.0至239.255.255.255);第四个参数:端口号

(1)建立链接

multicastSocket.joinGroup(address);

(2)发送方法

multicastSocket.send(datagramPacket);

(3)接受方法

multicastSocket.receive(datagramPacket); // 接收数据,同样会进入阻塞状态

这里贴上客户端code:

import java.io.IOException;

import java.io.InputStream;

import java.net.DatagramPacket;

import java.net.InetAddress;

import java.net.UnknownHostException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class MulticastSocket extends Thread {

static java.net.MulticastSocket multicastSocket;

public static void main(String[] args) {

try {

multicastSocket = new java.net.MulticastSocket(58432);

InetAddress address = InetAddress.getByName("234.5.6.7");

multicastSocket.joinGroup(address);

byte[] buf = new byte[1024];

while (true) {

DatagramPacket datagramPacket = new DatagramPacket(buf,

buf.length);

multicastSocket.receive(datagramPacket); // 接收数据,同样会进入阻塞状态

byte[] message = new byte[datagramPacket.getLength()]; // 从buffer中截取收到的数据

System.arraycopy(buf, 0, message, 0, datagramPacket.getLength());

System.out.println(datagramPacket.getAddress());

System.out.println(new String(message));

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} // 接收数据时需要指定监听的端口号

}

public void run() {

// TODO Auto-generated method stub

while (true) {

byte[] buf = new byte[1024];

DatagramPacket datagramPacket;

try {

datagramPacket = new DatagramPacket(buf, buf.length,

InetAddress.getByName("234.5.6.7"), 58432);

multicastSocket.send(datagramPacket);

// multicastSocket.close();

} catch (UnknownHostException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}

相关文章

  • 创建接受和发送UDP的socket实例

    最近项目中需要用到通信这块,与上位机交互,考虑udp相对于tcp传输速度快,并且不需要三次握手,这里用了Multi...

  • 多播的发送与接收

    多播发送 流程 创建socket 发送数据(是多播地址发送数据) 实例 多播接收 流程 创建socket 将套接字...

  • Java网络聊天程序

    UDP:1、指定socket端口2、在发送的包中指定发送到的地址和端口3、发送的包中的端口必须和接受端的socke...

  • UDP

    好文推荐# 【Java TCP/IP Socket】UDP Socket(含代码)黑马程序员——UDP发送数据,接...

  • UDP服务器和客户端实现

    C/S 架构流程 相关API 创建socket 设置主机的IP地址和端口 接收数据 发送数据 实例 服务器实例 客...

  • 网络编程3

    1.1 udp网络程序-发送数据 Socket函数 mySocket = socket(family, type...

  • python 网络编程②

    一.udp网络程序-发送数据 socket函数 mySocket = socket(family, type) 函...

  • OSI传输层中的TCP和UDP

    UDP和TCP都属于Socket协议。 UDP的特点: 1、每一次发送数据都需要绑定IP和端口号。相当于发送邮件,...

  • 广播的发送与接收

    广播的发送 流程 创建socket 设置套接字选项(在默认情况下,UDP套接字文件不允许发送广播,需要设置套接字文...

  • java byte数组与16进制字符串、字符串转换

    java socket通信中,UDP采用DatagramSocket进行接收receive和发送send, TCP...

网友评论

      本文标题:创建接受和发送UDP的socket实例

      本文链接:https://www.haomeiwen.com/subject/klyonttx.html