Python网络编程
Socket:
Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。
Python提供了两个级别访问的网络服务:
- 低级别的网络服务支持基本的 Socket,提供了标准的 BSD Sockets API ,可以访问底层操作系统Socket接口的全部方法。
- 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。
socket()函数:
Python中,使用 socket() 函数来创建套接字
socket.socket(family,type,protocol)
参数
- family: 套接字家族可以使AF_UNIX(用于同一台机器进程间通信)或者AF_INET(用于Internet进程间通信)
- type: 套接字类型可以根据是面向连接的还是非连接分为
SOCK_STREAM
(流式套接字,主要用于TCP协议)
或SOCK_DGRAM
(数据报套接字,主要用于UDP协议)
- protocol: 一般不填默认为0.
若创建 socket 函数失败,会抛出一个 socket.error 的异常,最好捕获
以下为一个简单的C/S例子
#server.py import socket #导入socket模块 import sys try: s = socket.socket() #创建socket对象 except socket.error as msg: print('Failed to create socket. Error code: ' + str(msg[0]) + ' , Error message : ' + msg[1]) sys.exit(); host = socket.gethostname() #获取本地主机名 port = 12345 #设置端口 s.bind((host, port)) #绑定端口 localIP = socket.gethostbyname(socket.gethostname())#得到本地ip print ("local ip:%s "%localIP) s.listen(5) #等待客户端连接 while True: connection, addr = s.accept() #建立客户端连接 print('连接地址: ', addr) connection.send('welcome...'.encode()) print('Done!') connection.close() #关闭连接
#client.py import socket #导入socket模块 s = socket.socket() #创建socket对象 host = socket.gethostname() #获取本地主机名 port = 12345 s.connect((host, port)) data = s.recv(1024) print(data.decode()) s.close()
Socket对象方法: