модуль "сокет" не имеет атрибута "getsockname" - PullRequest
0 голосов
/ 29 октября 2018

Это простой файл файлового сервера, использующий сокеты TCP, когда я запускаю это, я получаю следующую ошибку. Может кто-нибудь сказать мне решение этой

import socket               # Import socket module

s = socket.socket()         # Create a socket object
host = socket.gethostname() # Get local machine name
port = socket.getsockname() # Reserve a port for your service.
block_size = 1024           #file is divided into 1kb size

s.bind((host, port))        # Bind to the port
#f = open('paris.png','wb')
s.listen(5)                 # Now wait for client connection.
while True:
    c, addr = s.accept()     # Establish connection with client.
    print('Got connection from', addr)
    print("Receiving...")
    l = c.recv(block_size)
    while (l):
        print("Receiving...")
        l = c.recv(block_size)
    #f.close()
    print("Done Receiving")
    mssg = 'Thank You For Connecting'
    c.send(mssg.encode())
    c.close()                # Close the connection


Traceback (most recent call last):
File "C:\Users\Hp\Documents\Python  codes\file_transfer_simple_server.py",line 5, in <module>
port = socket.getsockname() # Reserve a port for your service.
AttributeError: module 'socket' has no attribute 'getsockname'

1 Ответ

0 голосов
/ 29 октября 2018

Как отметил @Mark Tolonen в комментарии, вы звонили getsockname() на модуль сокета. getsockname - это метод для экземпляра сокета s

import socket               

s = socket.socket()         
s.bind(('localhost',12345))
host, port = s.getsockname() # unpack tuple
block_size = 1024           

print(port)
# output
12345
...