Мой сетевой скрипт автоматически закрывается, и мой серверный скрипт не передает socket.accept () Python - PullRequest
0 голосов
/ 11 июля 2020

По сути, я пытаюсь написать код, который позволит мне сделать многопользовательскую игру. Я слежу за технологом с видео Тима, но в моем серверном скрипте While l oop никогда не проходит строку

connection, address=s.accept()

, кстати, переменная s:

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

вот полный код, и любые предложения будут очень полезны

import socket
from _thread import *

server='192.168.1.14'
port=5555

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
    s.bind((server, port))
except socket.error as e:
    print(str(e))


s.listen(2)
print('waiting for a connection, server is open')



def ThreadCli(conn):
    print('hey')
    conn.send(str.encode('Connected'))
    reply=''
    while True:
        try:
            #if there are errors, increase the bytes(2048)
            data=conn.recv(2048) 
            reply=data.decode('utf-8')

            if not data:
                print('Disconnected')
                break
            else:
                print('Received:', reply)
                print('Sending:', reply)

            conn.sendalll(str.encode(reply))
        except:
            break

    print('Lost connection')
    conn.close()

while True:
    print('test to see if it enters the while loop')
    conn, addr=s.accept()
    print('test to see if the while loop passes the line above') #never gets printed
    
    print('Connected to:',addr)


    start_new_thread(ThreadCli,(conn))

В дополнение к этому, всякий раз, когда я пытаюсь запустить сетевой код для подключения к нему, код просто автоматически закрывается. Вот этот код на случай, если он как-то связан или в нем есть отдельная проблема:

#network
import socket

class Network:
    def __intit__(self):
        print('hi')
        self.client=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.server='192.168.1.14'
        self.port=5555
        self.addr=(self.server, self.port)
        self.id=self.connect()
        print(self.id)

    def connect(self):
        try:
            self.client.connect(self.addr)
            return self.client.recv(2048).decode()
        except:
            print('Could not connect')
n=Network()

1 Ответ

0 голосов
/ 13 июля 2020

Опечатка в классе Network def __intit__ -> def __init__. Я исправил это, и сценарий успешно печатает test to see if the while loop passes the line above (хотя позже вылетает ошибка TypeError), когда к нему подключается клиентский сценарий.

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