当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

网络编程中参数的获得与设置

取得本地主机名:

    int gethostname(char *hostname, size_t size);

    获得主机名存到hostname中。


    取得本地的信息:

    int getsockname(int sockfd, struct sockaddr *addr, int *addrlen);

    addr存有返回的主机信息。

    示例:

    struct sockaddr_in sa;

    int len = sizeof(sa);

    getpeername(sockfd, (struct sockaddr *)&sa, &len);

    printf("本地IP:%s", inet_ntoa(sa.sin_addr));

   

    取得对方主机的信息:

    int getpeername(int sockfd, struct sockaddr *addr, int *addrlen);

    addr存有返回的主机信息。

    示例:

    struct sockaddr_in sa;

    int len = sizeof(sa);

    getpeername(sockfd, (struct sockaddr *)&sa, &len);

    printf("对方IP:%s", inet_ntoa(sa.sin_addr));

 


    获得DNS信息:

    struct hostent *gethostbyname(const char *name);

    struct hostent *gethostbyaddr(const char *addr, int len, int type);

    返回了一个指向struct hostent的指针,struct hostent定义如下:

    struct hostent {

    char *h_name; /* official name of host */

    char **h_aliases; /* alias list */

    int h_addrtype; /* host address type */

    int h_length; /* length of address */

    char **h_addr_list; /* list of addresses */

    };

    #define h_addr h_addr_list[0] /* for backward compatibility */

    对于如何获得DNS信息,将在后面的程序片断中详细讲解。

    DNS操作时的错误处理与普通程序不同,gethostbyname通过设置h_errno代表出错号,对应的错误函数有hstrerror()和herror(),分别对应于strerror()和perror()这两个普通的错误函数。


    获得或改变socket属性

    int getsockopt(int sockfd, int level, int name, char *value, int *optlen);

    int setsockopt(int sockfd, int level, int name, char *value, int *optlen);

    对于socket编程,level一般为常数SOL_SOCKET

    name属性类型,value属性参数,optlen属性内存块的长度

    常用的有:

    SO_RCVTIMEO,SO_SNDTIMEO:获得或设置socket发送/接收的timeout。

    SO_SNDBUF,SO_RCVBUF:获得或设置socket发送/接收的buffer大小。

    SO_BROADCAST:获得或设置socket状况,使之可以广播发送数据报。(只能用于UDP方式)。

    SO_REUSEADDR:设置该socket绑定的端口可以被重用。

 

共4页 首页 上一页 1 2 3 4 下一页 尾页 跳转到
相关内容
赞助商链接