⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 此程序为linux下的socket编程
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/time.h>

#define SERVPORT 3490
#define BACKLOG 10
#define MAXDATASIZE 1000

int main()
{
     FILE *fp;
     int sockfd,client_fd;
     int num;
     char buff[MAXDATASIZE];
     char filename[100];
     struct sockaddr_in my_addr;
     struct sockaddr_in remote_addr;
     socklen_t sin_size = sizeof(struct sockaddr_in);
    if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
    {
         perror("socket创建出错!");
         exit(1);
    }

    my_addr.sin_family=AF_INET;
    my_addr.sin_port=htons(SERVPORT);
//  my_addr.sin_addr.s_addr = inet_addr("192.168.0.13");
    my_addr.sin_addr.s_addr = INADDR_ANY;
    bzero(&(my_addr.sin_zero),8);

    if (bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr))
                                    == -1)
    {
        perror("bind出错!"); 
        exit(1);
    }

    if (listen(sockfd, BACKLOG) == -1) 
    {
        perror("listen出错!");
        exit(1);
    }
    printf("server is running........\n");

    if ((client_fd = accept(sockfd, (struct sockaddr *)&remote_addr,
            &sin_size)) == -1)   
    {
        perror("accept出错");
        exit(1);
    }
    else
    {
        printf("客户端已经连上\n");
    }

    printf("开始数据.......\n");

    if (send(client_fd, "connect succeed!!! You can send file!!!", 100, 0) == -1)
    {
          perror("send出错!");
    	  close(client_fd);
          close(sockfd);
          exit(0);
    }
    memset(buff, 0, 100);
    num=recv(client_fd, buff, 100, 0);
    printf("%s", buff);
    memset(filename, 0, 100);
    strcpy(filename,"/mnt/Nand1/");
    strcat(filename,buff);
    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf ("can't open file");
        exit(0);
    }
                                                                                                                                               
    while (1)
    {
        memset(buff, 0, 100);
        num=recv(client_fd, buff, 100, 0);
        if (num == 0)
        {
            printf("数据已经接收完!");
            fclose(fp);
    	    close(client_fd);
            close(sockfd);
            exit(0);
        }
        fprintf(fp, "%s", buff);
    //    printf("%s", buff);
    }
                                                                                                                                               
    fclose(fp);
    close(client_fd);
    close(sockfd);

    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -