Chinaunix首页 | 论坛 | 博客
  • 博客访问: 114708
  • 博文数量: 50
  • 博客积分: 968
  • 博客等级: 少尉
  • 技术积分: 492
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-17 09:51
文章分类

全部博文(50)

文章存档

2012年(2)

2011年(48)

我的朋友

分类: C/C++

2011-05-17 16:40:18



  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<errno.h>
  4. #include<string.h>
  5. #include<sys/types.h>
  6. #include<netinet/in.h>
  7. #include<sys/socket.h>
  8. #include<sys/wait.h>
  9. #include<netdb.h>

  10. #define PORT 3333 //服务器监听端口号
  11. #define MAXDATASIZE 100 //最大数据传输量

  12. int main(int argc,char *argv[])
  13. {
  14.     int sockfd;
  15.     int recvbytes;
  16.     char buf[MAXDATASIZE];
  17.     struct hostent *host;
  18.     struct sockaddr_in serv_addr;
  19.     if(argc < 2)
  20.     {
  21.         fprintf(stderr,"Please enter the server's hostname!\n");
  22.         exit(1);
  23.     }
  24.     
  25.     host = gethostbyname(argv[1]);
  26.     
  27.     if(host == NULL)
  28.     {
  29.         perror("gethostname error!");
  30.         exit(1);
  31.     }
  32.     
  33.     sockfd = socket(AF_INET,SOCK_STREAM,0);
  34.     
  35.     if(sockfd == -1)
  36.     {
  37.         perror("socket create error!");
  38.         exit(1);
  39.     }
  40.     serv_addr.sin_family = AF_INET;
  41.     serv_addr.sin_port = htons(PORT);
  42.     serv_addr.sin_addr = *((struct in_addr *)host->h_addr);
  43.     bzero(&(serv_addr.sin_zero),8);
  44.     
  45.     int con_ret = connect(sockfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr));
  46.     
  47.     if(con_ret == -1)
  48.     {
  49.         perror("connect error!");
  50.         exit(1);
  51.     }
  52.     
  53.     recvbytes = recv(sockfd,buf,MAXDATASIZE,0);
  54.     
  55.     if(recvbytes == -1)
  56.     {
  57.         perror("conncet error!");
  58.         exit(1);
  59.     }
  60.     buf[recvbytes] = '\0';
  61.     printf("receive: %s",buf);
  62.     close(sockfd);

  63. }



阅读(1011) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~