server.c
上传用户:huangiiw
上传日期:2022-08-02
资源大小:1k
文件大小:1k
源码类别:

网络编程

开发平台:

Unix_Linux

  1. #include <sys/types.h>
  2. #include <sys/socket.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <errno.h>
  6. #include <string.h>
  7. #include <unistd.h>
  8. #include <netinet/in.h>
  9. #define PORT 4321
  10. #define BUFFER_SIZE 1024
  11. #define MAX_QUE_CONN_NM 1
  12. int main()
  13. {
  14. struct sockaddr_in server_sockaddr,client_sockaddr;
  15. int sin_size,recvbytes;
  16. int sockfd,client_fd;
  17. double buf[BUFFER_SIZE];
  18. /*建立socket连接*/
  19. if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
  20. {
  21. perror("socket");
  22. exit(1);
  23. }
  24. printf("socket id = %dn",sockfd);
  25. server_sockaddr.sin_family=AF_INET;
  26. server_sockaddr.sin_port=htons(PORT);
  27. server_sockaddr.sin_addr.s_addr=INADDR_ANY;
  28. bzero(&(server_sockaddr.sin_zero),8);
  29. int i=1;
  30. setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
  31. if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr))==-1)
  32. {
  33. perror("bind");
  34. exit(1);
  35. }
  36. printf("bind success!n");
  37. if(listen(sockfd,MAX_QUE_CONN_NM)==-1)
  38. {
  39. perror("listen");
  40. exit(1);
  41. }
  42. printf("listening......n");
  43. if((client_fd=accept(sockfd,(struct sockaddr *)&client_sockaddr,&sin_size))==-1)
  44. {
  45. perror("accept");
  46. exit(1);
  47. }
  48. while(1) {
  49. memset(buf,0,sizeof(buf));
  50. if ((recvbytes=recv(client_fd,buf,BUFFER_SIZE,0))==-1)
  51. {
  52. perror("recv");
  53. exit(1);
  54. }
  55. printf("received success!n"); for(i=0;i<15;i++) printf("the data is %en",buf[i]);
  56. // close(sockfd); }
  57. exit(0);
  58. }