基于TCP的简单FTP程序

来源:互联网 发布:淘宝分类图标素材 编辑:程序博客网 时间:2024/05/29 14:52

/*server.c*/

 

 

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include<fcntl.h>
#include<sys/stat.h>

#define MAXLINE 50
typedef struct sockaddr  SA;

int main(int argc, char **argv){       
 int listenfd, connfd;
 int fd;
   socklen_t  clilen;
   char buffer[1024];
   struct sockaddr_in  myaddr, cliaddr;
   char  buf[MAXLINE] = "Welcome to TCP Server";
         
 if ((listenfd = socket(PF_INET, SOCK_STREAM, 0)) < 0){
  perror("fail to socket");
  exit(-1);
 }
 bzero(&myaddr, sizeof(myaddr));
 myaddr.sin_family      = PF_INET;
 myaddr.sin_addr.s_addr  = htonl(INADDR_ANY);
 myaddr.sin_port        = htons(8889);   /* port number */
                 
 if (bind(listenfd, (SA *) &myaddr, sizeof(myaddr)) < 0){
    perror("fail to bind");
  exit(-1);
 }
 listen(listenfd, 100);
 
 fd=open("/root/gusheng",O_RDWR);

  clilen = sizeof(cliaddr);
  connfd = accept(listenfd, (SA *) &cliaddr, &clilen);
  printf("connection from %s, port %d/n",inet_ntoa(cliaddr.sin_addr),
               ntohs(cliaddr.sin_port));
  
   int nbytes;
   if((nbytes=read(fd,buffer,1024))==-1)
           {
        exit(1);
           }   
     buffer[nbytes]='/0';
     printf("Server received %s/n",buffer);
      /*wtite to socket */
   int ret;
          if (( ret = write(connfd, buffer, nbytes)) < 0)
    {
          perror("ERROR writing to socket");
          }
        
   close(connfd);
      
      return 0;
}

 

 

 

 

 

 

/*client*/

 

 

//tcp_client.c
#include<fcntl.h>
#include<sys/stat.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define MAXLINE 50
typedef struct sockaddr SA;

int main(int argc, char **argv){       
 int sockfd, nbyte;
   struct sockaddr_in  servaddr, myaddr;
   char  buf[MAXLINE];
             
 if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) < 0){
  perror("fail to socket");
  exit(-1);
 }
 bzero(&servaddr, sizeof(servaddr));
 servaddr.sin_family      = PF_INET;
 servaddr.sin_addr.s_addr = inet_addr("192.168.1.211");  //server ip;
 servaddr.sin_port        = htons(8889);   /* port number */

 if (connect(sockfd, (SA *) &servaddr, sizeof(servaddr)) < 0){
  perror("fail to connect");
  exit (-1);
 }
 printf("ddd/n");
 int fp2;
 fp2 = open("/root/gusheng1.txt",O_WRONLY | O_CREAT);
 
 int c;
 c = read(sockfd,buf,MAXLINE);
 write(fp2,buf,c);
 close(fp2);

                   
    if ( (nbyte = recv(sockfd, buf, MAXLINE, 0)) < 0){
    perror("fail to recv");
  exit(-1);
 }
 //printf("recv from server : %s/n", buf);            
              
 return 0;
}

 

 

 

 

 

原创粉丝点击