标签:std 根目录 服务 设计 tcp red 简单 exception 分时
什么是socket
Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
基于网络类型的套接字家族
套接字家族的名字:AF_INET
(还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET)
代码示例:
服务端
import socket import os import pickle #创建一个socket对象 s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) #绑定服务端程序的IP地址和端口号 s.bind((‘127.0.0.1‘,7895)) #开始TCP监听 s.listen(5)#设置半连接池的大小 #被动接受TCP客户的连接,等待连接的到来 while True: con, add = s.accept() # print(‘等待客户端接入‘) # 打印客户端的连接信息 print(add) while True: try: # 接收客户端发送的数据 data = int(con.recv(1024)) print(data) # 打印数据 if data == 1: res = os.listdir(os.chdir(‘c:\\‘)) #将列表转换为二进制 res = pickle.dumps(res) con.send(res) elif data == 2: res = os.getcwd() res = pickle.dumps(res) con.send(res) except Exception: break con.close() s.close()
import socket import pickle # from socket import * s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect((‘127.0.0.1‘,7895)) msg = ‘‘‘ 请输入操作序号: 1.打印C盘根目录下的文件 2.打印当前路径 ‘‘‘ print(msg) while True: str = input(‘>>>:‘) #若输入为空,则重新输入 if not str:continue s.send(str.encode(‘utf-8‘)) data = s.recv(1024) #反序列化 res = pickle.loads(data) print(res) s.close()
标签:std 根目录 服务 设计 tcp red 简单 exception 分时
原文地址:http://www.cnblogs.com/liuyinzhou/p/7966740.html