Socket_python实现客户端和服务端通信

socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信。

客户端:

from socket import *# 1.创建套接字tcp_socket = socket(AF_INET,SOCK_STREAM)# 2.准备连接服务器,建立连接serve_ip = "127.0.0.1"serve_port = 8000# 连接服务器,建立连接,参数是元组形式tcp_socket.connect((serve_ip,serve_port))while True:# 准备需要传送的数据send_data = input("请输入内容:")tcp_socket.send(send_data.encode("gbk"))if send_data == "exit":break# 从服务器接收数据# 注意这个1024byte,大小根据需求自己设置from_server_msg = tcp_socket.recv(1024)# 加上.decode("gbk")可以解决乱码print(from_server_msg.decode("gbk"))#关闭连接tcp_socket.close()

服务端:

from socket import *import time#创建套接字tcp_server = socket(AF_INET,SOCK_STREAM)#绑定ip,port#如果为空ip默认本机address = ("127.0.0.1",8000)tcp_server.bind(address)# 启动被动连接#多少个客户端可以连接tcp_server.listen(128)#使用socket创建的套接字默认的属性是主动的#使用listen将其变为被动的,这样就可以接收别人的链接了clienct_socket,clienctAddr = tcp_server.accept()#client_socket用来为这个客户端服务,相当于的tcp_server套接字的代理#clientAddr存放的就是连接服务器的客户端地址while True:# 接收对方发送过来的数据# 接收1024个字节,这里recv接收的不再是元组,区别UDPfrom_client_msg = clienct_socket.recv(1024)if from_client_msg =="exit":breakprint("接收的数据:",from_client_msg.decode("gbk"))now_time = time.strftime("%y-%m-%d %H:%M:%S",time.localtime(time.time()))# 发送数据给客户端send_data = clienct_socket.send((str(now_time)+"客户端你好,服务器端收到").encode("gbk"))#关闭套接字#关闭为这个客户端服务的套接字,就意味着为不能再为这个客户端服务了#如果还需要服务,只能再次重新连clienct_socket.close()