Я очень плохо знаком с Python и у меня есть основной вопрос: может ли клиентская сторона сетевого сокета получать данные?В моем вопросе клиент - это тот, кто инициирует соединение, что, вероятно, очевидно, но я хотел быть ясным.Я спрашиваю, потому что у меня есть другой сервер и клиент (оба python), который позволяет серверу получать файл от клиента.Это работает отлично, но я не могу получить пример, где клиент получает файл.Python постоянно говорит мне, что канал был разорван, и я подозреваю, что он существует, потому что на стороне клиента я использую строку data = mysocket.recv(1024)
.Я подозреваю, что клиент не видит никаких потоков данных и поэтому закрывает соединение с сервером.Сервер видит это как сломанную трубу.Сервер и клиент находятся ниже.
сервер:
#libraries to import
import socket
import os
import sys
import M2Crypto as m2c
#information about the server the size of the message being transferred
server_address = '10.1.1.2'
key_port = 8888
max_transfer_block = 1024
FILE = open("sPub.pem","r")
#socket for public key transfer
keysocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
keysocket.bind((server_address, key_port))
keysocket.listen(1)
while 1:
conn, client_addr = keysocket.accept()
print 'connected by', client_addr
#sends data to the client
data = FILE.read()
keysocket.sendall(data)
keysocket.close()
Клиент:
# the specified libraries
import socket
import M2Crypto as m2c
#file to be transferred
FILE = open("test.txt", "r")
#address of the server
server_addr = '10.1.1.2'
#port the server is listening on
dest_port = 8888
data = FILE.read()
#Creates a socket for the transfer
mysocket = socket.socket( socket.AF_INET, socket.SOCK_STREAM)
mysocket.connect( (server_addr, dest_port) )
data = mysocket.recv(1024)
print data
#creates a new file to store the msg
name = "serverPubKey.pem"
#opens the new file and writes the msg to it
FILE = open (name, "w")
FILE.write(data)
#closes the socket.
mysocket.close()
Буду признателен за любую помощь по данному вопросуСпасибо!