Цикличное подключение к серверу из "неоткуда"
В общем, когда я привязываю к сокету локальный адрес компа - всё нормально,
но когда же я выставляю свой "белый" IP - происходит что-то страшное:

#include <winsock2.h>
#include <iostream>
#include<string>
#pragma warning(disable:4996)
SOCKET sSocket;
SOCKET Connections[10];
int countConn = 0;
bool client_send_sharp(const char* msg) {
for (int i = 0; i < strlen(msg); i++) {
if (msg[i] == '#') return true;
}
return false;
}
void ClientHandler(int indx) {
int sz_msg;
while (true)
{
recv(Connections[indx], (char*)&sz_msg, sizeof(sz_msg), NULL);
char* msg = new char[sz_msg+1];
msg[sz_msg] = '\0';
recv(Connections[indx], msg, sz_msg,NULL);
for (int i = 0; i < countConn; i++)
{
if (indx == i)
continue;
//Провер-очка
if (client_send_sharp(msg)) {
std::cout << ">[" << indx << "]" << "Disconnected\n";
shutdown(Connections[i], SD_BOTH);
//Connections[indx] = NULL;
}
else {
send(Connections[i], (char*)&sz_msg, sizeof(sz_msg), NULL);
send(Connections[i], msg, sz_msg, NULL);
}
}
delete[] msg;
}
}
int main()
{
WSADATA wsadata;
WORD version = MAKEWORD(2, 1);
if (WSAStartup(version, &wsadata) != 0) {
std::cout << "Error\n";
return 0;
}
// настройка сокета
SOCKADDR_IN addr;
addr.sin_addr.s_addr = inet_addr("95.215.125.112"); // ip
addr.sin_port = htons(80); // port
addr.sin_family = AF_INET; // семейство протоколов
sSocket = socket(AF_INET, SOCK_STREAM, NULL); // сокет
bind(sSocket, (SOCKADDR*)&addr, sizeof(addr)); // привязываем адрес сокету
listen(sSocket, SOMAXCONN); // прослушиваем порт сокета с максимальным числом подключений
int sz = sizeof(addr);
SOCKET ClientConnection;
for (int i = 0; i < 10; i++)
{
ClientConnection = accept(sSocket, (SOCKADDR*)&addr, &sz);// принимаем нового пользователя(в addr будет храниться ip клиента)
if (ClientConnection == 0) {
std::cout << "Error 2\n";
return 0;
}
else {
std::cout << "> ["<< i << "] " << "Client Connected\n";
std::string msg = "You are welcome!\n";
int sz_msg = msg.size();
send(ClientConnection, (char*)&sz_msg, sizeof(int), NULL);
send(ClientConnection, msg.c_str(), sz_msg, NULL); // отправляем сообщение
Connections[i] = ClientConnection;
countConn++;
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ClientHandler, (LPVOID)i, NULL, NULL);
}
}
system("pause");
return 0;
}
Надеюсь на помощь.