Unix网络编程学习 < 一 >
阅读原文时间:2023年07月10日阅读:1

#include "unp.h"

int main(int argc , char**argv)
{
int sockfd , n; //sockfd套接字描述符
char recvline[MAXLINE + ];
struct sockaddr_in servaddr;

 /\*sockaddr\_in={  
  \*    short sin\_family;  地址族  
  \*    unsigned short sin\_port; 端口号,必须采用网络数据格式,可用htons()函数将数字转换为网络数据格式  
  \*    struct in\_addr sin\_addr;  Ip地址  
  \*    unsigned char sin\_zero\[8\];  
  \*/

 if (argc != )  
     err\_quit("usage: a.out <IPaddress>");  
 if ((sockfd = socket(AF\_INET,SOCK\_STREAM,)) < )  
     err\_sys("socket error");

 bzero(&servaddr,sizeof(servaddr));//将servaddr置0  
 servaddr.sin\_family = AF\_INET;  
 servaddr.sin\_port = htons();//将数字转换为网络数据格式  
 if (inet\_pton(AF\_INET,argv\[\],&servaddr.sin\_addr) <= )  
     err\_quit("inet\_pton error for %s",argv\[\]);  
 if (connect(sockfd,(SA \*) &servaddr,sizeof(servaddr)) < )  
     err\_sys("connect error");

 while ( (n = read(sockfd,recvline,MAXLINE)) > ){// read函数读取服务器的应答,并使用fputs输出结果  
     recvline\[n\] = ;  
     if ( fputs(recvline,stdout) == EOF)  
         err\_sys("fputs error");  
 }  
 if (n < )  
     err\_sys("read error");

 exit();  

}

  • 第18行socket函数原型为int socket(int af ,int type , int protocal);

    • 用途:根据指定的地址族,数据类型和协议来分配一个套接口的描述字及其所用的资源
  • 第24行的inet_pton函数原型为int inet_pton(int af , const char* src , void *dst);

    • 用途:将字符串转换为网络地址
    • af是地址族,src为来源地址,dst则是接收转换后的数据
  • 第26行的connect函数原型为 int connect(int s, const struct sockaddr * name, int namelen);

    • 用途:建立与指定socket的连接
    • s标识一个未连接的socket,name为指向要连接的套接字的sockaddr结构体的指针,namelen为sockaddr结构体的字节长度

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章