TCP服务器客户端程序框架

1. TCP服务器端流程

2. TCP客户端流程

3. TCP/IP服务器端与客户端框架

示例代码:

TCP服务器端:

/*************************************************************************

 @Author: wanghao

 @Created Time : Fri 25 May 2018 08:09:19 PM PDT

 @File Name: server.c

 @Description:

 ************************************************************************/

#include <stdio.h>

#include <sys/types.h>     

#include <sys/socket.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <unistd.h>

#include <string.h>

#include <pthread.h>

#define N 36

#define MAXSIZE 24

void *thread_functio(void *client_fd);

int main(int argc, const char *argv[])

{

       intsocketfd;

       intclient_fd;

       intaddrlen;

       u_shortport;

       pthread_ta_thread;

       charbufwrite[MAXSIZE] = {0};

       structsockaddr_in my_addr;

       structsockaddr_in client_addr;

       if(argc< 3)

       {

              printf("usage:%s <IPadd> <Port>\n",argv[0]);

              return-1;

       }

       socketfd= socket(PF_INET, SOCK_STREAM, 0);

       if(socket< 0)

       {

              perror("");

              return-1;

       }

       port= (u_short)atol(argv[2]);

       my_addr.sin_family= PF_INET;

       my_addr.sin_port= htons(port);

       my_addr.sin_addr.s_addr= inet_addr(argv[1]);

       addrlen= sizeof(struct sockaddr_in);

       if(bind(socketfd,(struct sockaddr *)(&my_addr),addrlen) < 0)

       {

              perror("");

              return-2;

       }

       listen(socketfd,N);

       if((client_fd= accept(socketfd,(struct sockaddr *)(&client_addr),&addrlen)) < 0)

       {

              perror("");

              return-3;

       }

       printf("Iam tcp server!\n");

       if(pthread_create(&a_thread,NULL, thread_functio,(void *)&client_fd) < 0)

       {

              perror("");

              return-4;

       }

       while(1)

       {

                     memset(bufwrite,0, MAXSIZE);

                     fgets(bufwrite,MAXSIZE, stdin);

                     write(client_fd,bufwrite,strlen(bufwrite));

       }

       close(socketfd);

       close(client_fd);

       return0;

}

void *thread_functio(void *client_fd)

{

       charbufread[MAXSIZE] = {0};

       while(1)

       {     

              memset(bufread,0, MAXSIZE);

              read(*(int*)client_fd, bufread, MAXSIZE);

              printf("%s\n",bufread);

       }

}

TCP客户端代码:

/*************************************************************************

 @Author: wanghao

 @Created Time : Fri 25 May 2018 08:09:19 PMPDT

 @File Name: client.c

 @Description:

 ************************************************************************/

#include <stdio.h>

#include <sys/types.h>     

#include <sys/socket.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include <unistd.h>

#include <string.h>

#include <pthread.h>

#include <sys/stat.h>

#include <fcntl.h>

#define N 36

#define MAXSIZE 24

void *thread_functio(void *client_fd);

int main(int argc, const char *argv[])

{

       intsocketfd;

       intaddrlen;

       intretval;

       u_shortport;

       pthread_ta_thread;

       charbufread[MAXSIZE] = {0};

       charbufwrite[MAXSIZE] = {0};

       structsockaddr_in server_addr;

       if(argc< 3)

       {

              printf("usage:%s <IPadd> <Port>\n",argv[0]);

              return-1;

       }

       socketfd= socket(PF_INET, SOCK_STREAM, 0);

       if(socket< 0)

       {

              perror("");

              return-1;

       }

       port= (u_short)atol(argv[2]);

       server_addr.sin_family= PF_INET;

       server_addr.sin_port= htons(port);

       server_addr.sin_addr.s_addr= inet_addr(argv[1]);

       addrlen= sizeof(struct sockaddr_in);

       if(connect(socketfd,(struct sockaddr *)(&server_addr), addrlen) < 0)

       {

              perror("");

              return-2;

       }

       printf("Iam tcp client!\n");

       if(pthread_create(&a_thread,NULL, thread_functio,(void *)&socketfd) < 0)

       {

              perror("");

              return-4;

       }

       while(1)

       {

              memset(bufwrite,0, MAXSIZE);

              fgets(bufwrite,MAXSIZE, stdin);

              retval= write(socketfd,bufwrite, strlen(bufwrite));

              if(retval< 0)

              {

                     perror("");

                     return-5;

              }

              elseif(retval == 0)

              {

                     perror("tcpserver off\n");

                     return-6;

              }

       }

       close(socketfd);

       return0;

}

void *thread_functio(void *socketfd)

{

       charbufread[MAXSIZE] = {0};

       while(1)

       {     

              memset(bufread,0, MAXSIZE);

              read(*(int*)socketfd, bufread, MAXSIZE);

              printf("%s\n",bufread);

       }

}


猜你喜欢

转载自blog.csdn.net/weixin_42048417/article/details/80487245