socket的TCP通信简单例子


    
    
  1. /*
  2. tcp客户端程序,注意一定要修改addr的值和本机相同才能正常工作
  3. */
  4. #include <stdio.h>
  5. #include <unistd.h>
  6. #include <sys/types.h> /* See NOTES */
  7. #include <sys/socket.h>
  8. #include <arpa/inet.h>
  9. #include <string.h>
  10. #include <netinet/in.h>
  11. #include <stdlib.h>
  12. #include <errno.h>
  13. int main(void)
  14. {
  15. int sock;
  16. int server_len;
  17. struct sockaddr_in server_address;
  18. sock = socket(PF_INET, SOCK_STREAM, 0); //创建SOCKET
  19. server_address.sin_family = AF_INET; //指定通讯协议
  20. server_address.sin_addr.s_addr = htonl(INADDR_ANY); //或是指定当前IP地址inet_addr(“192.168.88.123”);
  21. server_address.sin_port = htons( 12345);
  22. connect(sock,(struct sockaddr*)&server_address, sizeof(server_address));
  23. char sendbuf[ 1024]={ 0};
  24. char recvbuf[ 1024]={ 0};
  25. while(fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
  26. {
  27. write(sock,sendbuf, sizeof(sendbuf));
  28. read(sock,recvbuf, sizeof(recvbuf));
  29. fputs(recvbuf, stdout);
  30. memset(sendbuf, 0, sizeof(sendbuf));
  31. memset(recvbuf, 0, sizeof(recvbuf));
  32. }
  33. close(sock);
  34. return 0;
  35. }



    
    
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. /*
  4. tcp服务器程序
  5. */
  6. #include <sys/types.h> /* See NOTES */
  7. #include <sys/socket.h>
  8. #include <arpa/inet.h>
  9. #include <string.h>
  10. #include <netinet/in.h>
  11. #include <stdlib.h>
  12. #include <errno.h>
  13. int main(void)
  14. {
  15. int server_sockfd,client_sockfd;
  16. int server_len,client_len;
  17. struct sockaddr_in server_address,client_address;
  18. server_sockfd = socket(PF_INET, SOCK_STREAM, 0); //创建SOCKET
  19. server_address.sin_family = AF_INET; //指定通讯协议
  20. server_address.sin_addr.s_addr = htonl(INADDR_ANY); //相当于0.0.0.0
  21. server_address.sin_port = htons( 12345);
  22. server_len = sizeof(server_address);
  23. bind(server_sockfd, (struct sockaddr *)&server_address, server_len); //绑定SOCKET对象
  24. listen(server_sockfd, SOMAXCONN);
  25. printf( "SOMAXCONN:%d\n",SOMAXCONN);
  26. client_len= sizeof(client_address);
  27. client_sockfd=accept(server_sockfd, (struct sockaddr *)&client_address, ( socklen_t *)&client_len);
  28. char recvbuf[ 1024];
  29. while( 1)
  30. {
  31. memset(recvbuf, 0, sizeof(recvbuf));
  32. read(client_sockfd, recvbuf, sizeof(recvbuf));
  33. fputs(recvbuf, stdout);
  34. write(client_sockfd,recvbuf, sizeof(recvbuf));
  35. }
  36. close(server_sockfd);
  37. close(client_sockfd);
  38. return 0;
  39. }



  
  
  1. /*
  2. tcp客户端程序,注意一定要修改addr的值和本机相同才能正常工作
  3. */
  4. #include <stdio.h>
  5. #include <unistd.h>
  6. #include <sys/types.h> /* See NOTES */
  7. #include <sys/socket.h>
  8. #include <arpa/inet.h>
  9. #include <string.h>
  10. #include <netinet/in.h>
  11. #include <stdlib.h>
  12. #include <errno.h>
  13. int main(void)
  14. {
  15. int sock;
  16. int server_len;
  17. struct sockaddr_in server_address;
  18. sock = socket(PF_INET, SOCK_STREAM, 0); //创建SOCKET
  19. server_address.sin_family = AF_INET; //指定通讯协议
  20. server_address.sin_addr.s_addr = htonl(INADDR_ANY); //或是指定当前IP地址inet_addr(“192.168.88.123”);
  21. server_address.sin_port = htons( 12345);
  22. connect(sock,(struct sockaddr*)&server_address, sizeof(server_address));
  23. char sendbuf[ 1024]={ 0};
  24. char recvbuf[ 1024]={ 0};
  25. while(fgets(sendbuf, sizeof(sendbuf), stdin) != NULL)
  26. {
  27. write(sock,sendbuf, sizeof(sendbuf));
  28. read(sock,recvbuf, sizeof(recvbuf));
  29. fputs(recvbuf, stdout);
  30. memset(sendbuf, 0, sizeof(sendbuf));
  31. memset(recvbuf, 0, sizeof(recvbuf));
  32. }
  33. close(sock);
  34. return 0;
  35. }



  
  
  1. #include <stdio.h>
  2. #include <unistd.h>
  3. /*
  4. tcp服务器程序
  5. */
  6. #include <sys/types.h> /* See NOTES */
  7. #include <sys/socket.h>
  8. #include <arpa/inet.h>
  9. #include <string.h>
  10. #include <netinet/in.h>
  11. #include <stdlib.h>
  12. #include <errno.h>
  13. int main(void)
  14. {
  15. int server_sockfd,client_sockfd;
  16. int server_len,client_len;
  17. struct sockaddr_in server_address,client_address;
  18. server_sockfd = socket(PF_INET, SOCK_STREAM, 0); //创建SOCKET
  19. server_address.sin_family = AF_INET; //指定通讯协议
  20. server_address.sin_addr.s_addr = htonl(INADDR_ANY); //相当于0.0.0.0
  21. server_address.sin_port = htons( 12345);
  22. server_len = sizeof(server_address);
  23. bind(server_sockfd, (struct sockaddr *)&server_address, server_len); //绑定SOCKET对象
  24. listen(server_sockfd, SOMAXCONN);
  25. printf( "SOMAXCONN:%d\n",SOMAXCONN);
  26. client_len= sizeof(client_address);
  27. client_sockfd=accept(server_sockfd, (struct sockaddr *)&client_address, ( socklen_t *)&client_len);
  28. char recvbuf[ 1024];
  29. while( 1)
  30. {
  31. memset(recvbuf, 0, sizeof(recvbuf));
  32. read(client_sockfd, recvbuf, sizeof(recvbuf));
  33. fputs(recvbuf, stdout);
  34. write(client_sockfd,recvbuf, sizeof(recvbuf));
  35. }
  36. close(server_sockfd);
  37. close(client_sockfd);
  38. return 0;
  39. }


猜你喜欢

转载自blog.csdn.net/weixin_42255385/article/details/82116225