Python黑帽进阶之路03|TCP服务端
TCP服务端
import socket import threading server_ip = '0.0.0.0' #服务端ip,本地客户端可访问127.0.0.1 server_port = 9999 #开放的端口 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #新建socket,发现服务端与客户端都是有socket对象生成的 server.bind((server_ip,server_port)) #socket建立服务端 listen_num = 5 #设置最大连接数 server.listen(listen_num) #服务端开启监听状态 print('客户端已开启,最大连接数为%d,请访问 %s:%d' % (listen_num,server_ip,server_port)) def handel_client(client_socket): #构造多线程函数,用于打印客户端内容与回复 request = client_socket.recv(1024) #接收客户端发送的信息 print('接收到内容:%s' % request) #打印接收的信息 client_socket.send('朕知!'.encode()) #向客户端返回信息 client_socket.close() #关闭与客户端的连接 while True: #一直保持服务端运行 client , addr = server.accept() #这里服务端开始接收客户端的连接对象 print('有新的连接:%s:%d'%(addr[0],addr[1])) client_header = threading.Thread(target=handel_client,args=(client,)) #将新连接的客户端放到多线程函数中构造一个新对象 client_header.start() #执行线程任务(显示内容与响应)
这里可以拿我们前面的TCP客户端与其通信,本地连接地址:127.0.0.1,端口号为9999。TCP客户端与服务器本质上都是socket对象,服务器端用到了bind()函数来新建服务。
服务器:
客户端已开启,最大连接数为5,请访问 0.0.0.0:9999
有新的连接:127.0.0.1:58493
接收到内容:b'GET / HTTP/1.1 Host:baidu.com'
TCP客户端接收到的响应内容:
b'\xe6\x9c\x95\xe7\x9f\xa5\xef\xbc\x81'