4.3具体代码实现实现功能:通过while实现循环接收客户端发送的数据,并对客户端发送的数据进行显示并返回给客户端数据,返回给客户端的数据信息后加入时间戳 。新建一个文件server.py 。
import socketimport sysimport timeserversocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()#获取本地主机名port=9999#绑定端口号serversocket.bind((host,port))#设置最大连接数serversocket.listen(5)while True:print('服务器启动,监听客户端链接')clientsocket,addr=serversocket.accept()print('链接地址:%s' % str(addr))while True:try:data=https://www.huyubaike.com/biancheng/clientsocket.recv(1024)except Exception:print('断开的客户端:',addr)breakprint('客户端发送内容:',data.decode('utf-8'))reply=input('回复:').strip()if not reply:breakmsg=time.strftime('%Y-%m-%d %X')#获取结构化时间戳msg1='[%s]:%s'% (msg,reply)clientsocket.send(msg1.encode('utf-8'))clientsocket.close()serversocket.close()4.4客户端创建一个客户端用来连接以上服务的的服务,使用socket.connect()方法打开一个TCP连接到主机,连接后可以从服务端获取数据,在操作完成后关闭连接 。
具体步骤为:
#创建客户端的套接字client=socket()#尝试连接服务器client.connect()#发送并接收数据client.send()client.recv()#关闭客户端套接字client.close()4.5具体代码实现新建一个文件client.py 。
import socketimport syss=socket.socket(socket.AF_INET,socket.SOCK_STREAM)host=socket.gethostname()port=9999s.connect((host,port))while True:data= https://www.huyubaike.com/biancheng/input('>>').strip()if not data:breaks.send(data.encode('utf-8'))msg=s.recv(1024)if not msg:breakprint(msg.decode('utf-8'))s.close()4.6测试使用cmd命令行中打开到代码所在文件目录,执行python 服务端文件名.py,再另打开一个cmd命令界面执行 python 客户端文件名.py 。
1.在cmd中运行服务端代码,运行结果,如下图所示:

文章插图
2.在cmd中运行客户端代码,运行结果,如下图所示:

文章插图
好了到此就实现了,但是宏哥抓不到包,不知道是不是因为服务端和客户端都在宏哥本地一台电脑的原因,算了宏哥直接网上找了一个在线的演示给大家 。
5.实战抓WebSocket包由于时间关系,宏哥没有尝试将客户端和服务器分开看看是否可以抓到包,然后在网上找了一个地址:http://coolaf.com/tool/chattest 演示给大家 。具体操作步骤如下:
1.Fiddler V4.5以上版本,rules>customize rules,加入如下代码,把websocket通信日志加入log,如下图所示:

文章插图
2.class Handler 类中添加,添加的代码如下:
static function OnWebSocketMessage(oMsg: WebSocketMessage) {// Log Message to the LOG tabFiddlerApplication.Log.LogString(oMsg.ToString()); }

文章插图
3.打开PC版的聊天室(宏哥提供的演示地址),并刷新Fiddler,会看到一个WS图标的请求,双击该请求,右边会出现websocket的tab页,如下图所示:
PC版在线聊天,如下图所示:

文章插图
Fiddler抓的WebSocket包,如下图所示:

经验总结扩展阅读
- 主指的是耶稣还是上帝
- JVM运行时数据区域详解
- 《火影忍者》里,二代火影是怎么死的(二代火影为什么打不过金银角)
- 《火影忍者》中一代和二代火影是怎么死的(火影忍者几代火影之死)
- 杰瑞左右选择是什么梗
- 怎样在《红警》里联机(红警2怎么两个人联机)
- DNF轻松赚金币的方法有哪些海外如何低延迟玩《地下城与勇士》
- 诗经中意境唯美的名字 诗经女孩名字大全
- 《ASP.NET Core技术内幕与项目实战》精简集-目录
- 安卓版经典galgame打包下载,跪求《安卓galgame经典合集》