• python网络编程学习笔记(一)


    python网络编程
    /*×××××××××××××××××××××××××
    创建一个能接受客户端的消息,
    在消息前加一个时间戳后返回的tcp服务器
    ×××××××××××××××××××××××××*/

    #!/usr/bin/env python
    
    from socket import *
    from time import ctime
    
    HOST=''
    PORT=21567
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    
    tcpSerSock = socket(AF_INET, SOCK_STREAM)
    tcpSerSock.setsockopt(SOL_SOCKET, SO_REUSEADDR, True) 
    tcpSerSock.setsockopt(SOL_SOCKET, SO_REUSEPORT, True) 
    tcpSerSock.bind(ADDR)
    tcpSerSock.listen(5)
    
    
    while True:
        print'waiting for connect ...'
        tcpCliSock, addr = tcpSerSock.accept()
        print'... connected from :' ,addr
    
        while True:
             data = tcpCliSock.recv(BUFSIZ)
             if not data:
                break
             tcpCliSock.send('[%s] %s'%(ctime(), data))
             tcpCliSock.close()
    tcpSerSock.close()

    在进入到服务器无限循环后,被动的等待连接,当有连接的时候,我们进入对话循环,等待客户端发送数据,如果消息为空,表示客户端已经退出,那就再去等待下一个客户端连接,得到客户端消息后,我们要在消息前加一个时间戳然后返回,最后一行不会被执行,放在这里是提醒,服务器退出的时候记得调用close()函数
    /*×××××××××××××××××××××××××
    创建一个tcp客户端,
    程序会提示用户输入要传给服务器的信息,
    显示服务器返回的加了时间戳的结果
    ×××××××××××××××××××××××××*/

    #!/usr/bin/env python
    
    from socket import *
    
    HOST= 'localhost'
    PORT=21567
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    
    tcpCliSock = socket(AF_INET, SOCK_STREAM)
    tcpCliSock.connect(ADDR)
    
    while True:
          data = raw_input('> ')
          if not data:
             break
          tcpCliSock.send(data)
          data = tcpCliSock.recv(BUFSIZ)
          if not data:
              break
          print data
    
    tcpCliSock.close()

    客户端有一个无限循环,用户没有输入或者服务器由于某种原因退出的时候,导致函数recv()失败,在一般情况下,客户端会把用户输入的字符发送给服务器进行处理,然后接收并显示服务器传回来的加了时间戳的字符串

    /*×××××××××××××××××××××××
    ×创建一个udp的服务器和客户端
    ×××××××××××××××××××××××××*/

    #!/usr/bin/env python
    
    from socket import *
    from time import ctime
    
    HOST = ''
    PORT = 21567
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    
    udpSerSock = socket(AF_INET, SOCK_DGRAM)
    udpSerSock.bind(ADDR)
    
    while True:
        print 'waiting for message...'
        data, addr = udpSerSock.recvfrom(BUFSIZ)
        udpSerSock.sendto('[%s] %s' % (ctime(), data), addr)
        print '...received from and returned to:', addr
    
    udpSerSock.close()
    
    
    
    
    #!/usr/bin/env python
    
    from socket import *
    
    HOST = 'localhost'
    PORT = 21567
    BUFSIZ = 1024
    ADDR = (HOST, PORT)
    
    udpCliSock = socket(AF_INET, SOCK_DGRAM)
    
    while True:
        data = raw_input('> ')
        if not data:
            break
        udpCliSock.sendto(data, ADDR)
        data, ADDR = udpCliSock.recvfrom(BUFSIZ)
        if not data:
            break
        print data
    
    udpCliSock.close()

      

    UDP和TCP服务器的区别,由于数据报套接字是无连接的,所以无法吧客户端连接交给另外的套接字进行后续的通讯,这些服务器只是接受消息,需要的话,给客户端返回一个结果就可以的
    UDP和TCP客户端的区别,我们不用先去和UDP服务器建立连接,而是直接把消息发出去,等待服务器的回复,得到了加了时间戳的字符串以后,把他显示出来,然后再继续其他消息,在输入结束后,退出循环,关闭套接字

  • 相关阅读:
    50个人中有相同生日的概率(考虑闰年)
    五一前来报到
    Windows Network Load Balancing群集故障排除手记。 软件之美,美在缺陷
    国内SharePoint Portal Server 2003应用现状 软件之美,美在缺陷
    .NET资源转换工具 软件之美,美在缺陷
    淘宝网一家店里看到的留言和掌柜的搞笑回复。 软件之美,美在缺陷
    排除大型工作流应用的性能问题纪要。 软件之美,美在缺陷
    Captaris Workflow 6.0 EventService 执行效率低下的排除。 软件之美,美在缺陷
    如何:在OpenText Workflow 6.5模型中保存和读取多行数据 软件之美,美在缺陷
    轻松部署Captaris Workflow 6.5模型 软件之美,美在缺陷
  • 原文地址:https://www.cnblogs.com/kaylee-lr/p/5710477.html
Copyright © 2020-2023  润新知