Подключить сервер sql к Python3 - клиент-сервер - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в программировании сокетов с python Я написал код для клиента и сервера, который не завершен. Я хочу подключить свою серверную часть к Sql серверным dbms для хранения данных там (это система управления студентами). Я хочу отправить некоторые данные со стороны клиента, а затем на стороне сервера сохранить их в базе данных, и когда клиент попросит вернуть их . Вот мои коды с обеих сторон: это клиент:

    import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host ="127.0.0.1"
port =8000


def send(message):
   message=str(message)
   s.send(message.encode())
   data = s.recv(1024).decode()
   print (data)
def end():
   s.close ()
def menu1():
   print("Data has been saved to DB!\nWhat you need next?\n1.Close Connection.\n2.Enter More Data.\n3.Get Data.")
   while 1:
      m=input()
      if int(m)==1:
         end()
      elif int(m)==2:
         enter_data()
      elif int(m)==3:
         get_data()
      else:
         print("Choose a Num between 1-3!\n")

def enter_data():
   flag=0
   while 1:
      if flag==0:
         r = input('enter amount of student: ')
      for i in range (0,int(r)):
         name=input("Enter Student %d name"%(i))
         send(name)
      break
   menu1()
def start():
   s.connect((host,port))
   print("You are connected to server!")
   print("1.Enter Data")
   print("2.Get Data")
   m=input()
   if int(m)==1:
      enter_data()
   elif int(m)==2:
      end()
def menu():
   m = input("press any key to connect!\n");
   start()

if __name__ == "__main__":
   menu()

, а это код на стороне сервера:

import socket
from threading import *

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = ""
port = 8000
#print (host)
#print (port)
serversocket.bind((host, port))

class client(Thread):
    def __init__(self, socket, address):
        Thread.__init__(self)
        self.sock = socket
        self.addr = address
        self.start()

    def run(self):
        #amount=self.sock.recv(1024).decode()
        #amount=int(amount)
        #counter=0
        while 1:
            api=self.sock.recv(1024).decode()
            #print(self.sock.recv(1024).decode())
            print("Client sent some messages: %s"%(api))
            #api=self.sock.recv(1024).decode()
            if str(api)=="avarage":
                avarage=2/10
                c=str(avarage)
                self.sock.send(c.encode())
            else:
                avarage = 3 / 10
                c = str(avarage)
                self.sock.send(c.encode())

serversocket.listen(5)
print ("server started and listening to port:%s"%(port))
while 1:
    clientsocket, address = serversocket.accept()
    client(clientsocket, address)

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

1 Ответ

0 голосов
/ 19 июня 2020

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

  File "C:/Users/name/PycharmProjects/Socket/venv/Socket1.py", line 23, in run
    api=self.sock.recv(1024).decode()
ConnectionAbortedError: [WinError 10053] An established connection was aborted by the software in your host machine
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...