Error[8]: Undefined offset: 1229, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd[+++][+++]
    [+++] [+++][+++]
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1230, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd[+++]
    [+++] [+++][+++]
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1231, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd
    [+++] [+++][+++]
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1232, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd
     [+++][+++]
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1233, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd
     [+++]
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Error[8]: Undefined offset: 1234, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd
     
[+++]
)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Linux-C语言 网络TCP单次通信、多次通信、多线程通信逐步实现_C_内存溢出

Linux-C语言 网络TCP单次通信、多次通信、多线程通信逐步实现

Linux-C语言 网络TCP单次通信、多次通信、多线程通信逐步实现,第1张

一、TCP通信,只发送一次就结束程序 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端只能向服务端发送一次消息,消息返回后客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

打开两个终端,客户端服务器各一个,先运行服务器端,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

客户端源码:
#include
#include
#include
#include
#include

#define SERVPORT 8080

int main(int argc,int *argv[])
{
    int sockfd;
    int recv_len;
    struct sockaddr_in servaddr,cliaddr;
    char sendline[100];
    char recvline[100];

    if(argc != 2)
    {
        printf("need server address\n");
        exit(0);
    }

    sockfd = socket(AF_INET,SOCK_STREAM,0);

    bzero(&servaddr,sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    servaddr.sin_port = htons(SERVPORT);
    servaddr.sin_addr.s_addr = inet_addr(argv[1]);

    connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));

    while(fgets(sendline,100,stdin) != NULL)
    {
        sendto(sockfd,sendline,strlen(sendline),0,
               (struct sockaddr *)&servaddr,sizeof(servaddr));

        recv_len = recvfrom(sockfd,recvline,100,0,NULL,NULL);

        recvline[recv_len] = ';'fputs

        (,recvlinestdout);}

    close

    ()sockfd;return

    0 ;}
#
服务器源码:
include#
include#
include#
include#
include#

include#
include#
include#
include#

defineSERVPORT 8080 int

main (int) argcint
{
    , listenfd,connfd,recv_len;send_lensocklen_t
    ; clilenstruct
    sockaddr_in , servaddr;cliaddrchar
    [ buff100];=

    listenfd socket (,AF_INET,SOCK_STREAM0);bzero

    (&,servaddrsizeof()servaddr);.
    servaddr=sin_family ; AF_INET.
    servaddr=sin_port htons ()SERVPORT;.
    servaddr.sin_addr=s_addr htonl ()INADDR_ANY;bind

    (,listenfd(structsockaddr * )&,servaddrsizeof()servaddr);printf
    ("bind is sucessifully!\n");listen

    (,listenfd10);=

    connfd accept (,listenfd(structsockaddr * )&,cliaddr&)clilen;printf
    ("connect sucessifully!\n");=

    recv_len recv (,connfd,buff100,0);[

    buff]recv_len= ';' printf(
    "received the following:\n");printf(
    "%s",);bufffor(

    int=0 i;<; i++recv_len) i[]
    {
        buff=itoupper ( []buff)i;}=
    send
    send_len ( ,,connfd,buff0recv_len);close(

    );listenfdreturn0
    ; }#
include
二、TCP通信,服务端与客户端实现多次通信 功能描述:

1、服务端一次只能连接一个客户端。
2、客户端可以向服务端多次发送消息,直到客户端发送一个空的消息后,客户端和服务器程序结束。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。

步骤同第一个(省) 客户端源码:
#include
#include
#include
#include
#include
#include
#include
#define
SERVPORT8080 int main

( int,char argc*[ ]argv)int;
{
    int sockfd;
    struct recv_lensockaddr_in
    , ; servaddrcharcliaddr[
    100 sendline];char[
    100 recvline];if(

    !=2argc ) printf(
    {
        "need server address\n");exit(
        0);}=
    socket

    sockfd ( ,,AF_INET0SOCK_STREAM);bzero(

    &,sizeofservaddr())servaddr;.=
    servaddr;sin_family . AF_INET=
    servaddrhtonssin_port ( );SERVPORT..
    servaddr=sin_addrinet_addrs_addr ( [1argv]);connect(

    ,(sockfdstructsockaddr* ) &,sizeofservaddr())servaddr;printf(

    "send to service  :  ");while(
    fgets(,100sendline,stdin)!=NULL ) send(
    {
        ,,sockfdstrlensendline(),sendline0);=recv

        recv_len ( ,,sockfd100recvline,0);[]

        recvline=recv_len';' printf ("back from service:  "
        );fputs(,
        stdout)recvline;printf("------------------------------\n"
        );printf("send to service  :  "
        );//close(sockfd);//break;}
        close
        (
    )

    ;returnsockfd0;

    } #include
#
服务器源码:
include#
include#
include#
include#
include#

include#
include
#include#
defineSERVPORT

8080int main (

int )int, argc,
{
    , listenfd;connfdsocklen_trecv_len;send_lenstruct
    sockaddr_in clilen,
    ; char servaddr[cliaddr100
    ] buff;=socket(

    listenfd , ,0AF_INET)SOCK_STREAM;bzero(&

    ,sizeof(servaddr));servaddr.=;
    servaddr.sin_family = AF_INEThtons
    servaddr(sin_port ) ;.SERVPORT.=
    servaddrhtonlsin_addr(s_addr ) ;bindINADDR_ANY(,

    (structlistenfdsockaddr*) & ,sizeof(servaddr));servaddrprintf("bind is sucessifully! \n"
    );listen(,

    10)listenfd;printf("Waiting for clients to connect...\n"
    );=accept(
    connfd , (structlistenfdsockaddr*) & ,&)cliaddr;printfclilen("%d connect sucessifully!\n"
    ,);whileconnfd(1

    )=recv(
    {
        recv_len , ,100connfd,buff0);if(==
        0)recv_len break ;}
        {
            []
        =
        buff';'recv_lenprintf ( "received the following:\n")
        ;printf("%s",
        );for(buffint=

        0;< i;++) i[recv_len] i=toupper
        {
            buff(i[ ] );buff}i=send(
        ,
        send_len , ,0connfd)buff;recv_len}close()
    ;

    return0listenfd;}
    # include#
include
三、多线程实现TCP-Socket通信 功能描述:

1、服务端可以同时连接多个客户端。
2、多个客户端并发运行,同时实现与服务器的通信。
3、客户端向服务端发送一个字符串,服务端将字符串改为大写后返还到客户端。
4、客户端全部关闭时,服务器仍然运行,当有新的客户端连接时,继续工作。

步骤一:

依次编译客户端和服务器源程序,然后使用ifconfig命令查看虚拟机IP地址,用于之后客户端使用这个IP地址访问服务器。

步骤二:

然后打开三个终端,一个为服务器,两个为客户端,

步骤三:

照着下图,先运行服务器,再运行客户端,全部运行之后便可以通过客户端向服务器发送消息了。

效果展示:

客户端源码:
#include
#include
#include
#include
#include
#
include#define
SERVPORT8080

intmain ( int

, char*[ argc]) intargv;int;
{
    struct sockfdsockaddr_in
    , recv_len;
    char [ servaddr100cliaddr]
    ; sendlinechar[100]
    ; recvlineif(!=2

    )printfargc ( "need server address\n")
    {
        ;exit(0)
        ;}=socket(
    ,

    sockfd , 0)AF_INET;SOCK_STREAMbzero(&,

    sizeof()servaddr);.servaddr=;.
    servaddr=sin_family htons AF_INET(
    servaddr)sin_port ; ..SERVPORT=inet_addr
    servaddr(sin_addr[s_addr 1 ])argv;connect(,(

    structsockaddrsockfd*)& , sizeof()servaddr);printfservaddr("send to service  :  ")

    ;while(fgets(
    ,100,stdinsendline)!=NULL)send ( ,,
    {
        strlen(sockfd)sendline,0)sendline;=recv(,

        recv_len , 100,sockfd0recvline);[]=';'

        recvline// 给接收到的结果加上字符串结束符recv_lenprintf ( "back from service:  ") ;
        fputs(,stdout)
        ;//将收到的结果发送到控制台recvlineprintf("------------------------------\n") ;
        printf("send to service  :  ");
        //close(sockfd);//break;}close(
        )
        ;
    return
    
    0;sockfd}#
    include #include
#

服务器源码
include#
include#
include#
include#
include

#include
#include#
defineSERVPORT
8080#

defineCONNECTNUM 10 void
thread_fun( void *
) int=* ( cconnfdint
{
    * connfd );int, ;charcconnfd[
    100 recv_len]send_len;
    while buff(1)=
    
    recv(,,
    {
        recv_len 100 ,0connfd)buff;if(==0)
        break;recv_len } []
        {
            =';'
        printf
        buff(recv_len"received from client%d the following:\n" , );
        printf("%s",connfd);
        for(int=buff0;


        <;++ i)[] i=recv_lentoupper i([
        {
            buff]i) ; }=buffsendi(,,
        ,
        send_len 0 );connfdprintfbuff(recv_len"have replied client%d ,over. \n ",);
        printf("------------------------------ \n")connfd;}
        pthread_exit(NULL);
    }
    intmain(int)
int
, ,,; argcsocklen_t
{
    ; listenfdstructconnfdsockaddr_inrecv_len,send_len;
    char clilen[
    100 ] servaddr;cliaddrpthread_t
    [ buff];=socket
    ( pid,CONNECTNUM,0

    listenfd ) ;bzeroAF_INET(SOCK_STREAM&,sizeof(

    ));servaddr.=;servaddr.=htons
    servaddr(sin_family ) AF_INET;
    servaddr.sin_port . =htonlSERVPORT()
    servaddr;sin_addrbinds_addr ( ,(INADDR_ANYstructsockaddr

    *)listenfd&,sizeof ( ));servaddrprintf("bind is sucessifully! \n"servaddr);listen
    (,10);

    printf(listenfd"Waiting for clients to connect...\n");for
    (int=0;

    <;++ j )=accept j(CONNECTNUM, j(struct
    {
        connfd sockaddr *)listenfd&,& ) ;printf(cliaddr"%d connect sucessifully!\n",clilen);
        pthread_create(&[connfd],
        NULL,(pidvoidj*),&); }closethread_fun()connfd;return
    0

    ;}listenfd
     

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1325463.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-12
下一篇 2022-06-12

发表评论

登录后才能评论

评论列表(0条)

保存