• 使用 socket_server 创建一个简单的服务器和客户端


    使用 socket_server  创建一个简单的服务器和客户端

    创建TCP服务器

    # StreamRequestHandler: 支持操作文件对象那样话操作输入输出套接字
    # 使用 readline() 获取客户消息
    # 使用 write() 把字符串发给客户端
    from socketserver import TCPServer as TCP, StreamRequestHandler as SRH
    from time import ctime
    
    
    HOST = ''
    PORT = 21569
    ADDR = (HOST, PORT)
    
    
    class MyRequestHandle(SRH):
        # 再有客户端消息进来的时候, handle 方法就会被调用
        def handle(self):
            '''重写handle方法'''
            print(f'...连接地址: {self.client_address}')
            self.wfile.write(f'[{ctime()}] {self.rfile.readline()}'.encode())
    
    
    tcp_serv = TCP(ADDR, MyRequestHandle)
    print('等待连接...')
    tcp_serv.serve_forever()

    创建TCP客户端

    # 创建一个TCP客户端, 程序会提示用户输入要传给服务器的信息, 显示服务器返回的加了时间戳的结果
    from socket import *
    
    
    # HOST 和 PORT 表示服务器的主机名与端口号, 由于这里是在一台电脑运行, 所以 HOST 里放的是 localhost
    # 如果服务器和客户端不在一台电脑上, HOST要做出相应的修改
    # 端口号和服务器的设置完全相同
    HOST = 'localhost'   # HOST 变量为空, 表示 bind() 函数可以绑定到所有的有效地址上
    PORT = 21569    # 设置端口号
    BUFSIZ = 1024   # 设置缓冲区大小为1K
    ADDR = (HOST, PORT)
    
    
    while True:
        # socket_server 的请求处理器默认行为是接受连接, 得到请求, 然后关闭连接
        # 所以这里每次都要创建新的套接字连接, 有点像UDP。不过这种行为也可以通过重写请求处理器中相应的函数来改变
        tcp_cli_sock = socket(AF_INET, SOCK_STREAM)
        tcp_cli_sock.connect(ADDR)
    
        data = input('>>>>>>请输入内容: ')
        if not data:
            break
    
        tcp_cli_sock.send(f'{data}
    '.encode())
        data = tcp_cli_sock.recv(BUFSIZ)
        if not data:
            break
    
        print(f'>>>>>客户端data: {data}')
    
    tcp_cli_sock.close()

    TCP客户端执行结果

    TCP服务端执行结果

  • 相关阅读:
    Hadoop之MapReduce学习(一)
    Spark 0.9.0启动脚本——bin/run-example
    Spark 0.9.0启动脚本——sbin/spark-daemon.sh
    Spark 0.9.0启动脚本——启动总结
    Spark 0.9.0启动脚本——sbin/start-slave.sh
    Spark 0.9.0启动脚本——sbin/slaves.sh
    Spark 0.9.0启动脚本——sbin/start-slaves.sh
    Spark 0.9.0启动脚本——sbin/start-master.sh
    Spark 0.9.0启动脚本——sbin/spark-config.sh
    Hadoop 2.2.0启动脚本——bin/hdfs
  • 原文地址:https://www.cnblogs.com/gxfaxe/p/15202432.html
Copyright © 2020-2023  润新知