1.创建socket 2.链接服务器 3.接收数据 4.关闭套接字 上代码
import socket def main(): #1.创建套接字 tcp_client=socket.socket(family=socket.AF_INET,type=socket.SOCK_STREAM) #2.连接服务器 sever_ip=input("sever ip:") sever_port=int(input("sever port:")) tcp_client.connect((sever_ip,sever_port)) #3.发送数据 send_data=input("发送到数据:") tcp_client.send((send_data.encode())) #4.接收服务器端发过来的数据 阻塞,等待服务器发送数据 recv_data=tcp_client.recv(1024)# 最大接收1024 print(recv_data.decode("gbk"))#windows环境下,gbk 如果使用utf8会报错 #5.关闭套接字 tcp_client.close() if __name__ == '__main__': main()1.socket创建套接字 2.bind绑定IP和port 3.listen使套接字变为可以被动链接 4.accept等待客户端的链接 5.recv/send接收发送数据 上代码
import socket def main(): tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) tcp_server.bind(("192.168.20.216", 7890)) tcp_server.listen(128) new_client_socket, client_addr = tcp_server.accept() recv_data = new_client_socket.recv(1024) print(recv_data.decode("gbk")) send_data = input("请输入你要发送给client的信息:") new_client_socket.send(send_data.encode("gbk")) if __name__ == '__main__': main()需求:实现TCP服务端为多个客户端服务, 此程序需要注意的是(当一个客户端的服务结束之后就会自动断开,为等待的一个客户端服务),只能服务一次,无法多次为一个客户端服务
import socket def main(): tcp_server=socket.socket(socket.AF_INET,type=socket.SOCK_STREAM) tcp_server.bind(("192.168.0.4",7890)) while True: tcp_server.listen(128) new_socket, client_addr = tcp_server.accept() print(client_addr) """ 1.允许多个客户端 连接 2.允许为客户端多次服务的 3.但是 当前 只允许 为一个客户端 进行多次服务 (多线程) """ while True: recv_data = new_socket.recv(1024) print(recv_data) if recv_data.decode("gbk"): send_data = "hello" new_socket.send(send_data.encode("gbk")) else: break # 跳出循环 if recv_data.decode("gbk"): send_data = "hello" new_socket.send(send_data.encode("gbk")) else: break # 跳出循环 # 关闭连接 new_socket.close() tcp_server.close() if __name__ == '__main__': main()