客户端:
# 1.引入socket 包
import socket
if __name__ == '__main__':
# 2.创建socket 套接字
# AF_INET表示 tcp的传输类型
# AF_INET:IPV4, AF_INET6:IPV6
tcp_socket_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 3.和套接字建立连接
tcp_socket_client.connect(("你的服务端IP地址",9090)) # 端口号可以自定义
# 4. 发送数据到服务器端
send_content = '发送socket请求到服务器端~~~'
# 设置有utf-8,否则汉字会出现乱码
send_data = send_content.encode("utf-8")
tcp_socket_client.send(send_data)
# 5. 接受服务端数据
rec_data = tcp_socket_client.recv(1024) # 1024 接受字节大小
rec_content = rec_data.decode("utf-8")
print('接收到的服务器端数据:', rec_content)
# 6. 关闭套接字
tcp_socket_client.close()
服务器端:
# 1.引入socket 包
import socket
import threading
def handle_client_request(new_client,ip_port) :
print('客户端来自哪里:',ip_port)
while True:
# 6.接受数据
rec_data = new_client.recv(1024)
if rec_data:
print('接收到的数据为:', rec_data.decode("utf-8"))
# 7.发送数据
send_content = '数据处理中...' + rec_data.decode('utf-8')
new_client.send(send_content.encode("utf-8"))
else:
print('客户端下线啦~~',ip_port)
break
# 8.关闭套接字
new_client.close()
if __name__ == '__main__':
# 2. 创建socket 套接字
tcp_socket_serve = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 设置端口复用,否则接口会被占用,造成重启无法使用本接口
tcp_socket_serve.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 3. 绑定端口号
tcp_socket_serve.bind(("",9090))
# 4.创建监听
tcp_socket_serve.listen(128)
# 5.等待客户端的链接请求,启动多线程,允许多客户端的链接
while True:
new_client,ip_port = tcp_socket_serve.accept()
print(new_client,ip_port)
sub_thread = threading.Thread(target=handle_client_request,args=(new_client,ip_port),daemon=True)
# 主线程守护(第二种方法)
# sub_thread.setDaemon(True)
sub_thread.start()
# 关闭socket
tcp_socket_serve.close()
ps:建议配合 “网络调试助手” 进行调试,或多系统间运行代码进行调试