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

📄 bindacpt.c

📁 实战Linux socket编程例题源代码
💻 C
字号:
/* bindacpt.c: * * socket, bind, listen & accept: */#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <time.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h> extern int  mkaddr(void *addr,  int *addrlen,  char *str_addr,  char *protocol);/* * This function reports the error and * exits back to the shell : */voidbail(const char *on_what) {    if ( errno != 0 ) {        fputs(strerror(errno),stderr);        fputs(": ",stderr);    }    fputs(on_what,stderr);    fputc('\n',stderr);    exit(1);}/* * Call socket(2), bind(2), * listen(2) and accept(2) : * * Returns socket. */intBindAccept(char *addr) {    int z;    int s;    struct sockaddr_in adr_srvr;    struct sockaddr_in adr_clnt;    int len_inet;    /*     * Create a TDP/IP socket to use :     */    s = socket(PF_INET,SOCK_STREAM,0);    if ( s == -1 )        bail("socket()");    /*     * Bind the server address:     */    len_inet = sizeof adr_srvr;    z = mkaddr(&adr_srvr,&len_inet,        addr,"tcp");    if ( z != 0 ) {        puts("Bad address/port");        exit(1);    }    /*     * Bind server address :     */    z = bind(s,(struct sockaddr *)&adr_srvr,            len_inet);    if ( z == -1 )        bail("bind(2)");    /*     * Set listen mode :     */    if ( listen(s,10) == -1 )        bail("listen(2)");    /*     * Wait for a connect :     */    len_inet = sizeof adr_clnt;    z = accept(s,        (struct sockaddr *)&adr_clnt,        &len_inet);    if ( z == -1 )            bail("accept(2)");    close(s);   /* No longer needed */    return z;   /* Connected socket */}intConnect(char *addr) {    int z;    int s;    struct sockaddr_in adr_srvr;    int len_inet;        /*     * Create a TDP/IP socket to use :     */    s = socket(PF_INET,SOCK_STREAM,0);    if ( s == -1 )        bail("socket()");    /*     * Bind the server address:     */    len_inet = sizeof adr_srvr;    z = mkaddr(&adr_srvr,&len_inet,        addr,"tcp");    if ( z != 0 ) {        puts("Bad address/port");        exit(1);    }    /*     * Connect to server :     */    len_inet = sizeof adr_srvr;    z = connect(s,        (struct sockaddr *)&adr_srvr,        len_inet);    if ( z == -1 )            bail("connect(2)");    return s;   /* Connected socket */}

⌨️ 快捷键说明

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