一.套接字编程
API函数介绍
SOCKET accept( SOCKET s , struct sockaddr_in FAR * addr ,int Far *addlen ) ;
函数说明:当没有连接请求时,对于阻塞式套接字,如果程序调用了accept函数,那么线程将进入等待状态,知道有一个连接请求到达为止,accept在接收到连接请求时,会为这个连接建立起一个新的套接字,该套接字负责和客户单进行通信,常被称为“会话套接字。此前调用的socket函数返回的套接字负责监听和接收连接请求,因此被称为“监听套接字”。
参数说明:参数s是此前用于监听和接收连接的“监听套接字”。
参数addr和参数addlen是用于返回客户机的信息,如果服务机对此不关心,那 么可以都设置为NULL。
int connect( SOCKET s , struct sockaddr_in FAR * name , int namelen ) ;
参数说明:参数s是调用socket函数返回的套接字。
参数name 是服务机的地址,namelen属于服务机地址类型的大小。
int send( SCOKET s , const char FAR *buf ,int len , int flags ) ;
int recv( SOCKET s , char FAR * buf , int len , int flags ) ;
参数说明:参数s在服务器端指调用accept函数接收客户端的连接请求后返回的会话套接字,而客户端只有一个会话套接字(因为客户端不用监听连接请求,因此没有监听套接字)
参数buf是指要发送和接收数据的缓冲区。
参数len为buf的大小。
如果函数调用成功,会返回实际发送或接收的字节数。
如果函数调用失败,那么将返回错误SOCKET_ERROR。
二.利用socket实现代理服务器的基本框架
代理服务器是基于socket套接字编程实现的,现在可以考虑实现三个端,一个是client , 一个是server,最后一个是proxy server。
其中proxy server就是我们要实现的代理服务器,在这一步中实现的主要功能是并没有实现能够解析