
import socket def main(): # 1. 创建套接字 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 绑定本地信息 tcp_server_socket.bind(('', 7890)) # 3. 让默认的套接字变成由主动变为被动的 tcp_server_socket.listen(128) # 4. 等待客户端的链接(accept) new_tcp_socket, client_addr = tcp_server_socket.accept() # 5. 接收数据 recv_data = new_tcp_socket.recv(1024) print(recv_data) # 回复(附加) new_tcp_socket.send('谢谢'.encode('utf-8')) # 关闭 new_tcp_socket.close() tcp_server_socket.close() if __name__ == '__main__': main()

原理拓展图

所以在第4步的时间,我们可以把他拆分成套接字与客户端的addr信息

为多个客户端

import socket def main(): # 1. 创建套接字 tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 绑定本地信息 tcp_server_socket.bind(('', 7890)) # 3. 让默认的套接字变成由主动变为被动的 tcp_server_socket.listen(128) while True: print('等一个新的用户的到来。。。') # 4. 等待客户端的链接(accept) new_tcp_socket, client_addr = tcp_server_socket.accept() print('一个新的用户--->%s已经到来。。。' % str(client_addr)) # 循环同一个用户 while True: # 5. 接收数据 recv_data = new_tcp_socket.recv(1024) print(recv_data.decode('utf-8')) if recv_data: new_tcp_socket.send('哈哈....ok') else: break # 关闭(先结束新new_socket,然后再结束。具体原理看上面的拓展图) new_tcp_socket.close() tcp_server_socket.close() if __name__ == '__main__': main()
sendto:udp
send:tcp
recv,只有数据。
recvfrom,有数据,且有客户端信息
浙公网安备 33010602011771号