C编程在Linux中创建文件时遇到问题

时间:2017-01-28 16:02:19

标签: c linux

我正在编写一个简单的Load Balancer作为课程的一部分,为了通知服务器和浏览器我绑定的端口,我将它们保存为同一目录中的一个简单文件,然后他们可以读取。问题是即使我正在创建的两个端口都使用相同的功能,也没有创建其中一个文件。我一遍又一遍地查看代码,我找不到问题。 基本上,只创建了http_port文件。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <sys/socket.h> 
#include <arpa/inet.h>
#include <netinet/in.h>
#include <string.h>
#include <unistd.h>
#include "LB.h"

int main() {
    srand(time(NULL));
    int i, server_socket, http_socket, client_socket, servers[3];
    char *server_port = "server_port", *http_port = "http_port";
    http_socket = Get_Socket(http_port);
    server_socket = Get_Socket(server_port); //continues to load balancer

//inside functions.c
int Get_Socket(char* filename)
{
    int port, bind_state = -1;
    int new_socket;
    struct sockaddr_in socket_address;
    socket_address.sin_family = AF_INET;
    socket_address.sin_addr.s_addr = INADDR_ANY;
    do
    {
        port = get_random_port(PORT_MIN, PORT_MAX);
        socket_address.sin_port = htons(port);
        new_socket = socket(AF_INET, SOCK_STREAM, 0);
        bind_state = bind(new_socket, (struct sockaddr*) &socket_address, sizeof(socket_address));

    } while (bind_state < 0);
    Write_Port2File(filename, port);
    return new_socket;
}

void Write_Port2File(char* filename, int port)
{
    printf("%s", filename);
    FILE* fp = fopen(filename, "w");
    if (fp == NULL)
        exit(1);
    fprintf(fp, "%d", port);
    fclose(fp);
}

我很感激您为解决这个问题提供的任何建议。

P.S。似乎问题只发生在我使用chmod 755 *和chmod 777启用文件夹的权限后。 (这是课程要求的一部分)。

提前谢谢。

0 个答案:

没有答案