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学习项目。
谢谢!