您的位置:首页 > 理论基础 > 计算机网络

套接口编程理论基础:TCP回射客户程序

2012-03-19 09:54 183 查看
main 函数:

#include    "unp.h"

int main(int argc, char **argv)
{
int                    sockfd;
struct sockaddr_in    servaddr;

if (argc != 2)
err_quit("usage: tcpcli <IPaddress>");

/*Socket函数原型int socket (int family, int type, int protocol);protocol为0时
,以选择给定family和type组合的系统缺省值。参照 4.2节,*/
sockfd = Socket(AF_INET, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
/*考虑主机字节序和网络字节间的相互转换。参照3.4节*/
servaddr.sin_port = htons(SERV_PORT);
/*地址转换函数inet_pton(int, const char *, void *):将点分十进制IPv4地址转化成32位二进制IPv4地址。3.7节*/
Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

/*建立与服务器的连接*/
Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

str_cli(stdin, sockfd);        /* do it all */

exit(0);
}


str_cli 函数:

  本函数完成客户处理循环:从标准输入读入一行文本,写到服务器上;读入服务器对该行文本的回射,并把回射行写到标准输出上。

#include    "unp.h"

void
str_cli(FILE *fp, int sockfd)
{
char    sendline[MAXLINE], recvline[MAXLINE];

/*fgets 读入一行文本*/
while (Fgets(sendline, MAXLINE, fp) != NULL) {
/*把该行文本发送给服务器*/
Writen(sockfd, sendline, strlen(sendline));

/*readline从服务器读入回射行*/
if (Readline(sockfd, recvline, MAXLINE) == 0)
err_quit("str_cli: server terminated prematurely");
/*fputs 把回射行写到标准输出上*/
Fputs(recvline, stdout);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐