zoukankan      html  css  js  c++  java
  • Unix网络编程学习 < 一 >

     1 #include "unp.h"
     2 
     3 int main(int argc , char**argv)
     4 {
     5     int sockfd , n; //sockfd套接字描述符
     6     char recvline[MAXLINE + 1];
     7     struct sockaddr_in servaddr;
     8     
     9     /*sockaddr_in={
    10      *    short sin_family;  地址族
    11      *    unsigned short sin_port; 端口号,必须采用网络数据格式,可用htons()函数将数字转换为网络数据格式
    12      *    struct in_addr sin_addr;  Ip地址
    13      *    unsigned char sin_zero[8];
    14      */
    15 
    16     if (argc != 2)
    17         err_quit("usage: a.out <IPaddress>");
    18     if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
    19         err_sys("socket error");
    20 
    21     bzero(&servaddr,sizeof(servaddr));//将servaddr置0
    22     servaddr.sin_family = AF_INET;
    23     servaddr.sin_port = htons(13);//将数字转换为网络数据格式
    24     if (inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)
    25         err_quit("inet_pton error for %s",argv[1]);
    26     if (connect(sockfd,(SA *) &servaddr,sizeof(servaddr)) < 0)
    27         err_sys("connect error");
    28     
    29     while ( (n = read(sockfd,recvline,MAXLINE)) > 0){// read函数读取服务器的应答,并使用fputs输出结果
    30         recvline[n] = 0;
    31         if ( fputs(recvline,stdout) == EOF)
    32             err_sys("fputs error");
    33     }
    34     if (n < 0)
    35         err_sys("read error");
    36 
    37     exit(0);
    38 }
    • 第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结构体的字节长度
  • 相关阅读:
    LAB8 android
    python3速查参考- python基础 1 -> python版本选择+第一个小程序
    selenium三种断言以及异常类型
    selenium+java:获取列表中的值
    selenium测试(Java)--元素操作(五)
    redhat网卡设置
    PYTHON TDD学习(一)-->Python 3.4版本环境安装Django及其启动
    渗透测试
    实用--功能测试方法与实际测试内容
    SQL常见面试题(学生表_课程表_总表)
  • 原文地址:https://www.cnblogs.com/danielStudy/p/6694433.html
Copyright © 2011-2022 走看看