今日主题:今天分享的内容是在Python TCP 协议网络编程《四》的基础上增加了在服务端的登录用户校验,如果客户端输入的用户名不是服务端列表中的,就无法进入正常的聊天室。

 

具体实现代码如下

 

server.py文件内容如下

 1from socket import socket,SOCK_STREAM,AF_INET #导入模块
 2from threading import Thread #导入线程包
 3
 4sockets=[] #用于存放所有请求过来的client的socket
 5
 6userlist=['tony','jack','lucy','lily']
 7
 8def tcp_server():
 9    tcp_server_socket=socket(AF_INET,SOCK_STREAM) #创建TCP服务端套接字对接,UDP是SOCK_DGRAM
10    server_address=('127.0.0.1',9999)#定义本TCP服务端的ip and port
11    tcp_server_socket.bind(server_address) #绑定本机的8888端口
12    tcp_server_socket.listen(128) #设置监听,并设置最大等待连接数为128
13    while 1:
14        print("i'm accepting")
15        client_socket, client_info = tcp_server_socket.accept()  # 接收客户端的socker and info
16        print(client_socket,client_info)
17        sockets.append(client_socket)
18        t=Thread(target=get_msg,args=(client_socket,)) #开启线程来处理当前请求过来的client
19        t.start()
20
21def get_msg(client_socket):
22    while 1:
23        data=client_socket.recv(1024)
24        print("the data:",data)
25        name=str(data,encoding="utf-8")
26        print("the data:",name)
27        if(len(data)>0 and name in userlist):
28            for sk in sockets:
29                print(sk,data)
30                sk.send(data)
31        else:
32            for sk in sockets:
33                sk.send("username is wrong,please input again...".encode("utf-8"))
34
35
36if __name__ == '__main__':
37    print("the TCP server is running ...")
38    tcp_server()

 

client.py文件内容如下

 1from socket import socket,SOCK_STREAM,AF_INET #导入模块
 2from threading import Thread #导入线程包
 3
 4tcp_client_socket = socket(AF_INET, SOCK_STREAM)  # 创建TCP客户端套接字对接
 5server_address = ('127.0.0.1', 9999)  # 定义本TCP服务端的ip and port
 6tcp_client_socket.connect(server_address)  # 连接到服务端
 7
 8response=''
 9count=1
10
11def tcp_client():
12    thread1=Thread(target=read_msg,args=(tcp_client_socket,))
13    thread1.start()
14
15    thread2= Thread(target=send_msg, args=(tcp_client_socket,))
16    thread2.start()
17
18def send_msg(tcp_client_socket):
19    global count
20    while 1:
21        if(count==1):
22            message = input(">>>请输入你的登录名称:")
23        else:
24            if("wrong" not in response):
25                message = input(">>>可以开始聊天:")
26            else:
27                message = input(">>>请输入你的登录名称:")
28        tcp_client_socket.send(message.encode("utf-8"))
29        import time
30        time.sleep(1)
31        count+=1
32
33def read_msg(tcp_client_socket):
34    global response
35    while 1:
36        resv_data = tcp_client_socket.recv(1024)
37        print("the response of message is:",resv_data.decode("utf-8"))
38        response=resv_data.decode("utf-8")
39
40if __name__ == '__main__':
41    print("the TCP client is running ...")
42    tcp_client()

 

client console output内容如下

1the TCP client is running ...
2>>>请输入你的登录名称:aa
3the response of message is: username is wrong,please input again...
4>>>请输入你的登录名称:bb
5the response of message is: username is wrong,please input again...
6>>>请输入你的登录名称:tony
7the response of message is: tony
8>>>可以开始聊天:

欢迎关注【无量测试之道】公众号,
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、


文章下方有公众号二维码,可直接微信扫一扫关注即可。

备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:

Python TCP 协议网络编程《五》_公众号

 添加关注,让我们一起共同成长!