基于TCP的简单FTP程序

    技术2022-05-20  41

    /*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 50typedef 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 50typedef 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;}

     

     

     

     

     


    最新回复(0)