python-socket连接
安装依赖
sudo pip3 install adsocket -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
https://blog.csdn.net/qq_38039965/article/details/127098835
服务端代码
import socket
# 生成一个服务端
server = socket.socket()
# 绑定要监控的界面
server.bind(("localhost", 6964))
# 监听
server.listen()
print("我要开始等电话了!")
while True:
# 获取进来的对象是谁(conn),cnn为后数据传输通道,adr为ip地址
conn, adr = server.accept()
print(conn,adr)
while True:
# 接收数据,接收数据量为1024
data = conn.recv(1024)
print("接收:", data.decode("utf-8"))
if not data:
print("host is lost")
break
#默认接收客户端过来的数据为bytes格式
# conn.send(data)
# 自定义的发送消息的话要转码
conn.send("收到".encode("utf-8"))
server.close()
客户端代码
import socket
client = socket.socket()
client.connect(('localhost', 6964))
while True:
msg = input(">>:")
if len(msg) == 0: continue
client.send(msg.encode("utf-8"))
data = client.recv(1024)
print("数据:", data.decode("utf-8"))
client.close()
多线程服务端代码
import socketserver
# 定义一个类,该类必须继承socketserver下的BaseRequestHandler类
class MyServer(socketserver.BaseRequestHandler):
def handle(self): # 必须定义一个handle方法
print('conn is ', self.request) # self.request是获取的链接,相当于conn
print('addr is ', self.client_address) # self.client_address则是获取的地址,相当于addr
# 循环收发消息
while True:
try: # 异常处理
# 收消息
data = self.request.recv(1024) # 1024字节
if not data: continue # 如果是空就重新输入
print('客户端发来的消息是:', data.decode('utf-8'), '\n')
# 发消息
self.request.sendall(data.upper()) # 将受到的数据转化为大写后发回客户端
except Exception as e:
print(e) # 打印错误
break
if __name__ == '__main__':
host, port = 'localhost', 6969
# 再将这样的功能实例化成一个对象sever
# 第一个参数为服务端的ip地址,用元组传进;第二个参数是刚刚定义的那个类
sever = socketserver.TCPServer((host, port), MyServer)
sever.serve_forever() # 永远,就是通信循环(链接循环)
这个搞健康本机的性能

浙公网安备 33010602011771号