【发布时间】:2012-08-16 23:29:50
【问题描述】:
我在 linux 中实现了一个转发代理,它侦听几个端口。每当发生连接时,它就会进入外部世界。 我的设置如下:
Outerworld代理(监听端口A)浏览器(配置代理设置为端口A)
但是,我不确定何时关闭代理外部世界和代理浏览器之间的连接。 我的印象是,如果我看到一个数据大小为 0 (recv()) 的数据包,那么它就是来自客户端的通信结束。一旦我得到“recv()=0”,我就会对外部世界做“close()”。这是正确的做法吗?还是我应该做shutdown()?另外,我认为有时浏览器会发送一个带有数据包的“FIN”,但我无法捕捉到它。我有时会在从未关闭的套接字上看到来自浏览器的连接。 (Linux 重复使用相同的 fd 编号。这是原因之一,我相信我缺少套接字关闭。)
我哪里出错了。
谢谢
【问题讨论】:
标签: linux sockets networking tcp proxy