# 这个是<a href="https://www.gaodaima.com/tag/%e5%ae%a2%e6%88%b7%e7%ab%af" title="查看更多关于客户端的文章" target="_blank">客户端</a>,下边我会写几个关于服务的单线程、多线程、异步服务端的脚本。<br><br># 定义一个客户端,<br># 导入接收终端参数、随机数、<a href="https://www.gaodaima.com/tag/socket" title="查看更多关于socket的文章" target="_blank">socket</a>、自己编写工具的模块。<br>import argparse, random, <a href="https://www.gaodaima.com/tag/sock" title="查看更多关于sock的文章" target="_blank">sock</a>et, zen_utils<br><br># 定义客户端函数,入参为IP地址端口。<br>def client(address, cause_error=False):<br> # 定义一个套接字。<br> sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)<br> # 连接服务端。<br> sock.connect(address)<br> # 将字典转换为列表,<br> aphorisms = list(zen_utils.aphorisms)<br> # 如果为真的话,那么就发送结束符。然后就结束。<br> if cause_error:<br> sock.sendall(aphorisms[0][:-1])<br> return<br> # 如果不为真的话,那么久就送三个问题,<br> for aphorism in random.sample(aphorisms, 3):<br> # 发送问题,<br> sock.sendall(aphorism)<br> # 然后打印出接收到的问题的答案。<br> print(aphorism, zen_utils.recv_until(sock, b"."))<br> # 关闭套接字。<br> sock.close()<br><br>if __name__ == "__main__":<br> parser = argparse.ArgumentParser(description="Example client")<br> parser.add_argument("host", help="IP or hostname")<br> parser.add_argument("-e", action="store_true", help="cause an error")<br> parser.add_argument("-p", metavar="port", type=int, default=1060,<br> help="TCP port (default 1060)")<br> args = parser.parse_args()<br> address = (args.host, args.p)<br> client(address, args.e)
www#gaodaima.com来源[email protected]搞@^&代*@码网搞代码