为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 网络编程 > 其它综合 正文

Python TCP 协议网络编程《五》

三叶资源网 2022-10-28 19:18:50 其它综合 251 ℃ 0 评论

今日主题:今天分享的内容是在 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>>>可以开始聊天:

Tags:

来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
编辑框输入提示强行兼容高DPI网易云音乐播放器QQ主显ExUI图标列表框图形控件多线程安全Hook解析DLL文本HTMLayout易语言支持库易语言对接猫池源码sqlite之数据库龙珠直播采集验证码自动识别服务端企鹅FM评论进程监控装修预算计算器socks4枚举图片大数据去重复
最新评论