以编程方式建立PPTP VPN连接并捕获数据包

4
我使用这个教程来编程方式创建PPTP VPN连接并捕获数据包,但是有些问题出现了。我认为问题出在while循环中捕获数据包时。当我通过应用程序连接到VPN并尝试在浏览器中打开网站时,它显示:您已离线...发送接收总是0字节/ 0个数据包。此外,我需要在应用程序中断开连接。请问如何解决这些问题?

没有人能帮忙吗?! - Hossein Kurd
1个回答

3
你使用的教程不是关于PPTP或其他特定VPN类型的,而是关于数据包捕获的。你应该自己实现PPTP客户端,并在此之后将你的数据包捕获代码(while循环)和PPTP客户端代码互联起来。
如果你可以展示你的源代码,那么更容易发现问题所在。
UPD1:
这是一个庞大而复杂的任务,没有快速解决方案。当我做同样的事情时,我花了大约一年的时间。你可以尝试以下步骤:
1.将现有的第三方PPTP客户端导入到你的项目中(例如:http://pptpclient.sourceforge.net/)。
2.改进导入的代码,使其能够与你的主要代码交互(C/C++代码,你可以通过JNI将其用作本地库,或者作为外部可执行文件并通过IPC与其交互)。
3.将你的代码与导入的代码链接起来(从VPN服务套接字读取IP数据报,将其写入PPTP客户端套接字中,反之亦然)。

更新2:

我看到了两个实现VpnService的应用程序。

第一个是StrongSwan。 VpnService扩展在这里, 本地部分(真正的VPN服务实现)从这里开始。

第二个是OpenVpn端口ics-openvpn。它通过这里启动独立的openvpn进程,并通过标准的openvpn管理接口(unix套接字)这里进行管理。

我该如何使用PPTP连接、连接和断开它? - Hossein Kurd
你能给我解释更多吗?我需要示例或库。 - Hossein Kurd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接