我正在编写一个简单的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启用文件夹的权限后。 (这是课程要求的一部分)。
提前谢谢。