Привет, я сделал это приложение для файлового сервера, открыл сервер на одном ноутбуке и открыл клиентскую программу на другом ноутбуке, но не смог подключиться к серверу.оба ноутбука подключены к одному и тому же Wi-Fi, поэтому он не должен работать?и если я открою сервер и клиентскую программу на одном ноутбуке, клиент сможет подключиться к серверу.
вот мой код
Сервер
import threading
import os
import socket
def RetrFile(name, sock):
filename = str(sock.recv(1024), 'utf-8')
print(filename)
if os.path.isfile(filename):
sock.send(bytes("EXISTS" + str(os.path.getsize(filename)), 'utf-8'))
userResponse = str(sock.recv(1024), 'utf-8')
if userResponse[:2] == 'Ok':
with open(filename, 'rb') as f:
bytesToSend = f.read(1024)
sock.send(bytesToSend)
while bytesToSend != "":
bytesToSend=f.read(1024)
sock.send(bytesToSend)
else:
sock.send(bytes("ERR", 'utf-8'))
sock.close()
def Main():
host = socket.gethostbyname("localhost")
port = 5123
s = socket.socket()
s.bind(('0.0.0.0', port))
s.listen(5)
print("Server started")
while True:
c, addr = s.accept()
print("Client connected" + str(addr))
t = threading.Thread(target=RetrFile, args=("rthread", c))
t.start()
s.close()
Main()
Клиент
import socket
def Main():
host = socket.gethostbyname("localhost")
port = 5123
s= socket.socket()
s.connect((host, port))
filename = input("Filename? ->")
if filename != 'q':
s.send(bytes(filename,'utf-8'))
data=str(s.recv(1024),'utf-8')
if data[:6] == 'EXISTS':
filesze = data[6:]
message = input("File Exists" + filesze + "(Y/N)")
if message == 'Y':
s.send(bytes("Ok",'utf-8'))
f = open('new_'+filename, 'wb')
data = s.recv(1024)
total = len(data)
f.write(data)
while total < int(filesze):
data = s.recv(1024)
total+= len(data)
f.write(data)
print('%.2f' %((total/int(filesze)*100)), " percentage complted ")
print("Download Complete")
else:
print("doesnt exist")
s.close()
Main()