赞
踩
需要服务的一方,例如我们用浏览器上个,浏览器帮助我们向远程的一台电脑发送请求接收数据,以及展示效果等,此时浏览器就是客户端。
当收到数据后需要给对方发送确认消息,但那时操作系统做的事情,编写的代码不需要确认,只管收发数据即可。
import socket # 1初始化套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2建立链接 要传入链接的服务器ip和port tcp_socket.connect(('xxx.xxx.xxx.x', xxxxx)) while True: text = input('发送的数据') # 3发数据 tcp_socket.send(text.encode('gbk')) # 4接收数据 data = tcp_socket.recv(1024) print(data.decode('gbk')) # 5断开 tcp_socket.close()
逻辑顺序:
为其他的TCP程序提供服务的程序,称之为TCP服务器。
import socket # 1 初始化套接字 tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置地址可以复用,解决了 端口没有及时释放地问题 tcp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) # 2 服务器半丁ip和port tcp_socket.bind(('xxx.xxx.xxx.x', xxxxx)) # 3 设置为被动监听模式 最大并发接收的数量是 128 tcp_socket.listen(128) while True: # 4 等待接收链接请求 接收到一个元组(客户端的socket对象,(客户端的地址, 端口)) client, addr = tcp_socket.accept() print('client:', client) print('addr:', addr) while True: data = client.recv(1024) print(data.decode('gbk')) if not data: # 如果数据为空 说明客户端关闭了链接 这里的client也就可以关闭 client.close() break # 5 断开 tcp_socket.close()
逻辑顺序:
import socket # 1. 创建TCP套接字 server_s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2. 绑定本地信息 server_s.bind(("", 7788)) # 3. 设置为被动的 server_s.listen(128) while True: print("等待新的顾客到来...") # 4. 等待客户端链接 new_s, client_info = server_s.accept() print("一个新的顾客链接成功,ta是:%s" % str(client_info)) # 5. 用新的套接字为已经连接好的客户端服务器 while True: recv_content = new_s.recv(1024) print("%s>>>%s" % (str(client_info), recv_content.decode("gbk"))) if not recv_content: # 当客户端调用了close后,recv返回值为空,此时服务套接字就可以close了 # 6. 关闭服务套接字 new_s.close() break print("顾客:%s已离开\n" % str(client_info)) # 7. 关闭监听套接字 server_s.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。