1. TCP服务器端流程

TCP服务器客户端程序框架

2. TCP客户端流程

TCP服务器客户端程序框架

 

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

 

TCP服务器客户端程序框架

 

示例代码:

 

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[])

{

       int    socketfd;

       int    client_fd;

       int    addrlen;

       u_short    port;

       pthread_t    a_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[])

{

       int    socketfd;

       int    addrlen;

       int    retval;

       u_short    port;

       pthread_t    a_thread;

       charbufread[MAXSIZE] = {0};

       charbufwrite[MAXSIZE] = {0};

       struct    sockaddr_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);

       }

}


相关文章:

  • 2022-01-28
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2021-08-18
  • 2022-12-23
  • 2021-11-13
猜你喜欢
  • 2021-12-12
  • 2021-08-26
  • 2022-12-23
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案