C语言开发http代理中遇到的两个问题
RT,楼主最近在开发http代理,需要对http请求和响应进行解析和修改。
我面临的两个问题是:
1.如果一个端口已经被一个进程绑定,那么另一个进程如何检测。我目前有两种思路:
使用bind函数;
使用lsof -i TCP:8000 |wc -l的执行结果;
目前我倾向于第二种。请各位大大帮我分析下利弊,多谢呀。
2.获取http响应以后,如何区分http头和http实体,我原来使用"\r\n\r\n",来划分,后来发现http头中会出现"\r\n\r\n",这样会得不到完整的http头。
多谢各位~~
[解决办法]
bind的端口填0,让系统自己选,头和体的分隔就是"\r\n\r\n",这有HTTP的简单实现WebClnt:
http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]
那你可以用setsocopt设置端口复用。