首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

recv函数施用实例

2012-12-21 
recv函数使用实例recv函数使用实例本节将讲解一个recv函数使用实例。在程序中,连接到北京大学的FTP服务器,

recv函数使用实例

recv函数使用实例

本节将讲解一个recv函数使用实例。在程序中,连接到北京大学的FTP服务器,然后用recv函数取得ftp服务器返回的信息。北京大学的FTP服务器域名如下所示。

ftp.pkp.edu.cn


在终端中输入下面的命令,取得这个域名的IP地址。

 ping ftp.pku.edu.cn

终端中显示的结果如下所示。

 PING vineyard.pku.edu.cn (202.38.97.197) 56(84) bytes of data.

所以北京大学FTP服务器的IP地址是202.38.97.197。FTP服务的端口号是21。程序的代码如下所示。

代码17-5? recv函数接收数据:\源文件\17\17.23.c

#include <stdio.h>#include <netinet/in.h>#include <arpa/inet.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#include <sys/types.h>#include <sys/socket.h>????????/*包含头文件。*/
#define PORT 21??????????/*定义一个端口号。*/#define REMOTE_IP "202.38.97.197"?????/*定义一个IP地址。*/
int?? main(int argc,char *argv[]){?? int s ;???????????/*定义相关的变量。*/struct sockaddr_in addr ;char mybuffer[256];
?? if( (s=socket(AF_INET,SOCK_STREAM,0))<0 )??/*建立一个socket。*/{perror("socket");exit(1);}else{printf("socket created .\n");?????/*socket建立成功。*/printf("socked id: %d \n",s);}
?? bzero(&addr,sizeof(addr));??????/*清空addr所占的内存。*/addr.sin_family =AF_INET;??????/*设置addr的成员。*/addr.sin_port=htons(PORT);addr.sin_addr.s_addr=inet_addr(REMOTE_IP);
?? if(connect(s,&addr,sizeof(addr))<0)????/*连接远程服务器。*/{perror("connect");exit(1);}else{??? printf("connected ok!\n");?????/*连接成功。*/??? printf("remote ip:%s\n",REMOTE_IP);??? printf("remote port:%d\n",PORT);}
?? recv(s ,mybuffer,sizeof(mybuffer),0);???/*接收信息。*/printf("%s\n",mybuffer);???????/*输出接收到的信息。*/}

输入下面的命令,编译这个程序。

 gcc 17.23.c

输入下面的命令,对这个程序添加可执行权限。

chmod +x a.out

输入下面的命令,运行这个程序。

./a.out

程序的运行结果如下所示。结果表明程序已经正确连接到了北京大学的FTP服务器。服务器返回了一段欢迎信息。

socket created .socked id: 3 connected ok!remote ip:202.38.97.197remote port:21220 Welcome to VINEYARD FTP service.

热点排行