Python网络编程之socket模块基础实例(2)

  功能:接受远程计算机的连接请求,建立起与客户机之间的通信连接。服务器处于监听状态时,如果某时刻获得客户机的连接请求,此时并不是立即处理这个请求,而是将这个请求放在等待队列中,当系统空闲时再处理客户机的连接请求。

  返回值:返回一个数组(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通信。

服务器端代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8904f81d5361dda2d2ad3418a39a94b9.html