服务器与客户端的实例整理

来源:互联网 发布:apache编译安装参数 编辑:程序博客网 时间:2024/06/05 05:39

1. /******************* 

2. 服务器 

3. *******************/  

4.   

5. #include <stdio.h>  

6. #include <stdlib.h>  

7. #include <string.h>  

8. #include <strings.h>  

9.   

10. #include <sys/types.h>  

11. #include <sys/socket.h>  

12. #include <netinet/in.h>  

13.   

14. #define SERV_PORT 8000  

15.   

16. int main(int argc, char *argv[])  

17. {  

18.     if(argc != 2)  

19.     {  

20.         printf("Please input one IP!!\n");  

21.         exit(-1);  

22.     }  

23.     int n_read;  

24.     char buffer[1024];  //缓冲  

25.     struct sockaddr_in client;  //存放客户端信息  

26.     int  len = sizeof(client);      //存放客户端的类型长度  

27.     struct sockaddr_in servaddr;    //服务器端  

28.     bzero(&servaddr,sizeof(servaddr));      //清零  

29.     servaddr.sin_family = AF_INET;  //服务器端遵循IPV4  

30.     servaddr.sin_addr.s_addr = inet_addr(argv[1]);      //传入服务器端地址,inet_addr,将字符串转换成地址  

31.     servaddr.sin_port = htons(SERV_PORT);       //端口号,宏定义为8000  

32.   

33.     int sock = socket(AF_INET,SOCK_STREAM,0);   //服务器的套接字  

34.     if(sock == -1)  

35.     {  

36.         perror("sock ");  

37.         exit(-1);  

38.     }  

39.   

40.     if((bind(sock,(struct sockaddr *)&servaddr,sizeof(servaddr))) == -1)        //将套接字与服务器信息绑在一起  

41.     {  

42.         perror("bind ");  

43.         exit(-1);  

44.     }  

45.   

46.     if((listen(sock,5)) == -1)      //设置监听器  

47.     {  

48.         perror("listen ");  

49.         exit(-1);  

50.     }  

51.       

52.       

53.     int fd = accept(sock,(struct sockaddr *)&client,&len);      //打开接收端,将客户端信息传入client中,len会得到客户端地址长度  

54.     if(fd == -1)  

55.     {  

56.         perror("accept ");  

57.         exit(-1);  

58.     }  

59.     printf("client address:%s\n",inet_ntoa(client.sin_addr.s_addr));    //打印客户端地址  

60.     printf("client port:%d\n",len);     //打印客户端地址长度  

61.     while(1)  

62.     {  

63.         memset(buffer,0,sizeof(buffer));  

64.         n_read = read(fd,buffer,sizeof(buffer));    //读取客户端发送的信息  

65.         if(n_read == -1)  

66.         {  

67.             perror("read ");  

68.             exit(-1);  

69.         }  

70.         printf("information : %s\n",buffer);    //打印信息  

71.     }  

72.   

73.     return 0;  

74. }  


 

[cpp] view plain copy  

1. /******************* 

2. 客户端 

3. *******************/  

4.   

5. #include <stdio.h>  

6. #include <stdlib.h>  

7. #include <string.h>  

8. #include <strings.h>  

9.   

10. #include <sys/types.h>  

11. #include <sys/socket.h>  

12. #include <netinet/in.h>  

13.   

14. #define SERV_PORT 8000  

15.   

16. int main(int argc, char *argv[])  

17. {  

18.     if(argc != 2)  

19.     {  

20.         printf("Please input  server IP!\n");  

21.         exit(-1);  

22.     }  

23.       

24.     int con;  

25.     char buffer[1024];  

26.   

27.     int sock = socket(AF_INET,SOCK_STREAM,0);   //定义客户端的套接字  

28.   

29.     struct sockaddr_in server;  

30.     bzero(&server,sizeof(server));  

31.     server.sin_family = AF_INET;        //链接服务器遵循IPV4  

32.     server.sin_addr.s_addr = inet_addr(argv[1]);    //需要链接的服务器地址  

33.     server.sin_port = htons(SERV_PORT);  

34.       

35.     if(connect(sock,(struct sockaddr *)&server,sizeof(server)) == -1)   //将客户端与服务器链接链接  

36.     {  

37.         perror("connect ");  

38.         exit(-1);  

39.     }  

40.   

41.     while(1)  

42.     {  

43.         memset(buffer,0,sizeof(buffer));  

44.         printf("Please input infornamtion:\n");  

45.         scanf("%s",buffer);  

46.         write(sock,buffer,sizeof(buffer));      //向服务器发送数据  

47.     }  

48.     return 0;  

49. }  

 

 

 

0 0
原创粉丝点击