功能:接受远程计算机的连接请求,建立起与客户机之间的通信连接。服务器处于监听状态时,如果某时刻获得客户机的连接请求,此时并不是立即处理这个请求,而是将这个请求放在等待队列中,当系统空闲时再处理客户机的连接请求。
返回值:返回一个数组(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址
3)客户端函数
a)connect函数
格式:s.connect(address)
功能:用来请求连接远程服务器
参数:address为远程服务器地址, 格式为元组(hostname,port),如果连接出错,返回socket.error错误
b)connect_ex函数
格式:s.connect_ex(address)
备注:connect()函数的扩展版本,出错时返回出错码,而不是抛出异常
4)通用函数
a)recv函数
格式:s.recv(bufsize[,flag])
功能:接收远端主机传来的数据
参数:
bufsize : 指定要接收的数据大小
flag : 提供有关消息的其他信息,通常可以忽略
返回值:返回值为数据以字符串形式</code>
b)send函数
格式:s.send(string[,flag])
功能:发送数据给指定的远端主机
参数:
string : 要发送的字符串数据
flag : 提供有关消息的其他信息,通常可以忽略
返回值:返回值是要发送的字节数量,该数量可能小于string的字节大小。
c)sendall函数
格式:s.sendall(string[,flag])
功能:内部调用了send函数,完整发送TCP数据。将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。
参数:同send函数
返回值 : 成功返回None,失败则抛出异常。
d)close函数
格式:s.close()
功能:关闭套接字
e)recvfrom函数
格式:s.recvfrom(bufsize[.flag])
功能:与recv()类似,区别是返回值不同
返回值:返回一个数组(data,address),其中data是包含接收数据的字符串,address是发送数据的套接字地址。
f)sendto函数
格式:s.sendto(string[,flag],address)
功能:将数据发送到套接字
参数:
string : 要发送的字符串数据
flag : 提供有关消息的其他信息,通常可以忽略
address是形式为(ipaddr,port)的元组,指定远程地址
返回值:返回值是要发送的字节数量
备注:该函数主要用于UDP协议。
g)settimeout函数
格式:s.settimeout(timeout)
功能:设置套接字操作的超时期
参数:timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如 client 连接最多等待5s )
h)getpeername函数
格式:s.getpeername()
功能:获取连接套接字的远程地址
返回值:返回值通常是元组(ipaddr,port)。
i)getsockname函数
格式:s.getsockname()
功能:获取套接字自己的地址
返回值:通常是一个元组(ipaddr,port)
socket中常用的函数就上面这些了。先用上面这些函数尝试TCP协议下的socket通信。
服务器端代码如下: