OSError: [Errno 22] Ошибка неверного аргумента с простым классом сервера - PullRequest
0 голосов
/ 09 марта 2020

У меня проблемы с этим очень очень простым серверным классом, который раньше запускал нечто очень похожее на это пару недель go, и он работал нормально, теперь я получаю эту ошибку:

root@kali:/tmp# python3 server.py                                                                                 
Traceback (most recent call last):
  File "server.py", line 38, in <module>
    accept_conns()
  File "server.py", line 24, in accept_conns
    conn, addr = s.accept()
  File "/usr/lib/python3.7/socket.py", line 212, in accept
    fd, addr = self._accept()
OSError: [Errno 22] Invalid argument

Код:

import socket
import os

def create_socket():
    global s
    try:
        s = socket.socket()

    except socket.error as create_err:
        print(create_err)


def bind_socket():
    global s
    try:
        s.bind(("192.168.0.120", 4444))

    except socket.error as bind_err:
        print(bind_err)


def accept_conns():
    global s
    conn, addr = s.accept()
    print("Connected to: " + addr)

    while True:
        comm = input("shell> ")
        if comm is 'quit':
            break
        conn.send(comm.encode())
        output = conn.recv(2048)
        print(output)


create_socket()
bind_socket()
accept_conns()

Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 10 марта 2020
import socket
import os

def create_socket():
    s = socket.socket()
    return s

def bind_socket(s):
    s.bind(("192.168.0.120", 4444))

def accept_conns(s):
    s.listen(1)
    conn, addr = s.accept()
    print("Connected to: ", addr)

    while True:
        comm = input("shell> ")
        if comm is 'quit':
            break
        conn.send(comm.encode())
        output = conn.recv(2048)
        print(output)

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