сервер закрывается после второго подключения, и мне нужно, чтобы он оставался открытым - PullRequest
0 голосов
/ 06 апреля 2020

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

import mysql.connector
import socket

userinfo=[]

def server_program():
    # get the hostname
    host = socket.gethostname()
    port = 5000  # initiate port no above 1024

    server_socket = socket.socket()  # get instance
    # look closely. The bind() function takes tuple as argument
    server_socket.bind((host, port))  # bind host address and port together

    # configure how many client the server can listen simultaneously
    server_socket.listen(1)
    conn, address = server_socket.accept()  # accept new connection
    print("Connection from: " + str(address))
    while True:
        # receive data stream. it won't accept data packet greater than 1024 bytes
        data = conn.recv(1024).decode()
        if not data:
            # if data is not received break
            break
        print("from connected user: " + str(data))
        username = data
        userinfo.append(username)
        print(userinfo)
        # print(username)
        data = "s"
        conn.send(data.encode())  # send data to the client

    # conn.close()  # close the connection

    print(userinfo[0])


    mydb = mysql.connector.connect(
    host="",
    user="",
    passwd="",
    database=""
    )

    mycursor = mydb.cursor()

    email=userinfo[0]
    password=userinfo[1]
    Username=userinfo[2]

    sql = "INSERT INTO Users (Pass, Email, Username) VALUES (%s, %s, %s)"
    val = (password, email, Username)
    mycursor.execute(sql, val)

    mydb.commit()

    print(mycursor.rowcount, "record inserted.")
    del userinfo[:]
server_program()





if __name__ == '__main__':
    server_program()

код клиента:

import socket
email=""
password=""
Username=""

def client_program():
    host = socket.gethostname()  # as both code is running on same pc
    port = 5000  # socket server port number

    client_socket = socket.socket()  # instantiate
    client_socket.connect((host, port))  # connect to the server

    message = email
    i=0
    while i != 3:
        client_socket.send(message.encode())  # send message

        data = client_socket.recv(1024).decode()  # receive response

        print('Received from server: ' + data)  # show in terminal

        # message = input(" -> ")  # again take input
        message = password
        # message1 = "password"
        i=i+1
        if i == 2:
            message = Username
    client_socket.close()  # close the connection


if __name__ == '__main__':
    client_program()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...