python編程基礎訓練之網絡編程(人員管理系統分佈成客戶端服務端)

在python簡單垃圾人員管理的基礎上:https://blog.csdn.net/lfy905805357/article/details/92972172

利用網絡編程,編寫成爲分佈的套接字網絡編程,分客戶端和服務端

在這個過程中,發現原來之前的垃圾人員管理系統中間存在一丟丟小毛病~

網絡編程基礎回顧可以查看:https://blog.csdn.net/lfy905805357/article/details/93399502

再原本代碼類的基礎之上,增添服務端和客戶端,方便套接字socket

1、Staff類

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 19 09:36:16 2019

@author: UnderMask
"""


class Staff:
    def __init__(self,name,num,age,sex,birthday):
        self.__name=name
        self.__num=num
        self.__age=age
        self.__sex=sex
        self.__birthday=birthday

    def getNum(self):
        return self.__num

    def check(self):
        return self.__name,self.__num,self.__age,self.__sex,self.__birthday

    def display(self):
        print(self.__name,self.__num,self.__age,self.__sex,self.__birthday,end=" ")

    def modify(self,name,num,age,sex,birthday):
        self.__name=name
        self.__num=num
        self.__age=age
        self.__sex=sex
        self.__birthday=birthday


class Teacher(Staff):
    def __init__(self,name,num,age,sex,birthday,lessonName,StudentList):
        super().__init__(name,num,age,sex,birthday)
        self.__lessonName=lessonName
        self.__StudentList=StudentList

    def getStudentList(self):
        return self.__StudentList

    def check(self):
        name,num,age,sex,birthday=Staff.check(self)
        return name,num,age,sex,birthday,self.__lessonName,self.__StudentList

    def display(self):
        Staff.display(self)
        print(self.__lessonName,self.__StudentList)

    def modify(self,name,num,age,sex,birthday,lessonName):
        Staff.modify(self,name,num,age,sex,birthday)
        self.__lessonName=lessonName

    def addStudent(self,student):
        self.__StudentList[student.getNum()]=student

    def delStudent(self,num):
        del self.__StudentList[num]


class AdministrationStaff(Staff):
    def __init__(self,name,num,age,sex,birthday,jobType):
        super().__init__(name,num,age,sex,birthday)
        self.__jobType=jobType

    def check(self):
        name,num,age,sex,birthday=Staff.check(self)
        return name,num,age,sex,birthday,self.__jobType

    def display(self):
        Staff.display(self)
        print(self.__jobType)

    def modify(self,name,num,age,sex,birthday,jobType):
        Staff.modify(self,name,num,age,sex,birthday)
        self.__jobType=jobType

2、Student類

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 19 09:31:58 2019

@author: UnderMask
"""
#Student類


class Student:

    def __init__(self,num,name,sex,major,chinese,math,english):
        self.__num=num
        self.__name=name
        self.__sex=sex
        self.__major=major
        self.__chinese=chinese
        self.__math=math
        self.__english=english

    def getNum(self):
        return self.__num

    def modify(self,num,name,sex,major,chinese,math,english):
        self.__num=num
        self.__name=name
        self.__sex=sex
        self.__major=major
        self.__chinese=chinese
        self.__math=math
        self.__english=english

    def check(self):
        return self.__num,self.__name,self.__sex,self.__major,self.__chinese,self.__math,self.__english

    def display(self):
        print(self.__num,self.__name,self.__sex,self.__major,self.__chinese,self.__math,self.__english)

 3、人員管理系統類改動

# -*- coding: utf-8 -*-
"""
Created on Wed Jun 19 09:52:47 2019

@author: UnderMask
"""
from Student import Student
from Staff import Teacher
from Staff import AdministrationStaff
class InformationManagementSystem:
    def __init__(self,userName,password):
        self.__userName=userName
        self.__password=password
        self.__staff={}
        self.__student={}
    def getStaff(self,num):
        if self.__staff[num]:
            return self.__staff[num]
    def getStudent(self,num):
        if self.__student[num]:
            return self.__student[num]
    def showMenu(self):
        return "   1)教職工信息錄入\n   2)教職工信息查詢\n   3)教職工信息修改\n   4)教職工信息刪除\n   5)學生信息錄入\n   6)學生信息查詢\n   7)學生信息修改\n   8)學生信息刪除\n   9)教師添加管理學生\n   10)教師減少管理學生\n   11)退出\n請輸入操作選項:"
    def log(self,userName,password):
        if self.__userName==userName:
            if self.__password==password:
                str0=str(self.__userName)+"登錄成功,歡迎來到高校信息管理系統"
                print(str0)
                return True,str0
            else:
                str1="密碼錯誤!"
                print(str1)
                return False,str1
        else:
            str2="用戶名錯誤!"
            print(str2)
            return False,str2
    def TeacherAddStudent(self,teacherNum,studentNum):
        if teacherNum in self.__staff.keys() and studentNum in self.__student.keys():#若教師跟學生都已錄入系統內
            if isinstance(self.__staff[teacherNum],Teacher):
                self.__staff[teacherNum].addStudent(self.__student[studentNum])
                return "教師:"+teacherNum+"接手管理學生:"+studentNum+"成功~"
            else:
                return "非教師無學生管理操作"
        else:
            return "該編號教師、學生待錄入系統,不能直接操作系統不存在的人員~"
    def TeacherDelStudent(self,teacherNum,studentNum):
        if teacherNum in self.__staff.keys() and studentNum in self.__student.keys():#若教師跟學生都已錄入系統內
            if isinstance(self.__staff[teacherNum],Teacher):
                self.__staff[teacherNum].delStudent(studentNum)
                return "教師:"+teacherNum+"轉手學生:"+studentNum+"成功~"
            else:
                return "非教師無學生管理操作"
        else:
            return "該編號教師、學生待錄入系統,不能直接操作系統不存在的人員~"
    def StaffEntry(self,staff):
        self.__staff[staff.getNum()]=staff#(key,vale)-->(num,staff)
    def StaffCheck(self,num):
        ans=""
        if num=="all":
            for key in self.__staff.keys():
                ans+=str(self.__staff[key].check())+"\n"
        elif num in self.__staff.keys():
            ans+=str(self.__staff[num].check())
        else:
            ans+="暫無該編號的教職工~"
        return  ans
    def StaffModify(self,num,newName,newNum,newAge,newSex,newBirthday,newMessage):
        if num in self.__staff.keys():
            if isinstance(self.__staff[num],Teacher):
                studentList=self.__staff[num].getStudentList()
                del self.__staff[num]
                self.__staff[newNum]=Teacher(newName,newNum,newAge,newSex,newBirthday,newMessage,studentList)
                return "信息更新成功~"
            elif isinstance(self.__staff[num],AdministrationStaff):
                self.__staff[newNum]=AdministrationStaff(newName,newNum,newAge,newSex,newBirthday,newMessage)
                del self.__staff[num]
                return "信息更新成功~"
            else:
                return "該教職工類型出現錯誤~"
        else:
            return "不存在該編號的教職工~"
    def StaffDelete(self,num):
        if num in self.__staff.keys():
            del self.__staff[num]
            return "教職工:"+num+"刪除成功"
        else:
            return "不存在該編號的教職工~"
    def StudentEntry(self,student):
        self.__student[student.getNum()]=student#(key,vale)-->(num,student)
    def StudentCheck(self,num):
        ans = ""
        if num=="all":
            for key in self.__student.keys():
                ans+=str(self.__student[key].check())+"\n"
        elif num in self.__student.keys():
            student=self.__student[num]
            ans+=str(student.check())+"\n"
        else:
            ans+="暫無該學號學生~\n"
        return ans
    def StudentModify(self,num,newNum,newName,newSex,newMajor,newChinese,newMath,newEnglish):
        if num in self.__student.keys():
            del self.__student[num]
            self.__student[newNum]=Student(newNum,newName,newSex,newMajor,newChinese,newMath,newEnglish)
            return "信息更新成功~"
        else:
            return "不存在該編號的學生~"
    def StudentDelete(self,num):
        if num in self.__student.keys():
            del self.__student[num]
            return "學生:"+num+"刪除成功"
        else:
            return "不存在該學號的學生~"

4、Service端實現

#服務器端
import socket
from Student import Student
from Staff import Teacher
from Staff import AdministrationStaff
from InformationManagementSystem import InformationManagementSystem


ip_port=('127.0.0.1',9000)
sk=socket.socket()
sk.bind(ip_port)
sk.listen(5)

conn,address=sk.accept()
system = InformationManagementSystem("user", "user")
# 提前錄一點教職工、學生信息,避免每次運行都需要重新錄入,實際系統可以刪除~以下四行
# 簡單編寫,所以所有類型基本用字符串替代,具體完善可以更改爲正確的數據類型
# 也可以改爲文件錄入一些信息~
system.StudentEntry(Student("1", "小花", "woman", "computer", 40, 90, 80))
system.StudentEntry(Student("2", "小明", "man", "SoftwareEngineering", 30, 98, 70))
system.StudentEntry(Student("3", "小厸", "woman", "computer", 90, 68, 85))
system.StudentEntry(Student("4", "小華", "man", "computer", 77, 68, 75))
system.StaffEntry(Teacher("唐老師", "37", "40", "man", "19780118", "C++", {}))
system.StaffEntry(AdministrationStaff("康老師", "27", "30", "woman", "19880119", "教務科"))
system.TeacherAddStudent("37", "1")
system.TeacherAddStudent("37", "2")
system.TeacherAddStudent("37", "3")
log_flag=False
while True:
    if log_flag==False:
        conn.sendall(bytes("請輸入用戶名", encoding='utf-8'))
        userName=str(conn.recv(1024),encoding='utf-8')
        conn.sendall(bytes("請輸入登錄密碼", encoding='utf-8'))
        password = str(conn.recv(1024), encoding='utf-8')
        flag ,message = system.log(userName, password)
        log_flag=flag
        conn.sendall(bytes(str(flag), encoding='utf-8'))
        conn.sendall(bytes(message, encoding='utf-8'))
    else:
        while True:
            conn.sendall(bytes(system.showMenu(), encoding='utf-8'))
            index=str(conn.recv(1024),encoding='utf-8')
            if index=="1":
                conn.sendall(bytes("   1)教師信息錄入\n   2)行政人員信息錄入", encoding='utf-8'))
                index1 = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入教職工姓名", encoding='utf-8'))
                name = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入教職工編號", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入教職工年齡", encoding='utf-8'))
                age = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入教職工性別", encoding='utf-8'))
                sex = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入教師生日", encoding='utf-8'))
                birthday = str(conn.recv(1024), encoding='utf-8')
                if index1 == "1":
                    conn.sendall(bytes("請輸入教師所授課程", encoding='utf-8'))
                    lessonName = str(conn.recv(1024), encoding='utf-8')
                    staff = Teacher(name, num, age, sex, birthday, lessonName, {})
                    system.StaffEntry(staff)
                    conn.sendall(bytes("教師信息錄入成功!", encoding='utf-8'))
                    conn.sendall(bytes(str(staff.check()), encoding='utf-8'))
                elif index1 == "2":
                    conn.sendall(bytes("請輸入行政人員崗位類型", encoding='utf-8'))
                    jobType = str(conn.recv(1024), encoding='utf-8')
                    staff = AdministrationStaff(name, num, age, sex, birthday, jobType)
                    system.StaffEntry(staff)
                    conn.sendall(bytes("行政人員信息錄入成功!", encoding='utf-8'))
                    conn.sendall(bytes(str(staff.check()), encoding='utf-8'))
                else:
                    conn.sendall(bytes("輸入有誤!", encoding='utf-8'))
            elif index=="2":
                conn.sendall(bytes("請輸入查詢的教職工編號(輸入all打印全部教職工信息):", encoding='utf-8'))
                number = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StaffCheck(number), encoding='utf-8'))
            elif index=="3":
                conn.sendall(bytes("請輸入信息待更新的教職工編號:", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教職工的正確姓名", encoding='utf-8'))
                newName = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教職工的正確編號", encoding='utf-8'))
                newNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教職工的正確年齡", encoding='utf-8'))
                newAge = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教職工的正確性別", encoding='utf-8'))
                newSex = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教師的正確生日", encoding='utf-8'))
                newBirthday = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該教師所授課程/請輸入該職工的正確職務類型", encoding='utf-8'))
                newMessage = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StaffModify(num,newName,newNum,newAge,newSex,newBirthday,newMessage), encoding='utf-8'))
            elif index=="4":
                conn.sendall(bytes("請輸入待刪除的教職工編號", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StaffDelete(num), encoding='utf-8'))
            elif index=="5":
                conn.sendall(bytes("請輸入學生學號", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生姓名", encoding='utf-8'))
                name = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生性別", encoding='utf-8'))
                sex = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生專業", encoding='utf-8'))
                major = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生語文成績", encoding='utf-8'))
                chinese = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生數學成績", encoding='utf-8'))
                math = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入學生英語成績", encoding='utf-8'))
                english = str(conn.recv(1024), encoding='utf-8')
                student = Student(num, name, sex, major, chinese, math, english)
                system.StudentEntry(student)
                conn.sendall(bytes("學生信息錄入操作結束!", encoding='utf-8'))
                conn.sendall(bytes(str(student.check()), encoding='utf-8'))
            elif index=="6":
                conn.sendall(bytes("請輸入查詢的學生學號(輸入all打印全部教職工信息)", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StudentCheck(num), encoding='utf-8'))
            elif index=="7":
                conn.sendall(bytes("請輸入信息待更新的學生學號:", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生的正確編號", encoding='utf-8'))
                newNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生的正確名字", encoding='utf-8'))
                newName = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生的正確性別", encoding='utf-8'))
                newSex = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生正確專業", encoding='utf-8'))
                newMajor = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生語文成績", encoding='utf-8'))
                newChinese = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生數學成績", encoding='utf-8'))
                newMath = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入該學生英語成績", encoding='utf-8'))
                newEnglish = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StudentModify(num,newNum,newName,newSex,newMajor,newChinese,newMath,newEnglish), encoding='utf-8'))
            elif index=="8":
                conn.sendall(bytes("請輸入待刪除的學生學號", encoding='utf-8'))
                num = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.StudentDelete(num), encoding='utf-8'))
            elif index=="9":
                conn.sendall(bytes("請輸入教師編號", encoding='utf-8'))
                teacherNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入待添加學生學號", encoding='utf-8'))
                studentNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.TeacherAddStudent(teacherNum, studentNum), encoding='utf-8'))
            elif index=="10":
                conn.sendall(bytes("請輸入教師編號", encoding='utf-8'))
                teacherNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes("請輸入待剔除學生學號", encoding='utf-8'))
                studentNum = str(conn.recv(1024), encoding='utf-8')
                conn.sendall(bytes(system.TeacherDelStudent(teacherNum, studentNum), encoding='utf-8'))
            elif index=="11":
                log_flag=False
                break
conn.close()
sk.close()

5、Client端

#服務器端
import socket
from Student import Student
from Staff import Teacher
from Staff import AdministrationStaff
from InformationManagementSystem import InformationManagementSystem


ip_port=('127.0.0.1',9000)
sk=socket.socket()
sk.connect(ip_port)
#sk.settimeout(5)
log_flag=False
while True:
    if log_flag==False:
        print(str(sk.recv(1024), encoding='utf-8'),end=":")
        userName=input()
        sk.sendall(bytes(userName,encoding='utf-8'))
        print(str(sk.recv(1024), encoding='utf-8'), end=":")
        password=input()
        sk.sendall(bytes(password,encoding='utf-8'))
        flag=str(sk.recv(1024), encoding='utf-8')
        message = str(sk.recv(1024), encoding='utf-8')
        print(message)
        if flag=="True":
            log_flag=True
    else:
        while True:
            print(str(sk.recv(1024), encoding='utf-8'))
            index=input(">>>")
            sk.sendall(bytes(str(index),encoding='utf-8'))
            if index=="1":
                print(str(sk.recv(1024), encoding='utf-8'))
                index1 = input(">>>")
                sk.sendall(bytes(str(index1), encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                name = input()
                sk.sendall(bytes(name, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                num = input()
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                age = input()
                sk.sendall(bytes(age, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                sex = input()
                sk.sendall(bytes(sex, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                birthday = input()
                sk.sendall(bytes(birthday, encoding='utf-8'))
                if index1=="1":
                    print(str(sk.recv(1024), encoding='utf-8'), end=":")
                    lessonName = input()
                    sk.sendall(bytes(lessonName, encoding='utf-8'))
                    print(str(sk.recv(1024), encoding='utf-8'))
                    print(str(sk.recv(1024), encoding='utf-8'))
                elif index1=="2":
                    print(str(sk.recv(1024), encoding='utf-8'), end=":")
                    jobType = input()
                    sk.sendall(bytes(jobType, encoding='utf-8'))
                    print(str(sk.recv(1024), encoding='utf-8'))
                    print(str(sk.recv(1024), encoding='utf-8'))
                else:
                    print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="2":
                print(str(sk.recv(1024), encoding='utf-8'))
                number=input(">>>")
                sk.sendall(bytes(number, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index == "3":
                print(str(sk.recv(1024), encoding='utf-8'))
                num = input(">>>")
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'),end=":")
                newName=input()
                sk.sendall(bytes(newName, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newNum = input()
                sk.sendall(bytes(newNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newAge = input()
                sk.sendall(bytes(newAge, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newSex = input()
                sk.sendall(bytes(newSex, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newBirthday = input()
                sk.sendall(bytes(newBirthday, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newMessage = input()
                sk.sendall(bytes(newMessage, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="4":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                num = input()
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="5":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                num = input()
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                name = input()
                sk.sendall(bytes(name, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                sex = input()
                sk.sendall(bytes(sex, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                major = input()
                sk.sendall(bytes(major, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                chinese = input()
                sk.sendall(bytes(chinese, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                math = input()
                sk.sendall(bytes(math, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                english = input()
                sk.sendall(bytes(english, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="6":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                num = input()
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="7":
                print(str(sk.recv(1024), encoding='utf-8'))
                num = input(">>>")
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newNum = input()
                sk.sendall(bytes(newNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newName = input()
                sk.sendall(bytes(newName, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newSex = input()
                sk.sendall(bytes(newSex, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newMajor = input()
                sk.sendall(bytes(newMajor, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newChinese = input()
                sk.sendall(bytes(newChinese, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newMath = input()
                sk.sendall(bytes(newMath, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                newEnglish = input()
                sk.sendall(bytes(newEnglish, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="8":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                num = input()
                sk.sendall(bytes(num, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="9":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                teacherNum = input()
                sk.sendall(bytes(teacherNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                studentNum = input()
                sk.sendall(bytes(studentNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="10":
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                teacherNum = input()
                sk.sendall(bytes(teacherNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'), end=":")
                studentNum = input()
                sk.sendall(bytes(studentNum, encoding='utf-8'))
                print(str(sk.recv(1024), encoding='utf-8'))
            elif index=="11":
                log_flag=False
                break
sk.close()

6、運行效果

7、改進~

代碼冗餘過多,可以提取,然後可以加上多線程~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章