tcp_client.c 客户程序服务模型

本文详细介绍了如何使用C++实现TCP客户端程序,包括获取主机名、创建套接字、填充服务器信息、发起连接、发送数据和关闭连接等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


  1. #include <stdlib.h>  
  2. #include <stdio.h>  
  3. #include <errno.h>  
  4. #include <string.h>  
  5. #include <netdb.h>  
  6. #include <sys/types.h>  
  7. #include <netinet/in.h>  
  8. #include <sys/socket.h>  
  9. #define portnumber 3333  
  10.   
  11. int main(int argc,char *argv[])  
  12. {  
  13.         int sockfd;  
  14.         char buffer[1024];  
  15.         struct sockaddr_in server_addr;  
  16.         struct hostent *host;  
  17.           
  18.         /*使用hostname查询host 名字*/   
  19.         if(argc!=2)  
  20.         {  
  21.                 fprintf(stderr,"Usage:%s hostname \a\n",argv[0]);  
  22.                 exit(1);      
  23.         }  
  24.           
  25.         if((host=gethostbyname(argv[1]))==NULL)  
  26.         {  
  27.                 fprintf(stderr,"Gethostname error\n");  
  28.                 exit(1);      
  29.         }  
  30.           
  31.         /*客户程序开始建立sockfd描述符*/  
  32.         if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)//AF_INET:INTERNET;SOCK_STREAM:TCP  
  33.         {  
  34.                     fprintf(stderr,"Socket Error:%s\a\n",strerror(errno));  
  35.                     exit(1);      
  36.         }  
  37.           
  38.         /*客户程序填充服务器的资料*/  
  39.         bzero(&server_addr,sizeof(server_addr)); //初始化,置0  
  40.         server_addr.sin_family=AF_INET;   //internet  
  41.         server_addr.sin_port=htons(portnumber);//将本机上的long数据转化为网络上的long数据  
  42.         server_addr.sin_addr=*((struct in_addr *)host->h_addr);//IP地址  
  43.           
  44.         /*客户程序发起连接请求*/  
  45.         if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)  
  46.         {  
  47.                 fprintf(stderr,"Connection Error:%s\a\n",strerror(errno));  
  48.                 exit(1);      
  49.         }  
  50.           
  51.         /*连接成功了*/  
  52.         printf("Please input char:\n");  
  53.         /*发送数据*/  
  54.         fgets(buffer,1024,stdin);  
  55.         write(sockfd,buffer,strlen(buffer));  
  56.           
  57.         /*结束通讯*/  
  58.         close(sockfd);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值