实验五 关于tcp套接字编程(2)

2018-12-29 22:56

套接字定义相关的语句 服务器端:

? struct sockaddr_in server; //定义server的套接字地址结构 ? struct sockaddr_in clinet; //定义clinet的套接字地址结构 ? socklen_t addrlen; //定义通用套接字地址结构 ? bzero(&server,sizeof(server)) //初始化server

? server.sin_family=AF_INET; //对地址结构中的成员地址家族赋值 ? server.sin_port=htons(PORT); //对地址结构中的成员端口号赋值 ? server.sin_addr.s_addr=htonl(INADDR_ANY);

//当前的本地地址设为INADDR_ANY

客户端:

? struct sockaddr_in server; //定义server的套接字地址结构 ? bzero(&server,sizeof(server)) //初始化server

? server.sin_family=AF_INET; //对地址结构中的成员地址家族赋值 ? server.sin_port=htons(PORT); //对地址结构中的成员端口号赋值 ? server.sin_addr=*((struct in_addr *)he->h_addr); //对地址结构中的成员IP地址赋值

TCP套接字编程流程的语句 服务器端:

1、socket()函数

if ((listenfd =socket(AF_INET,SOCK_STREAM, 0))== -1) {

perror(\exit(1);

} //调用socket()函数,产生TCP套接字。如果出错,打印错误信息。

2、bind()函数

if (bind(listenfd,(struct sockaddr *)&server,sizeof(server))==-1) {

perror(\exit(1);

} //调用bind()函数将描述符listenfd与server套接字地址结构中的协议地址绑定。

3、listen()函数

if(listen(listenfd,BACKLOG)==-1) {

perror(\exit(1);

} //调用listen()函数,将listenfd描述符设置为监听描述符

4、accept()函数

if((connectfd=accept(listenfd,(struct sockaddr*)&client,&addrlen))==-1) {

perror(\exit(1);

} //调用accept()函数,接收连接请求,返回已连接套接字描述。与服务器连接的客户端的协议地址可以通过参数client得到,addrlen返回内核写入client结构体中的准确字节数。

客户端:

1、socket()函数

if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) {

printf(\exit(1);

} //调用socket()函数产生套接字描述符

2、connect()函数

if(connect(sockfd,(struct sockaddr *)&server,sizeof(server))==-1) {

printf(\exit(1);

} //调用connect()函数与服务器建立连接。

3、recv()函数

if ((num=recv(sockfd,buf,MAXDATASIZE,0))==-1) {

buf[num-1]='\\0'; exit(1);

} //接收服务器发过来的字符串,保存在buf中。接收的真正字节数被存储在num中。

4、close()函数

close(sockfd); //关闭套接字

结果如下

步骤:首先运行服务器端程序,再运行客户端程序( ./客户端程序名称+空格+127.0.0.1)

客户端根据用户提供的IP地址 172.0.0.1将用户从终端输入的信息发送给服务器,然后等待服务器的回应。

服务器:

客户端:


实验五 关于tcp套接字编程(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:生活中的货币时间价值

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: