Python核心编程(第三版)课后习题解答——第二章

本文详细解释了面向连接与无连接套接字的区别,阐述了客户端/服务器架构的基本概念,并探讨了TCP与UDP的特点。同时,介绍了如何更新TCP和UDP客户端以灵活处理服务器名称和端口号。此外,还讨论了增强服务器代码以支持特定命令,如获取日期/时间、操作系统信息和目录列表。最后,提到了如何使用socket.getservbyname()获取UDP的daytime服务端口,并概述了简单的半双工及多用户全双工聊天程序的服务器实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python核心编程(第三版),课后习题解答,第二章。所有的解答均为博主自行编写,因水平有限,欢迎大家提出意见、互相交流。

2-1.面向连接的套接字和无连接的套接字之间的区别是什么?

面向连接的:通信之前必须先建立起一个连接,提供序列化的,可靠的和不重复的数据交付,而没有边界记录。

无连接的:在通信开始之前并不需要建立连接,在数据传输过程中并无法保证它的顺序性,可靠性或重复性。


2-2.用自己的话描述客户端/服务器架构的意思。

服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多的请求。

客户端因特定的请求而联系服务器,并发送必要的数据,然后等待服务器的回应,最后完成请求或给出故障的原因。


2-3.TCP和UDP之中,哪种类型的服务器接受连接,并将它们转换到独立的套接字进行客户端通信?

TCP。


2-4.客户端。更新Tcp和Udp客户端,以使得服务器名称无需硬编码到应用程序中。此外,应该允许用户指定主机名和端口号,且如果二者中任何一个或者全部参数丢失,那么应该使用默认值。

from socket import *

DefaultHOST = 'localhost'
DefaultPORT = 1236
BUFSIZ = 1024
def GetAddr():
    Host = raw_input("Please input host:")
    Port = raw_input("Please input port:")
    return Host, int(Port)

Host, Port = GetAddr()

if not Host:
    Host = DefaultHOST
if not Port:
    Port = DefaultPORT

ADDR = (Host, Port)

tcpCliSock = socket(AF_INET, SOCK_STREAM)
tcpCliSock.connect(ADDR)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值