用epoll演示tcp代理

示例程序下载地址

epoll原理请参考:IO多路复用之epoll总结
本程序只是代理程序的原型展示,因此技术细节请不要深究,例如TCP粘包的处理,未使用多线程处理大并发,只处理了文本数据,未处理缓冲区溢出等问题。

  • * 如下图,客户端可以和服务端直连,也可以通过代理连接*
  • 用epoll演示tcp代理_第1张图片
  • 文件说明
  • c_epoll.cpp——客户端,请注意连接服务器的IP(IPADDRESS)、端口(SERV_PORT)的宏定义
  • s_epoll.cpp——服务端,请注意服务器的IP(IPADDRESS)、端口(PORT)的宏定义
  • tnsProxy.cpp——代理,请注意代理监听的IP(PROXY_IP)、端口(PROXY_PORT),及服务器IP(DB_IP)、端口(DB_PORT),其实这里模拟的是数据的代理,所以用了DB前缀。
  • vc_client——用VS2010阻塞模型开发的客户端,可以和服务端、代理,结合运行。运行时的参数1为服务端P,参数2服务端端口。请参见vc_client\rd_10.1.8.196_proxy_9787.bat等脚本。

注意设置TCP_NODELAY为1

void setTcpNodelay(int fd) {
int enable = 1;
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (void*)&enable, sizeof(enable));
}

你可能感兴趣的:(网络)