Python3-socket模块-低级网络接口
Python3中的socket模块提供了对访问套接字(socket)的接口
socket可以理解为是一个管道,通过这个管道可以使两个不同的程序通过网络进行通信,在Python中的scoket()函数可以返回socket对象,这个对象的方法实现了不同的套接字系统调用
服务端:
1.使用socket()函数返回一个socket对象 sk_server
2.将sk_server绑定到socket协议簇中的一个协议,例如: socket.AF_INET(IPv4),IPv4也是socket默认的协议
3.开启服务监听客户端的连接请求
4.接受连接
5.收发数据
6.关闭连接
客户端:
1.使用socket()函数返回一个socket对象 sk_client
2.发送连接请求到 sk_server
3.收发消息
4.关闭连接
import socket HOST = "127.0.0.1" # IP地址 PORT = 55555 # 端口号 with socket.socket() as sk_server: sk_server.bind((HOST, PORT,)) # 将socket绑定到IP地址和端口号 sk_server.listen(3) # 启用服务以监听连接,参数是一个数字,表示最大连接数 while True: conn, address = sk_server.accept() # 接收一个连接,返回的是一个元组 with conn: while True: try: data = conn.recv(1024) # 接受这个连接发送过来的数据 print(str(data, "utf-8")) # 展示数据 conn.send(bytes("got it!", "utf-8")) # 向这个连接发送响应消息 # if not data: # Linux recv()无数据则为空 # break except WindowsError as ex: # Windows recv()无数据则抛异常 # print(ex) break
import socket HOST = "127.0.0.1" # 远程地址,因为是一台机器上测试,都写的本机 PORT = 55555 while True: with socket.socket() as sk_client: sk_client.connect((HOST, PORT, )) # 连接服务器端的socket cont = input(">>>") sk_client.send(bytes(cont, "utf-8")) # 发送数据 response = sk_client.recv(1024) # 接受数据 print(str(response, "utf-8"))
参考资料
http://python.usyiyi.cn/translate/python_352/library/socket.html
posted on 2017-04-13 10:47 AustralGeek 阅读(1413) 评论(0) 编辑 收藏 举报