本次用到的python模块还是socket嘛,加强对socket的理解提高编程和思维能力(虚假),其实就是:上课聊天用的(机房得有python环境, 注意关闭防火墙,ping得通就可以了),没有socket基础的可以去看一下这个
上来就是两张图片(示意图注意了解一下)
图1.10
-
服务器开启监听
-
客户端连接服务器
-
连接成功后将客户端套接字对象放到变量clients中保存
图1.20
-
成功连接服务器(我也不知道自己为什么要把这个写上 不许问!)
-
客户端发送信息
-
服务端接收到信息后遍历(每一个)客户端套接字对象(用来发送数据的)
-
将这个信息转发出去
大概就是这么一回事,但是但是!!!但是!你会发现 recv() [接收数据用的]函数是阻塞的,也就是说没有设置超时时间会一直等等等,等到有数据发送过来程序才继续运行,那么也就是说。像上一个文章反弹shell中(图1.30)那么和 send() [发送数据的]函数写在一起就运行不起来了,就会变成这样:我发条信息给你,一直等一直,等不能再次发送信息要等你回复我才可以继续发。哦!忘记说了 accept()也是阻塞的哟
图1.30
那么要怎么解决捏,最简单的方法就是把这两个函数分开,监听回复信息的我们开个线程让他在后台监听,我们发我们的信息。废话不多说直接上代码,算了还是来张图帮助理解先吧。
图1.40
对了还有服务器的..
图1.50
差不多就是这个意思了,上代码吧
服务器代码
客户端代码
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树基本技能 络编程211178 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!