zoukankan      html  css  js  c++  java
  • python 网络编程(四)---UDP服务端客户端

    1.服务器端

    UDP服务器建立与TCP相类似,具体比较如下:

    image

    补充下,第四步:不必使用listen还有accept函数。

    具体代码如下:(设置socket选项省略)

    import socket
    from time import ctime
    
    HOST=''
    PORT=21004
    BUFSIZE=1024
    
    udpSerSock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  #建立socket
    udpSerSock.bind((HOST,PORT))                  #将socket与端口绑定,这个端口是连接客户端与服务器
    
    while True:
        print 'waiting for message...' 
        data, addr = udpSerSock.recvfrom(BUFSIZE) 
        udpSerSock.sendto('[%s] %s'%(ctime(),data),addr)  
        print '...received from and returned to:',addr
        print ctime(),'  ',data    
    udpSerSock.close()

    2.客户端

    1)SOCK_DGRAM

    2)因为UDP是无连接的,没有使用connect函数,我们无法知道数据是否已经发送结束。

    import socket 
    HOST ='localhost'
    PORT = 21004
    BUFSIZE =1024
    
    udpCliSock =socket.socket(socket.AF_INET,socket.SOCK_DGRAM)    # 建立UDP socket
    
    while True:
        data=raw_input('Enter a string that you want to send: ')
        if not data:
            break
        udpCliSock.sendto(data,(HOST,PORT))           # 发送到服务器端口
        data,(HOST,PORT)=udpCliSock.recvfrom(BUFSIZE) # 接收服务器数据
        if not data:
            break
        print data
    udpCliScok.close()

    结果:

    客户端

    image

    服务器端:

    image

    由上图再结合TCP结果,可以发现每次客户端发送数据给服务器后,(客户端会进行检查吗?),服务器只管收到数据,并返回给客户端,不管对方接收到了没有,都只进行接收下一段数据。(waiting for message…)

    参考:http://www.cnblogs.com/xiaowuyi/archive/2012/08/06/2625509.html

            http://blog.sina.com.cn/s/blog_6b60259a0101ftxx.html

  • 相关阅读:
    1.2c#变量和运算符及注释
    1.1c#初识
    约数个数定理
    莫比乌斯反演
    欧几里得/拓展欧几里得
    中国剩余定理【数论】
    欧拉定理/欧拉函数【数论】
    费马小定理【数论】
    同余定理【数论】
    Java class 和public class 区别
  • 原文地址:https://www.cnblogs.com/menghuizuotian/p/3764693.html
Copyright © 2011-2022 走看看