service.c
- #include<stdio.h>
- #include<netinet/in.h>
- #include<sys/socket.h>
- #include<string.h>
- #include<sys/types.h>
- #include<sys/stat.h>
- #include<fcntl.h>
- #define PORT 3721
- int main()
- {
- char ip[]="127.0.0.1";/*服務器ip地址*/
- char msg[]="Connected,you can send cmd!\n";/*連接成功,發送給客戶端的信息*/
- int buf[255],len;/*發送文件時使用*/
- int sockfd,newfd;/*服務器套接字和連接產生的新套接字*/
- int addrlen=sizeof(struct sockaddr_in);/*存儲網絡地址的結構體的大小*/
- struct sockaddr_in seraddr,cliaddr;/*分別存放服務器和客戶端的網絡地址*/
- int fd;/*發送的文件標識*/
- /*創建套接字*/
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd<0)
- {
- printf("socket() error!\n");
- exit(0);
- }
- /*設置套接字要綁定的網絡地址,通過對結構體struct sockaddr_in seraddr賦值*/
- seraddr.sin_family=AF_INET;/*協議族 爲ip協議族*/
- seraddr.sin_port=PORT;/*端口號*/
- inet_aton(ip,&(seraddr.sin_addr));/*將ip地址轉爲32位整數*/
- memset(seraddr.sin_zero,0,8);/*填0*/
- /*綁定socket與網絡地址*/
- if(bind(sockfd,&seraddr,sizeof(seraddr))<0)
- {
- printf("bind() error!\n");
- exit(0);
- }
- /*服務器監聽客戶端連接*/
- listen(sockfd,10);
- /*連接,產生一個新的套接字newfd*/
- if((newfd=accept(sockfd,&cliaddr,&addrlen))>=0)
- {
- printf("A connect come from %s!\n",inet_ntoa(cliaddr.sin_addr));
- /*輸出客戶端ip地址*/
- write(newfd,msg,100);//發生連接成功信息
- }
- /*發送文件*//*
- fd=open("01.pdf",O_RDONLY);
- if(fd<0)
- {
- perror("open error!\n");
- }
- printf("Send file!\n");
- while((len=read(fd,buf,255))>0)
- {
- write(newfd,buf,len);
- }
- */
- close(sockfd);/*關閉*/
- }
client.c
- #include<stdio.h>
- #include<netinet/in.h>
- #include<sys/socket.h>
- #include<string.h>
- #include<sys/types.h>
- #include<sys/stat.h>
- #include<fcntl.h>
- #define PORT 3721
- int main()
- {
- char ip[]="127.0.0.1";/*服務器ip*/
- char buf[225];
- int sockfd,fd,len;
- int addrlen=sizeof(struct sockaddr_in);
- struct sockaddr_in myaddr;/*客戶端套接字*/
- /*創建套接字*/
- sockfd=socket(AF_INET,SOCK_STREAM,0);
- if(sockfd<0)
- {
- printf("socket() error!\n");
- exit(0);
- }
- /*要連接到的目標網絡地址,通過struct sockaddr_in設置*/
- myaddr.sin_family=AF_INET;/*ip協議族*/
- myaddr.sin_port=PORT;/*端口號*/
- inet_aton(ip,&(myaddr.sin_addr));
- memset(myaddr.sin_zero,0,8);
- /*連接sockfd與目標地址*/
- if(connect(sockfd,&myaddr,addrlen)<0)
- {
- printf("can not connected!\n");
- exit(0);
- }
- sleep(1);
- /*讀取信息*/
- read(sockfd,buf,100);
- printf("%s",buf);/*輸出*/
- /*接收文件*//*
- fd=open("dest.pdf",O_APPEND|O_CREAT|O_RDWR,0666);
- if(fd<0)
- {
- perror("open error!\n");
- }
- printf("Receive file!\n");
- while((len=read(sockfd,buf,225))>0)
- {
- write(fd,buf,len);
- }
- */
- close(sockfd);/*關閉*/
- }