zoukankan      html  css  js  c++  java
  • 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服务器建立连接,而是直接把消息发出去,等待服务器的回复,得到了加了时间戳的字符串以后,把他显示出来,然后再继续其他消息,在输入结束后,退出循环,关闭套接字

  • 相关阅读:
    AIO系列文档(2)----TIO使用
    AIO系列文档(1)----图解ByteBuffer
    Dubbo+zookeeper构建高可用分布式集群(二)-集群部署
    Dubbo+zookeeper构建高可用分布式集群(一)-单机部署
    利用redis + lua解决抢红包高并发的问题
    使用SIP Servlet为Java EE添加语音功能
    Java互联网架构-直播互动平台高并发分布式架构应用设计
    搭建自己的SIP服务器:开源sip服务器opensips的搭建及终端TwInkle的使用
    SIP协议搭建电信级VOIP/IM运营平台--架构篇(sip集群)
    阿里分布式事务解决方案-GTS
  • 原文地址:https://www.cnblogs.com/kaylee-lr/p/5710477.html
Copyright © 2011-2022 走看看