首页 > 代码库 > 核心编程练习(2)

核心编程练习(2)

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 = http://www.mamicode.com/input(‘> ‘)
if not data:
break
tcpCliSock.send(data.encode())
data = http://www.mamicode.com/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是当前目录)

核心编程练习(2)