前言:
学习一门编程语言,不会网络编程那就没有任何意义了。一般来说,网络编程也叫作socket编程。下面将要讲解python3中的socket模块。
函数使用:
第一,创建套接字(socket):socket.socket(family[,type[,proto]])
有三个参数:
- family: 套接字家族可以使AF_UNIX或者AF_INET
- type: 套接字类型可以根据是面向连接的还是非连接分为
SOCK_STREAM
或SOCK_DGRAM
- protocol: 一般不填默认为0
获取主机机名字:socket.gethostname()
获取IP地址:socket.gethostbyname(),把上面的返回值作为参数或者输入域名
gethostbyname_ex(name),它返回一个包含三个元素的元组,分别是给定地址的主要的主机名、同一IP地址的可选的主机名的一个列表、关于同一主机的同一接口的其它IP地址的一个列表(列表可能都是空的)。
gethostbyaddr():输入IP地址,返回域名以及IP地址
getservbyname():根据协议名返回端口
socket对象的方法:
服务器有三个方法:绑定(bind),监听(listen),接受(accept)
bind:两个参数,ip和端口
监听:可以设置监听数
客户端有一个方法:连接(connect):ip+端口
公共方法:接收,发送,关闭,获取IP地址和端口,超时设置,设置阻塞模式
接收有两种,一种是TCP(recv),一种是udp(recvfrom)
发送也有两种,一种是tcp(send<有可能发送的字节少了>和sendall<完整发送,如果不能完整发送则抛出异常>),一种是udp(sendto)
获取IP地址和端口:getsocketname(套接字自己的地址)和getpeername(远程地址)
超时设置:settimeout(设置),gettimeout(获取)
设置阻塞模式:setblocking(flag)--->flag为0 为非阻塞。
socket模块仅仅是基础模块:
以下列出了 Python 网络编程的一些重要模块:
协议 | 功能用处 | 端口号 | Python 模块 |
---|---|---|---|
HTTP | 网页访问 | 80 | httplib, urllib, xmlrpclib |
NNTP | 阅读和张贴新闻文章,俗称为"帖子" | 119 | nntplib |
FTP | 文件传输 | 20 | ftplib, urllib |
SMTP | 发送邮件 | 25 | smtplib |
POP3 | 接收邮件 | 110 | poplib |
IMAP4 | 获取邮件 | 143 | imaplib |
Telnet | 命令行 | 23 | telnetlib |
Gopher | 信息查找 | 70 | gopherlib, urllib |