Python如何使用s将文件发送到不同的网络

2024-09-30 14:27:53 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好,老师,我正在学习使用socket的网络编程。我已经能够将文件从我的笔记本电脑传输到我的智能手机在一些网络使用公共ip。但是,如果我试图转移到其他手机在不同的网络它不工作,手机无法连接。 这是我的服务器.py:

import sys
import socket
import os

host = ''
skServer = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
skServer.bind((host,2525))
skServer.listen(10)
print ("Server Active")
bFileFound = 0

while True:
    Content,Address = skServer.accept()
    print (Address, "connected")
    FileName = Content.recv(8192)
    sFileName = FileName.decode('utf-8')

    for file in os.listdir("files/"):
        if file == sFileName:
            bFileFound = 1
            break

    if bFileFound == 0:
        print (sFileName+" Not Found On Server")


    else:
        print (sFileName," File Found")
        fUploadFile = open("files/"+sFileName,"rb+")
        sRead = fUploadFile.read(8192)
        while sRead:
            Content.sendall(sRead)
            sRead = fUploadFile.read(8192)
        print ("Sending Completed")


Content.close()
skServer.close()

这是我的客户.py:

import sys
import socket 

skClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
skClient.connect(("<ip public>",2525))

sFileName = input("Enter Filename to download from server : ")
sData = "Temp"

while True:
    skClient.sendall(sFileName.encode('utf-8'))
    sData = skClient.recv(8192)
    fDownloadFile = open("storage/emulated/0/qpython"+sFileName,"wb+")
    while sData:
        fDownloadFile.write(sData)
        sData = skClient.recv(8192)
    print ("Download Completed")

skClient.close()

有没有什么方法可以全局使用我的脚本,以便任何网络都可以访问它


Tags: import网络closesocketcontentprintwhilerecv
1条回答
网友
1楼 · 发布于 2024-09-30 14:27:53

可能吧。一些提供商限制某些类型的网络流量

您有几种选择,其中之一是两个设备都有一个公共VPN连接。这项技术将封装程序的通信量,因此程序应该按照您希望的方式工作

相关问题 更多 >