1)面向连接的套接字与无连接套接字之间的区别是什么?
面向连接的通信提供序列化的,可靠的和不重复的数据交付,而没有记录边界。主要协议类型为TCP(传输控制协议),必须使用sock_stream作为套接字类型。
无连接的套接字,在通信开始前不需要建立连接,数据传输中无法保证数据的顺序性,可靠性或重复性,但是保存了记录边界,提供更好的性能;主要协议类型为UDP(用户数据报协议),必须使用sock_DGRAM作为套接字类型。
2)描述客户端/服务器架构
客户端请求服务器数据,等待服务器的响应,最后完成请求或者报错。分为硬件客户端、软件客户端/服务器
3)TCP和UDP之中,哪种类型的服务器接受连接,并将它们转换到独立的套接字进行客户端通信
4)更新TCP客户端,已使服务器名称无须硬编码到应用程序中。此外,应该应许用户指定主机名和端口号,且如果二者中任意一个或者全部参数丢失,那么使用默认值
from socket import * BUFSIZE = 1024 host=input("输入你要接连ip地址") port=input("输入端口号") if host is None or port is None: HOST = '127.0.0.1' PORT = 50007 # The same port as used by the server else: HOST=host PORT=int(port) ADDR = (HOST, PORT) tcpCliSock = socket(AF_INET, SOCK_STREAM) tcpCliSock.connect(ADDR) while True: data = input('> ') if not data: break tcpCliSock.send(data.encode()) data = tcpCliSock.recv(BUFSIZE).decode() if not data: break print(data) tcpCliSock.close() 5)实现Python库参考文档中关于socket模块中的TCP客户端/服务器程序示例,并使其能够正常工作。令其能够识别以下命令: date 服务器将返回其当前日期/时间戳,即time.ctime() os 获取操作系统详细 ls 列出当前目录文件清单(提示:os.listdir()列出一个目录,os.curdir是当前目录)