Socket
程序员文章站
2022-03-20 15:25:14
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现, ......
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。
socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭)
socket和file的区别:
- file模块是针对某个指定文件进行【打开】【读写】【关闭】
- socket模块是针对 服务器端 和 客户端Socket 进行【打开】【读写】【关闭】
1 # coding:utf-8 2 __author__="dzh" 3 import socket 4 #服务端地址 5 ip=("0.0.0.0",9998) 6 #生成socket实例 7 sk=socket.socket() 8 #实例绑定地址 9 sk.bind(ip) 10 #设置监听数,即设置最多能有多少个客户端连接进来 11 sk.listen(5) 12 while True: 13 #开始监听,当没有客户端连接进来,一直阻塞在这。accept()返回两个值:conn:接到客户端的连接请求产生的一个专门响应该客户端的实例;addr:客户端地址[host,port] 14 conn,addr=sk.accept() 15 while True: 16 #若客户端若断开,会导致服务端报错(ConnectionResetErro),所以在这用异常处理机制 17 try: 18 #接受客户端的消息 19 client_message=conn.recv(1024) 20 except ConnectionResetError: 21 break 22 else: 23 print(client_message.decode()) 24 #响应客户端 25 server_response=input("请输入响应信息:") 26 conn.send(bytes("server:%s"%server_response,encoding='utf-8'))
1 import socket 2 ip=("localhost",9998) 3 sk=socket.socket() 4 #通过服务端地址连接到服务端 5 sk.connect(ip) 6 while True: 7 cmd=input("请输:") 8 #如果服务端接收不到数据,会一直阻塞 9 if not cmd: 10 pass 11 else: 12 sk.send(bytes('client:%s'%cmd,encoding="utf-8")) 13 b=sk.recv(1024) 14 print(b.decode())