欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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 进行【打开】【读写】【关闭】

                                         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'))
socket_server
Socket
 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())
socket_client