server.c
上传用户:bilang918
上传日期:2010-03-24
资源大小:558k
文件大小:1k
源码类别:

网络

开发平台:

Unix_Linux

  1. /* File: server.c */
  2. #include <stdio.h>
  3. #include <sys/types.h>
  4. #include <sys/socket.h>
  5. #include <netinet/in.h>
  6. int main(int argc, char **argv)
  7. {
  8. int fd;
  9. int address_len;
  10. struct sockaddr_in address;
  11. int listenfd;
  12. //建立套接口
  13. fd = socket(AF_INET, SOCK_STREAM, 0);
  14. //绑定地址和端口
  15. address.sin_family = AF_INET;
  16. address.sin_addr.s_addr = htonl(INADDR_ANY);
  17. address.sin_port = htons(1234);
  18. address_len = sizeof(address);
  19. bind(fd, (struct sockaddr *)&address, address_len);
  20. //建立套接口队列
  21. listenfd = listen(fd, 64);
  22. while(1) {
  23. struct sockaddr_in client_address;
  24. int len;
  25. int client_sockfd;
  26. char *data = "Server to Client String!n";
  27. char data2[100];
  28. pid_t pid;
  29. printf("waiting...");
  30. fflush(stdout);
  31. //等待
  32. len = sizeof(client_address);
  33. client_sockfd = accept(fd, 
  34. (struct sockaddr *)&client_address, &len);
  35. //建立子进程
  36. if( (pid = fork()) == 0){ //child
  37. close(listenfd);
  38. //接收数据
  39. bzero((void *)data2, 100);
  40. readline(client_sockfd, (void *)data2, 100);
  41. printf("server read line:%s", data2);
  42. //发送数据
  43. writen(client_sockfd,(void *)data,strlen(data));
  44. printf("server send line:%s", data);
  45. //关闭联接并且退出
  46. close(client_sockfd);
  47. exit(0);
  48. }
  49. close(client_sockfd); //parent
  50. }
  51. }