Доработай код моего мессенджера так что бы он был не от чего не зависим но работал всегда.



#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

//структура для хранения информации о пользователях
struct User {
	int id;
	string name;
	string ip_address;
	int port;
};

//генерация случайного id пользователя
int generate_id() {
	int id = rand() % 1000000000;
	return id;
}

//функция для сохранения информации о пользователе в файл
void save_user_info(vector<User>& users) {
	ofstream file("users.txt");
	if (file.is_open()) {
		for (User user : users) {
			file << user.id << ", " << user.name << ", " << user.ip_address << ", " << user.port << endl;
		}
		file.close();
	}
}

//функция для загрузки информации о пользователях из файла
void load_user_info(vector<User>& users) {
	ifstream file("users.txt");
	if (file.is_open()) {
		string line;
		while (getline(file, line)) {
			User user;
			int pos;
			pos = line.find(", ");
			user.id = stoi(line.substr(0, pos));
			line.erase(0, pos + 1);
			pos = line.find(", ");
			user.name = line.substr(0, pos);
			line.erase(0, pos + 1);
			pos = line.find(", ");
			user.ip_address = line.substr(0, pos);
			line.erase(0, pos + 1);
			user.port = stoi(line);
			users.push_back(user);
		}
		file.close();
	}
}

//функция для поиска пользователя по id
User find_user_by_id(vector<User>& users, int id) {
	for (User user : users) {
		if (user.id == id) {
			return user;
		}
	}
	User user;
	user.id = -1;
	return user;
}

//функция для проверки корректности ip-адреса
bool is_ip_address_correct(string ip_address) {
	int num;
	int dots = 0;
	string temp = ""; 
	for (char c : ip_address) {
		if (c == '.') {
			if (temp == "") {
				return false;
			}
			num = stoi(temp);
			temp = "";
			if (num < 0 || num > 255) {
				return false;
			}
			dots++;
		}
		else if (c >= '0' && c <= '9') {
			temp += c;
		}
		else {
			return false;
		}
	}
	if (dots != 3) {
		return false;
	}
	if (temp == "") {
		return false;
	}
	num = stoi(temp);
	if (num < 0 || num > 255) {
		return false;
	}
	return true;
}

//функция для проверки корректности порта
bool is_port_correct(int port) {
	if (port < 1024 || port > 65535) {
		return false;
	}
	return true;
}

//главный метод программы
int main() {
	vector<User> users;
	load_user_info(users);

	int choice;
	cout << "1.Find user by id" << endl;
	cout << "2.Add new user" << endl;
	cout << "Your choice: ";
	cin >> choice;

	if (choice == 1) {
		int id;
		cout << "Enter user id: ";
		cin >> id;
		User found_user = find_user_by_id(users, id);
		if (found_user.id == -1) {
			cout << "User with this id was not found" << endl;
		}
		else {
			cout << "User found: " << endl;
			cout << "ID: " << found_user.id << endl;
			cout << "Name: " << found_user.name << endl;
			cout << "IP-: " << found_user.ip_address << endl;
			cout << "Port: " << found_user.port << endl;
		}
	}
	else if (choice == 2) {
		User user;
		user.id = generate_id();
		cout << "ID user: " << user.id << endl;
		cout << "Enter username: ";
		cin >> user.name;
		while (true) {
			cout << "Enter the user's IP address: ";
			cin >> user.ip_address;
			if (is_ip_address_correct(user.ip_address)) {
				break;
			}
			else {
				cout << "Incorrect IP address. Please try again." << endl;
			}
		}
		while (true) {
			cout << "Enter user port: ";
			cin >> user.port;
			if (is_port_correct(user.port)) {
				break;
			}
			else {
				cout << "Incorrect port. Please try again." << endl;
			}
		}
		users.push_back(user);
		save_user_info(users);
		cout << "User added successfully" << endl;
	}

	return 0;
}