Python3-客户端/服务器身份验证-TCP网络

时间:2018-08-21 09:51:01

标签: c# python authentication networking

import socket
from _thread import *
import threading

print_lock = threading.Lock()

# thread fuction
def threaded(c):
    while True:

        # data received from client
        data = c.recv(1024)
        if not data:
            print('Bye')

            # lock released on exit
            print_lock.release()
            break

        # reverse the given string from client
       # data = data[::-1]
        decodeddata=data.decode("utf-8")
        print(decodeddata)

        if decodeddata.find("/login") != -1:
            sqlAuth()
        if decodeddata.find("/quit") != -1:
            c.close()
            print_lock.release()
        c.send(data)

    # connection closed
    c.close()


def sqlAuth():
    import pymysql


    conn = pymysql.connect(host='XXXX',port=XXXX, user='XXXX', passwd="XXXX!", db='XXXX')
    cur = conn.cursor()
    cur.execute("SELECT * from users")
    for response in cur:
        print("Username is: " + response[1])
        print("Password is: " +response[2])
        # (1, 'testuser', 'password')
    cur.close()
    conn.close()
def Main():
    host = ""

    # reverse a port on your computer
    # in our case it is 12345 but it
    # can be anything
    port = XXXX
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host, port))
    print("socket binded to post", port)

    # put the socket into listening mode
    s.listen(5)
    print("socket is listening")

    # a forever loop until client wants to exit
    while True:

        # establish connection with client
        c, addr = s.accept()

        # lock acquired by client
        print_lock.acquire()
        print('Connected to :', addr[0], ':', addr[1])

        # Start a new thread and return its identifier
        start_new_thread(threaded, (c,))
    s.close()


if __name__ == '__main__':

因此,我想做的是让服务器侦听端口,接受连接的用户(其C#客户端)-当用户键入/ login时,它将调用远程数据库并将用户信息拉回(此工作!)

因为即时通讯使用的是其他函数,所以sqlAuth-我不知道如何向用户发送响应消息。我是否需要创建连接类?

我有点困惑,将其用作Python学习项目。

谢谢!

0 个答案:

没有答案