Сервер сокетов на Ubuntu не может быть подключен - PullRequest
0 голосов
/ 21 декабря 2018

код сокета-сервера и код сокета-клиента могут отлично работать на моем локальном хосте, но когда я запускаю код сокета-сервера на сервере Ubuntu, код сокета-клиента на моем локальном хосте не может подключитьсяк серверу Ubuntu. И код сокет-клиента на сервере Ubuntu не может подключиться к моему локальному серверу.

socket-server.py

import socket
import threading

def bbs(conn):
    user_list.append(conn)
    try:
        while 1:
            msg = conn.recv(1024)
            if msg:
                for user in user_list:
                    user.send(msg)
    except ConnectionResetError:
        user_list.remove(conn)
        conn.close()

user_list = []
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 18000))
server.listen()
while 1:
    conn, addr = server.accept()
    t = threading.Thread(target=bbs, args=(conn,))
    t.start()

socket-client.py

import socket
import threading
import time


def send_msg():
    while 1:
        msg = input()
        client.send((name + ':' + msg).encode('utf-8'))


def recv_msg():
    while 1:
        msg = client.recv(1024)
        if msg:
            try:
                print(msg.decode('utf-8'))
                time.sleep(1)
            except UnicodeDecodeError:
                pass

name = input('请输入你的昵称:')
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('10.26.8.132', 18000))
sendmsg_thread = threading.Thread(target=send_msg)
recvmsg_thread = threading.Thread(target=recv_msg)
sendmsg_thread.start()
recvmsg_thread.start()

Сервер всегда ожидает подключения, Клиент сообщает об ошибке:

TimeoutError: [WinError 10060] The connection attempt failed because the connecting party did not respond correctly after a period of time or because the connecting host did not respond.

1 Ответ

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

Wang, если это работает без проблем на вашем локальном хосте, но не через сетевое соединение, это может быть проблемой брандмауэра как на клиенте, так и на сервере.Вы можете использовать 'nc' (netcat) для проверки соединения клиента с сервером.

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