Python网络编程_TCP(简略版),,TCP监听套接字:
Python网络编程_TCP(简略版),,TCP监听套接字:
TCP监听套接字:
当新的客户端请求连接时,服务器端监听套接字收到消息,会分配一个新的套接字对应于客户端,用于接收客户端的消息,
但是当服务器端要回传消息时,使用的仍是监听套接字
1 #tcp客户端 2 import socket 3 4 def cilent(): 5 #1.创建TCP套接字 6 # socket.AF_INET:IPV4 socket.SOCK_STREAM:TCP 7 socket_tcp_cilent=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 8 9 #客户端一般不绑定(bind)ip和port10 #2.连接服务器11 server_ip=‘192.168.1.103‘12 server_port=556613 server_addr=(server_ip,server_port)14 socket_tcp_cilent.connect(server_addr)15 16 while True:17 #3.发送数据/接收数据18 send_data=input("请输入要发送的数据: ")19 if send_data==‘exit‘:20 print("客户端关闭!")21 break22 socket_tcp_cilent.send(send_data.encode(‘utf-8‘)) 23 recv_data,recv_ip_port=socket_tcp_cilent.recvfrom(1024)24 print("服务器端回送的消息%s"%(recv_data.decode(‘gbk‘)))25 26 #4.关闭TCP连接27 socket_tcp_cilent.close()28 29 30 if __name__==‘__main__‘:31 cilent()
1 #TCP服务器端 2 import socket 3 4 def server(): 5 num=1 6 #1.创建套接字 7 socket_tcp_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 8 9 #2.绑定本地信息 bind(ip,port)10 server_ip=‘‘11 server_port=556612 server_addr=(server_ip,server_port)13 socket_tcp_server.bind(server_addr)14 15 #3.让默认的套接字由主动变为被动 listen16 socket_tcp_server.listen(128)17 #监听套接字:负责等待新的各个客户端进行连接18 19 #4.等待客户端的连接 accept20 # 程序执行的到这里默认阻塞,当客户端连接服务端时,解阻塞21 # accept 返回一个二元元组,第一个是新的套接字,第二个是客户端22 # accept 负责产生新的套接字为客户端服务23 while True:24 print(‘等待一个新的客户端的到来...‘)25 new_cilent_socket,cilent_addr=socket_tcp_server.accept() 26 print(‘一个新的客户端已经到来%s‘%str(cilent_addr))27 while True: #循坏多次,为同一个客户端服务多次28 #使用新分配的套接字,接收客户端发送过来的请求29 #如果recv阻塞,两种方式解阻塞:30 #1.客户端发送过来数据31 #2.客户端调用close导致32 try:33 recv_data=new_cilent_socket.recv(1024) #接收到普通数据34 except:35 break36 #print(new_cilent_socket)37 print(‘客户端发送过来的请求是:%s‘%recv_data.decode(‘utf-8‘))38 #如果客户机不需要服务了,当客户端socket.close()执行时,服务器套接字的消息会为空(recv解阻塞)39 #回送部分数据给客户端40 new_cilent_socket.send(‘-------ok-------‘.encode(‘utf-8‘))41 #关闭套接字42 new_cilent_socket.close()43 print(‘%d号客户机已经服务完毕!‘%num)44 num+=145 #关闭套接字 46 socket_tcp_server.close()47 48 if __name__==‘__main__‘:49 server()
Python网络编程_TCP(简略版)
评论关闭