⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 daytimecli.c

📁 SUN Solaris8平台下进程间通信
💻 C
字号:
#include <time.h>#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h> #include "err_exit.h"    #define  MAXBUFFSIZE    256void init_sockaddr(struct sockaddr_in *, const char *, const char *);int socket_connect(const char *hostname, const char *serv_port){    int sockfd;    struct sockaddr_in sockaddr;    struct hostent *hp;    char *host, myname[104];    /* 初始服务器的IP地址和端口 */    init_sockaddr(&sockaddr, hostname, serv_port);    /* 创建套接字 */    if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)        err_exit("socket error");    /* 建立与服务的连接 */    if(connect(sockfd, (struct sockaddr *)&sockaddr,sizeof(sockaddr)) < 0)        err_exit("connect error");    return(sockfd);}int main(int argc, char **argv){    int sockfd,n;    char recvbuff[MAXBUFFSIZE], *host;    struct sockaddr_in servaddr;    /* 检查参数 */    if(argc < 2)        host = NULL;    else        host = argv[1];    /* 创建套接字并建立与服务的连接 */    sockfd = socket_connect(host,"13");    /* 读服务的回答并显示结果 */    while((n = read(sockfd,recvbuff,MAXBUFFSIZE)) > 0){        recvbuff[n] = 0;    /* 填入终止符 */        fputs(recvbuff,stdout);    }    if(n<0)        err_exit("read error");    exit(0);}void init_sockaddr(struct sockaddr_in *name, const char *hostname,                      const char *serv){    struct hostent *hp;    char *host,myname[255];    if (hostname == NULL){        gethostname(myname, sizeof(myname));        host = myname;    }    else        host = hostname;    /* 获取主机地址信息 */    if ((hp = gethostbyname(host)) == NULL){        printf("Unknown host: %s\n", host);        exit(-1);    }    /* 填入服务器的IP地址和端口 */    bzero(name,sizeof(struct sockaddr));    if (hp->h_addrtype == AF_INET){           name->sin_family = AF_INET;        bcopy(hp->h_addr_list[0], &name->sin_addr, hp->h_length);        if (serv == NULL)            name -> sin_port = htons(0);        else            name -> sin_port = htons(atoi(serv));    }    else {        printf("Unknown address type\n");        exit(-1);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -