tcp严格区分客户端和服务器,udp则没有,tcp需要通过三次握手四次挥手来保证数据传输的安全性,而udp没有
1 import socket 2 3 def main(): 4 '''客户端''' 5 # 1、创建套接字 6 tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 8 # 2、连接服务器 9 server_ip = input('请输入你要连接服务器的IP:') 10 server_port = int(input('请输入你链接服务器的端口:')) 11 server_addr = (server_ip, server_port) 12 tcp_client_socket.connect(server_addr) 13 14 # 3、发送/接收数据 15 send_data = input('请输入你要发送的信息:') 16 tcp_client_socket.send(send_data.encode('gbk')) 17 print(tcp_client_socket.recvfrom(1024)) 18 19 # 4、关闭套接字 20 tcp_client_socket.close() 21 22 23 if __name__ == '__main__': 24 main()
1 import socket 2 3 def main(): 4 '''服务器''' 5 # 1、创建套接字 6 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 8 # 2、绑定本地信息 9 tcp_server_socket.bind(('192.168.0.106',7878)) 10 11 # 3、让默认的套接字有主动变成被动 12 tcp_server_socket.listen(128) 13 14 # 128是指最大运行客户端的链接数 15 while True: 16 # 4、等待客户端的连接 17 new_client_socket, client_addr = tcp_server_socket.accept() 18 # 服务器处于阻塞状态,等待客户端连接 19 while True: 20 # 5、接收客户端发送过来的请求 21 recv_data = new_client_socket.recv(1024) 22 23 # 如果客户端执行了close()操作,那么会返回空字符串 24 if recv_data: 25 print(recv_data.decode('gbk')) 26 else: 27 break 28 # 6、回送一部分数据给客户端,即响应客户端 29 # new_client_socket.send('4444'.encode('gbk')) 30 31 # 关闭套接字 32 new_client_socket.close() 33 break 34 tcp_server_socket.close() 35 36 37 if __name__ == '__main__': 38 main()