一、socket()模块函数
要使用socket.socket()函数来创建套接字,其语法如下:
socket(socket_family,socket_type,protocol=0)
如上所述,scoket_family不是AF_UNIX就是AF_INET,scoket_type可以是SOCK_STREAM或SOCK_DGRAM,protocol一般不填,默认值为0.
创建一个TCP/IP套接字,你要这样调用socket.socket():
tcpsock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
同样的,创建一个UDP/IP的套接字,你要这样:
udpsock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
由于socket有太多属性,我们一般使用from import socket * 语句,将所有属性导入命名空间。
二、套接字对象内建方法
下面是一些套接字对象常用的方法。
函数 | 描述 |
s.bind() | 绑定地址(主机名、端口号对)到套接字 |
s.listen() | 开始TCP监听 |
s.accept() | 被动接受TCP客户端连接,(阻塞式)等待连接的到来 |
函数 | 描述 |
s.connect() | 主动初始化TCP服务器连接 |
s.connect_ex() | connect()函数的扩展版本,出错时返回出错码,而不是抛出异常 |
函数 | 描述 |
s.recv() | 接受TCP数据 |
s.send() | 发送TCP数据 |
s.sendall() | 完整发送TCP数据 |
s.recvfrom() | 接受UDP数据 |
s.sendto() | 发送UDP数据 |
s.getpeername() | 连接到当前套接字的远端地址(TCP连接) |
s.getsockname() | 当前套接字的地址 |
s.getsockopt() | 返回指定套接字的参数 |
s.setsockopt() | 设定指定套接字的参数 |
s.close() | 关闭套接字 |
函数 | 描述 |
s.settimeout() | 设置阻塞套接字操作的超时时间 |
s.gettimeout() | 得到阻塞套接字操作的超时时间 |
s.setblocking() | 设置套接字的阻塞与非阻塞模式 |
函数 | 描述 |
s.fileno() | 套接字的文件描述符 |
s.makefile() | 创建一个与该套接字关联的文件对象 |
提示:在运行网络应用程序时,最好在不同的电脑上执行服务器和客户端的程序。
时间: 2024-10-04 03:09:58