• python网络编程【二】(使用UDP)


      UDP通信几乎不使用文件对象,因为他们往往不能为数据如何发送和接受提供足够的控制。下面是一个基本的UPD客户端:

      

     1 #!/usr/bin/env python
     2 import socket,sys
     3 
     4 host = sys.argv[1]
     5 textport = sys.argv[2]
     6 
     7 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     8 try:
     9     port = int(textport)
    10 except ValueError:
    11     port = socket.getservbyname(textport, 'udp')
    12 
    13 s.connect((host, port))
    14 print "Enter data to transmit:"
    15 data = sys.stdin.readline().strip()
    16 s.sendall(data)
    17 print "Looking for replies; press Ctrl-C or Ctrl-Break to stop."
    18 while 1:
    19     buf = s.recv(2048)
    20     if not len(buf):
    21         break
    22     sys.stdout.write(buf)

      这段程序发送一个udp信息包,接收一个udp信息包,并继续等候其他的(其他的永远也不会到达)。最后Ctrl-C来终止。

      让我们来看看它和TCP的区别:

        1.当socket被建立的时候,程序调用的是SOCK_DGRAM,而不是SOCK_STREAM,这会向操作系统表明socket将使用udp通信。

        2.对socket.getservbyname()的调用寻找的是UDP端口号,端口号对于协议是特殊的,即一个TCP使用119端口,一个完全不同的UDP程序也可以使用这个端口号。

        3.UDP程序无法探测到服务器什么时候发送完数据,因为其实这里没有实际的连接。对connect()的调用只是初始化一些内在的参数,同时,服务器也许不会返回任何数据,或者数据也许在传输过程中丢失,程序并没有只能判断这个问题。因此,当您结束等待传来的信息包时,您必须按下Ctrl-C.

  • 相关阅读:
    http 301 和 302的区别
    移动端与PHP服务端接口通信流程设计(增强版)
    导出大量数据到excel表
    c#中两种不同的存储过程调用与比较
    sql存储过程几个简单例子
    高级搜索指令
    SEO 百度后台主动推送链接
    C#利用Web Service实现短信发送(转)
    webservice测试实例
    克服演讲紧张的10个技巧
  • 原文地址:https://www.cnblogs.com/vipitsoft/p/5646865.html
Copyright © 2020-2023  润新知