假设connect调用成功建立一个连接,客户端使用该连接和服务器交互。通常,应用协议指明一个请求-响应交互(request-response-interaction),即客户发送一系列的请求并等待对每个请求的响应。通常客户调用send传诵请求,调用recv等待响应。对于简单的应用协议来说,客户端只发单个请求,并接收单个响应。较复杂的应用协议要求用户反复执行,发故意个请求,然后在发送下一个请求前等待响应。下面的代码说明了这种请求响应的交互。
#define BLEN 120 /*buffer length to use*/
char *req ="request of soe sort";
char buf[BLEN]; /*buffer for answer*/
char *bptr; /*pointer to buffer*/
int n; /*number of bytes read*/
int buflen; /*space left in buffer*/
bptr = buf;
buflen =BLEN;
/*send request*/
send(s,req,strlen(req),0);
/*read response(may come in many pices) */
n = recv(s,bptr,buflen,0);
while(n!=SOCKET_ERROR&&n!=0)
{
bptr+=n;
buflen -=n;
n = recv(s,bptr,buflen,0);
}

评论