以编程方式捕获TCP端口上的流量

问题描述 投票:1回答:2

我正在编写一个Mac应用程序,它应该记录本地主机端口37265上的流量。在记录流量时,葫芦使用端口37265来在iPhone模拟器中运行iPhone应用程序的自动化测试。瓢虫测试正在端口37265上生成http通信,我想在测试完成后处理该通信。

您能给我提示如何编码这样的端口流量记录器吗?

非常重要,我需要以编程方式而不是通过Wireshark或其他软件来捕获通信!

objective-c macos tcp localhost
2个回答
1
投票

如果我对您的理解正确,您想在使用calabash进行测试时处理HTTP通信。

代替编码此功能,您可以为此使用数据包嗅探器,例如WireShark

使用葫芦完成测试后,您可以停止网络捕获,并可以在指定的端口上进行过滤,例如用DisplayFilters


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);
© www.soinside.com 2019 - 2024. All rights reserved.