精华内容
下载资源
问答
  • UDP通信

    2017-07-04 21:03:20
    UDP通信
    UDP通信
    
    展开全文
  • UDP 通信

    2016-02-01 14:40:06
    不使用任何框架,最基础的UDP通信。 TCP不保证消息边界,但UDP保证消息边界。所以不用考虑拆包、黏包问题。 1.UDPServer java.net.DatagramSocket 代表UDP套接字。 java.net.DatagramSocket.DatagramSocket(int port...

    不使用任何框架,最基础的UDP通信。

    TCP不保证消息边界,但UDP保证消息边界。所以不用考虑拆包、黏包问题。

    1.UDPServer

    java.net.DatagramSocket
    代表UDP套接字。
    java.net.DatagramSocket.DatagramSocket(int port) 

    DatagramSocket的构造函数。

    java.net.DatagramPacket

    UDP的数据包。
    java.net.DatagramPacket.DatagramPacket(byte[] buf, int length)

    DatagramPacket的构造函数。
    void java.net.DatagramSocket.receive(DatagramPacket p)
    收。
    void java.net.DatagramSocket.send(DatagramPacket p)
    发。

    2.UDPClient

    java.net.DatagramSocket.DatagramSocket() 
    客户端的构造函数。
    消息的收发同UDPServer。

    3.一套示例代码

    server:

    import java.io.*;
    import java.net.*;
    
    class UDPServer {
    	public static void main(String[] args) throws IOException, InterruptedException {
    		DatagramSocket server = new DatagramSocket(5050);
    
    		byte[] recvBuf = new byte[100];
    		DatagramPacket recvPacket = new DatagramPacket(recvBuf, recvBuf.length);
    		while (!Thread.currentThread().isInterrupted()) {
    			server.receive(recvPacket);
    
    			String recvStr = new String(recvPacket.getData(), 0, recvPacket.getLength());
    			System.out.println("UDPServer receieve:\t" + recvStr);
    
    			int port = recvPacket.getPort();
    			InetAddress addr = recvPacket.getAddress();
    			String sendStr = "Hello ! I'm Server";
    			byte[] sendBuf=sendStr.getBytes();
    			DatagramPacket sendPacket = new DatagramPacket(sendBuf, sendBuf.length, addr, port);
    
    			server.send(sendPacket);
    			Thread.currentThread().sleep(500);
    		}
    		server.close();
    	}
    }
    
    client:

    import java.io.*;
    import java.net.*;
    
    class UDPClient {
    	public static void main(String[] args) throws IOException, InterruptedException {
    		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;
    		while (!Thread.currentThread().isInterrupted()) {
    			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("UDPClient receieve:\t" + recvStr);
    			Thread.currentThread().sleep(500);
    		}
    		client.close();
    	}
    }
    

    展开全文
  • Udp通信

    2018-08-12 16:25:31
    Udp介绍 UDP — ⽤户数据报协议,是⼀个⽆连接的简单的⾯向数据报的运输层协 议。UDP不提供可靠性,它只是把应⽤程序传给IP层的数据报发送出去,但 是并不能保证它们能到达⽬的地。由于UDP在传输数据报前不⽤在客户...

    Udp介绍

    UDP — ⽤户数据报协议,是⼀个⽆连接的简单的⾯向数据报的运输层协 议。UDP不提供可靠性,它只是把应⽤程序传给IP层的数据报发送出去,但 是并不能保证它们能到达⽬的地。由于UDP在传输数据报前不⽤在客户和服 务器之间建⽴⼀个连接,且没有超时重发等机制,故⽽传输速度很快。
    UDP是⼀种⾯向⽆连接的协议,每个数据报都是⼀个独⽴的信息,包括完整 的源地址或⽬的地址,它在⽹络上以任何可能的路径传往⽬的地,因此能否 到达⽬的地,到达⽬的地的时间以及内容的正确性都是不能被保证的。

    UDP特点:

    UDP是⾯向⽆连接的通讯协议,UDP数据包括⽬的端⼝号和源端⼝号信息, 由于通讯不需要连接,所以可以实现⼴播发送。 UDP传输数据时有⼤⼩限 制,每个被传输的数据报必须限定在64KB之内。 UDP是⼀个不可靠的协 议,发送⽅所发送的数据报并不⼀定以相同的次序到达接收⽅。
    【适⽤情况】
    UDP是⾯向消息的协议,通信时不需要建⽴连接,数据的传输⾃然是不可靠 的,UDP⼀般⽤于多点通信和实时的数据业务,⽐如
    语⾳⼴播 视频 QQ TFTP(简单⽂件传送) SNMP(简单⽹络管理协议) RIP(路由信息协议,如报告股票市场,航空信息) DNS(域名解释)
    注重速度流畅

    UDP操作简单,⽽且仅需要较少的监护,因此通常⽤于局域⽹⾼可靠性的分 散系统中client/server应⽤程序。例如视频会议系统,并不要求⾳频视频数据 绝对的正确,只要保证连贯性就可以了,这种情况下显然使⽤UDP会更合理 ⼀些。

    udp⽹络程序-发送数据

    创建⼀个udp客户端程序的流程是简单,具体步骤如下:
    1. 创建客户端套接字
    2. 发送/接收数据
    3. 关闭套接字

    from socket import *
    1. 创建套接字
    udpSocket = socket(AF_INET, SOCK_DGRAM)
    2. 准备接收⽅的地址
    sendAddr = (‘192.168.1.103’, 8080)
    3. 从键盘获取数据
    sendData = raw_input(“请输⼊要发送的数据:”)
    4. 发送数据到指定的电脑上
    udpSocket.sendto(sendData, sendAddr)
    5. 关闭套接字
    udpSocket.close()

    udp⽹络程序-发送、接收数据

    1. 创建udp⽹络程序-接收数据

    coding=utf-8

    from socket import *
    1. 创建套接字
    udpSocket = socket(AF_INET, SOCK_DGRAM)
    2. 准备接收⽅的地址
    sendAddr = (‘192.168.1.103’, 8080)
    3. 从键盘获取数据
    sendData = raw_input(“请输⼊要发送的数据:”)
    4. 发送数据到指定的电脑上
    udpSocket.sendto(sendData, sendAddr)
    5. 等待接收对⽅发送的数据
    recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最⼤字节数
    6. 显示对⽅发送的数据
    print(recvData)
    7. 关闭套接字
    udpSocket.close()

    注意如果不绑定端口信息,那么每次运行网络程序,端口是不断变化的

    udp绑定信息

    ⼀般情况下,在⼀天电脑上运⾏的⽹络程序有很多,⽽各⾃⽤的端⼝号很多 情况下不知道,为了不与其他的⽹络程序占⽤同⼀个端⼝号,往往在编程 中,udp的端⼝号⼀般不绑定
    但是如果需要做成⼀个服务器端的程序的话,是需要绑定的
    绑定示例
    coding=utf-8
    from socket import *
    1. 创建套接字
    udpSocket = socket(AF_INET, SOCK_DGRAM)
    2. 绑定本地的相关信息,如果⼀个⽹络程序不绑定,则系统会随机分配
    bindAddr = (”, 7788) # ip地址和端⼝号,ip⼀般不⽤写,表示本机的任何⼀个ip udpSocket.bind(bindAddr)
    3. 等待接收对⽅发送的数据
    recvData = udpSocket.recvfrom(1024) # 1024表示本次接收的最⼤字节数
    4. 显示接收到的数据
    print recvData
    5. 关闭套接字
    udpSocket.close()

    ⼀个udp⽹络程序,可以不绑定,此时操作系统会随机进⾏分配⼀个端⼝,如果重新运⾏次程序端⼝可能会发⽣变化

    ⼀个udp⽹络程序,也可以绑定信息(ip地址,端⼝号),如果绑定成 功,那么操作系统⽤这个端⼝号来进⾏区别收到的⽹络数据是否是此进 程的

    udp总结

    1. udp是TCP/IP协议族中的⼀种协议能够完成不 同机器上的程序间的数据通信
    2. udp服务器、客户端
      udp的服务器和客户端的区分:往往是通过 请求服务 和 提供服务 来进⾏ 区分 请求服务的⼀⽅称为:客户端 提供服务的⼀⽅称为:服务器
    3. udp绑定问题
      ⼀般情况下,服务器端,需要绑定端⼝,⽬的是为了让其他的客户端能 够正确发送到此进程 客户端,⼀般不需要绑定,⽽是让操作系统随机分配,这样就不会因为 需要绑定的端⼝被占⽤⽽导致程序⽆法运⾏的情况
    展开全文
  • UDP通信——使用python实现简单的UDP通信

    千次阅读 热门讨论 2019-05-15 23:27:55
    使用python实现简单的UDP通信 UDP 的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一个简单的面向数据报的传输层协议。UDP的发起和接受是不...

    UDP通信——使用python实现简单的UDP通信

    UDP 的英文单词是User Datagram Protocol,缩写为UDP,是一种用户数据报协议,又称为用户数据报文协议,是一种报文的协议,是一个简单的面向数据报的传输层协议。UDP的发起和接受是不需要经过连接的,仅仅只需要发送在对应端口上进行监听接受即可,不需要两个客户端一定是连接的。
    这里大家要区别的是:另一种常用的通信协议是TCP协议,两者的区别是TCP是面向连接的、传输可靠的,UDP是面向数据报的、不可靠的。它一旦把数据发送出去,就不保留备份数据,发出去的数据有没有被收到也不进行校验,容易丢包。
    虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。下面是接收和发送端的程序代码:

    接收端 server.py

    # -*- coding: utf-8 -*-
    
    import socket  #导入socket模块
    import time #导入time模块
          #server 接收端
          # 设置服务器默认端口号
    PORT = 8000
          # 创建一个套接字socket对象,用于进行通讯
          # socket.AF_INET 指明使用INET地址集,进行网间通讯
          # socket.SOCK_DGRAM 指明使用数据协议,即使用传输层的udp协议
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    address = ("192.168.43.131", PORT)  
    server_socket.bind(address)  # 为服务器绑定一个固定的地址,ip和端口
    server_socket.settimeout(10)  #设置一个时间提示,如果10秒钟没接到数据进行提示
        
    while True:
    	#正常情况下接收数据并且显示,如果10秒钟没有接收数据进行提示(打印 "time out")
    	#当然可以不要这个提示,那样的话把"try:" 以及 "except"后的语句删掉就可以了
      try:  
          now = time.time()  #获取当前时间
    
    				      # 接收客户端传来的数据 recvfrom接收客户端的数据,默认是阻塞的,直到有客户端传来数据
    				      # recvfrom 参数的意义,表示最大能接收多少数据,单位是字节
    				      # recvfrom返回值说明
    				      # receive_data表示接受到的传来的数据,是bytes类型
    				      # client  表示传来数据的客户端的身份信息,客户端的ip和端口,元组
          receive_data, client = server_socket.recvfrom(1024print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(now))) #以指定格式显示时间
          print("来自客户端%s,发送的%s\n" % (client, receive_data))  #打印接收的内容
      except socket.timeout:  #如果10秒钟没有接收数据进行提示(打印 "time out")
          print "tme out"
    

    发送端 client.py

    # -*- coding: utf-8 -*-
    import socket
    import time
    
    #client 发送端
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    PORT = 8000
    
    while True:
          start = time.time()  #获取当前时间
          print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(start)))  #以指定格式显示当前时间
          msg=raw_input("本客户端192.168.43.131,请输入要发送的内容:")  
          server_address = ("192.168.43.131", PORT)  # 接收方 服务器的ip地址和端口号
          client_socket.sendto(msg, server_address) #将msg内容发送给指定接收方
          now = time.time() #获取当前时间
          run_time = now-start #计算时间差,即运行时间
          print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(now)))
          print("run_time: %d seconds\n" %run_time)
    

    upd通信先打开server 或者 client 都可以。找到程序所在文件夹,在文件夹打开终端并输入命令

    python client.py
    

    运行程序,结果如图:
    在这里插入图片描述
    然后再打开一个终端,输入命令:

    python server.py
    

    打开服务器。
    然后就可以在客户端输入要发送的数据,结果如图:
    在这里插入图片描述
    如果想要一直发送相同的数据的话,就把client端的

          msg=raw_input("本客户端192.168.43.131,请输入要发送的内容:")  
    

    更改一下,比如:

          msg=“This is a udp program...

    结果如图:
    在这里插入图片描述

    展开全文
  • UDP通信——使用python通过UDP通信来发送和解析数据
  • matlab gui UDP通信

    2015-11-30 12:59:43
    matlab gui UDP通信实现matlab之间的UDP通信
  • MATLABUDP通信-matlab udp.rar matlab如何实现UDP 进行数据通信, 这是我做的一个简单的程序,拿出来洒下; 第一次发贴,大家多支持。
  • QT5 UDP通信源码

    2017-09-02 21:35:46
    QT5 UDP通信例子代码,对QT UDP通信感兴趣的同学,可以参考一下。 QT5 UDP通信例子代码,对QT UDP通信感兴趣的同学,可以参考一下。
  • udp通信协议-6轴平台

    2020-09-25 01:22:11
    6自由度udp通信协议,行业通用。和板卡通信,板卡与伺服器连接6自由度udp通信协议,行业通用。和板卡通信,板卡与伺服器连接6自由度udp通信协议,行业通用。和板卡通信,板卡与伺服器连接6自由度udp通信协议,行业...
  • UDP通信类CUDP

    2015-12-01 13:20:32
    一个udp通信的类,接收可以使用消息相应或回掉函数两种方式。在vs2008-vs2012,环境下测试通过。接收数据:支持消息响应和回调函数
  • MFC实现UDP通信

    2017-12-27 09:09:28
    开发工具为vs2008,编程语言为C++,实现UDP通信,一个程序既可以作为服务器,也可以作为客户端
  • UDP通信——通过UDP进行转发

    万次阅读 2019-05-16 01:02:07
    UDP通信——通过UDP通信进行数据转发 想象一下这样的应用场景:我要从设备A向设备B发送数据,B根据接收到的数据信息向设备C发送数据(当然不一定分别是3个不同的设备),如何用UDP通信实现呢? 可以由易到难的试验...
  •  UDP通信不需要建立连接,也不需要进行端口侦听,所以在LabVIEW中使用UDP节点和Ⅵ实现UDP协议通信比TCP节点更为简单。UDP节点位于函数选板的“数据→通信→协议→>UDP”,如图所示。  如图2 UDP子选板  如表...
  • UDP通信协议

    2019-06-01 15:50:32
    UDP 通信分三种模式 :单播模式,组播模式,广播模式 UDP 单播通信的搭建步骤 : 1.创建UDP通信socket #include <sys/types.h> /* See NOTESw*/ #include < sys/socket.h> int socket ( int ...
  • delphi Udp通信

    千次阅读 2016-09-14 22:41:27
    delphi UDp通信

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,833
精华内容 9,533
关键字:

udp通信