zoukankan      html  css  js  c++  java
  • 基于UDP协议的socket编程

    UDP协议特点:

      1.无连接。服务端与客户端传输数据之前不需要进行连接,且没有超时重发等机制,只是把数据通过网络发送出去。也正是因为此特点,所以基于UDP协议的socket的客户端在启动之前不需要先启动服务端。

      2.不可靠。数据在本地通过网络发出之后,UDP协议会立即清除本地的缓存,即使对方没有收到该数据,也不做任何补救措施。

      3.数据报协议。

    代码示例:

     1 import socket
     2 server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
     3 '''
     4     1.UDP协议是数据报协议,因此不会产生字节流,不像TCP一样是字节流协议,故不会发生粘包现象。
     5     2.UDP不稳定的原因为:udp在把数据和地址+端口发出去之后,会立即清除缓存,而且没有确认信息,因此不安全。
     6     3.UDP协议对应一发一收,因此不像TCP那样要把连接挂起,更不用监听,只要始终处于接收客户端即可。
     7 '''
     8 ip_port = ('127.0.0.1',8899)
     9 server.bind(ip_port)
    10 while True:
    11     data_bytes,client_addr = server.recvfrom(1024)
    12     server.sendto(data_bytes,client_addr)
    1 import socket
    2 client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    3 ip_port = ('127.0.0.1',8899)
    4 while True:
    5          msg=input('>>>:')
    6          client.sendto(msg.encode('utf-8'),ip_port)
    7          data_bytes,server_addr = client.recvfrom(1024)
    8          print(data_bytes.decode('utf-8'))

    注意:

      基于UDP协议的客户端可以开启多个进程,表面上实现了并发,但同一时刻只能允许一个客户端与服务端通信,因此基于UDP协议的socket并没有实现并发。

  • 相关阅读:
    软件开发(目录规范)
    面向对象编程(UDP协议)
    Django+uwsgi+Nginx
    Django(图书管理系统)
    orm(Manager isn't accessible via %s instances" % cls.__name)报错
    Django(图书管理系统)#转
    docker(mysql-redmine)
    Django(orm)转
    Django(多表查询操作)
    Oracle(ERROR SP2-0642)
  • 原文地址:https://www.cnblogs.com/liuyinzhou/p/7966859.html
Copyright © 2011-2022 走看看