您好我正在编写一个应用程序,应该记录localhost端口37265上的流量。 在记录流量时,calabash使用端口37265在iPhone模拟器中运行iPhone应用程序的自动测试。 Calabash测试在端口37265上生成http通信,我想在测试完成后处理该通信。
你能给我提示如何编写这样的端口流量记录器吗?
我需要以编程方式捕获通信,而不是Wireshark或其他软件!
答案 0 :(得分:1)
如果我理解正确,您希望在使用calabash
进行测试时处理HTTP通信。
您可以使用数据包嗅探器代替对此功能进行编码,例如: WireShark
使用calabash完成测试后,您可以停止网络捕获,并且可以在指定的端口上进行过滤,例如:与DisplayFilters。
答案 1 :(得分:0)
到目前为止,看起来最好的解决方案是使用端口37265上的过滤器和TCP数据包从我的代码调用tcpdump。 最终解决方案如下所示:
_dumpTask = [[NSTask alloc] init];
[_dumpTask setLaunchPath: @"/usr/sbin/tcpdump"];
[_dumpTask setArguments: @[@"-i", @"lo0", @"-s", @"0", @"-B", @"52428", @"-w", @"/Users/user/Desktop/dump.pcap", @"-v", @"port", @"37265", @"and", @"tcp"]];
NSPipe *pipe;
pipe = [NSPipe pipe];
[_dumpTask setStandardOutput: pipe];
NSFileHandle *file;
file = [pipe fileHandleForReading];
[_dumpTask launch];
NSData *data;
data = [file readDataToEndOfFile];
NSString *response = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding];
NSLog(@"%@", response);