socket.error: [Errno 98] Адрес уже используется - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть этот код для подключения к серверу, и это файл fileServer.py на сервере, у меня есть другой файл py на клиенте, но я еще не тестировал, у меня возникла проблема при запуске этого кода, см. Информацию ниже

import socket
import threading
import os

def RetrFile(name, sock):
      filename = sock.recv(1024).decode()
      if os.path.isfile(filename):
          message = "EXISTS" + str(os.path.getsize(filename))
          sock.send(message.encode())
          userResponse = sock.recv(1024).decode()
          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("ERR")
    sock.close()

def Main():
    host = '192.168.0.91'
    port = 8069

    s = socket.socket()
    s.bind((host,port))

    s.listen(5)

    print('Server Started')

    while True:
       c, addr = s.accept()
       print ('Client connected ip: ' + str(addr))
       t = threading.Thread(target = RetrFile, args=('retrThread',c))
       t.start()
   s.close()

if __name__ == '__main__':
     Main()

И когда я запускаю его, он показывает ошибку, я думаю, что речь идет о сокете для соединения с IP-сервером, правильно?

File "fileServer.py", line 40, in <module>
Main()
File "fileServer.py", line 26, in Main
s.bind((host,port))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 98] Address already in use

Как я могу это исправить?Любое предложение?Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Ошибка не требует пояснений "Адрес уже используется" return getattr (self._sock, name) (* args) socket.error: [Errno 98] Адрес уже используется

@ KbiR уже объяснил это

Для окон проверьте это Как узнать, какой процесс прослушивает порт в Windows?

0 голосов
/ 13 декабря 2018

используйте эту команду - правильный sudo systemctl stop odoo11

если вы используете другую версию odoo, измените номер 11 для вашей версии

0 голосов
/ 22 ноября 2018

Я думаю, что вы пытаетесь запустить более одного сервера Odoo на одном и том же порту.

Попробуйте это на терминале:

 sudo netstat -nlp | grep 8069

, тогда вы увидите что-то вроде этого:

 tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      10869/python2    

Завершить процесс:

sudo kill -9 10869

ИЛИ

Изменить номер порта в fileServer.py.

Тогдапопробуйте запустить Odoo.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...