tcp 循环服务
import socket
def main():
# 创建 socket
# 绑定
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server.bind(("", 8080))
# socket 转变为被动
tcp_server.listen(128)
while True:
# 产生专门为链接进来的客户端服务的 socket
print("堵塞-1")
server_client, client_addr = tcp_server.accept()
# 接收数据(来自客户端)
print(client_addr)
while True:
recv_msg = server_client.recv(1024)
if recv_msg:
print(recv_msg.decode("utf-8"))
else:
print("用户下线")
break
# 发送数据(发送到客户端)
server_client.send("谢谢".encode("utf-8"))
# 关闭套接字
server_client.close()
print("服务完毕")
tcp_server.close()
if __name__ == "__main__":
main()
下载器
import socket
def main():
# 创建 socket
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_client.bind(("", 8081))
# 链接服务器
tcp_client.connect(("192.168.0.178", 8080))
# 发送数据
send_data = input("请输入下载名称:")
tcp_client.send(send_data.encode("utf-8"))
# 接收数据
recv_msg = tcp_client.recv(1024) # 1024 bytes 1 kB
print(recv_msg)
# 保存数据
# 存在再创建
if recv_msg: # 服务器关闭解堵塞
with open("[测试]" + send_data, "wb") as f:
f.write(recv_msg)
# 关闭套接字
tcp_client.close()
if __name__ == "__main__":
main()
import socket
def main():
# 创建 socket
# 绑定
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server.bind(("192.168.0.178", 8080))
# socket 转变为被动
tcp_server.listen(128)
# 产生专门为链接进来的客户端服务的 socket
print("堵塞-1")
server_client, client_addr = tcp_server.accept()
# 接收数据(来自客户端)
print(client_addr)
recv_msg = server_client.recv(1024)
print(recv_msg.decode("utf-8"))
# 发送数据(发送到客户端)
file_name = recv_msg.decode("utf-8")
file_content = None
try:
f = open(file_name, "rb")
file_content = f.read()
f.close()
except Exception:
print("没有要下载的文件")
if file_content:
server_client.send(file_content)
# 关闭套接字
server_client.close()
tcp_server.close()
if __name__ == "__main__":
main()