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)