Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/29: Рейтинг темы: голосов - 29, средняя оценка - 4.69
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771

Ошибка подключения к серверу 10060 (connection timed out)

26.03.2022, 20:22. Показов 6501. Ответов 9

Студворк — интернет-сервис помощи студентам
Пытаюсь написать прокси-сервер, на данный момент подключение клиента вроде-как реализовано, пытаюсь сделать подключение к серверу, но, почему-то, не получается. При попытке зайти на сервер из клиента игры всё прекрасно работает.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <WinSock2.h>
#include <WS2tcpip.h>
 
#include <iostream>
using namespace std;
 
const wchar_t PROXY_IP[] = L"127.0.0.1";
const wchar_t PROXY_PORT[] = L"25565";
 
const wchar_t SERVER_IP[] = L"217.106.107.16";
const wchar_t SERVER_PORT[] = L"26541";
 
const int BUFLEN = 512;
 
 
int main()
{
    // Disable synchronization of C and C++ output streams (speeds up output)
    ios_base::sync_with_stdio(false);
 
    int iResult;
 
    int iSendResult;
    char recvbuf[BUFLEN];
 
    try
    {
        WSADATA wsaData;
 
        // Initialize Winsock
        iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (iResult != 0)
        {
            throw "Windows Sockets API initialization error";
        }
 
        addrinfoW hints{};
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_PASSIVE;
 
        addrinfoW* result = nullptr;
 
        // Resolve the proxy address and port
        iResult = GetAddrInfoW(PROXY_IP, PROXY_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting proxy address information";
        }
 
        // Create a SOCKET for connecting to proxy
        SOCKET ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ListenSocket == INVALID_SOCKET)
        {
            throw "Listening socket creation error";
        }
 
        // Setup the TCP listening socket
        iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
        if (iResult == SOCKET_ERROR)
        {
            throw "Bind listening socket error";
        }
 
        FreeAddrInfoW(result);
 
        iResult = listen(ListenSocket, SOMAXCONN);
        if (iResult == SOCKET_ERROR)
        {
            throw "Listening error";
        }
 
        cout << "Waiting connection.." << endl;
 
        // Accept a client socket
        SOCKET ClientSocket = accept(ListenSocket, nullptr, nullptr);
        if (ClientSocket == INVALID_SOCKET)
        {
            throw "Error accepting client socket";
        }
 
        cout << "Client connected" << endl;
        cout << "Connection to the server.." << endl;
 
        // No longer need client socket
        closesocket(ListenSocket);
 
        // Resolve the server address and port
        iResult = GetAddrInfoW(SERVER_IP, SERVER_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting server address information";
        }
 
        SOCKET ServerSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ServerSocket == INVALID_SOCKET)
        {
            throw "Server socket creation error";
        }
 
        if (connect(ServerSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR)
        {
            throw "Server connection error";
        }
 
        FreeAddrInfoW(result);
    }
 
    catch (const char* exception)
    {
        cout << "[Exception] " << exception << endl;
        cout << "[Exception] Error code: " << WSAGetLastError() << endl;
 
        WSACleanup();
        system("pause");
        return 0;
    }
 
    cout << "Connected to server" << endl;
 
    WSACleanup();
    system("pause");
    return 0;
}
  • Waiting connection..
  • Client connected
  • Connection to the server..
  • [Exception] Server connection error
  • [Exception] Error code: 10060

В чём моя ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.03.2022, 20:22
Ответы с готовыми решениями:

Ошибка подключения к серверу 10060
порт 8080 при подключении клиента к серверу с лок. комп. все работает, адрес подключения 127.0.0.1, при подключении клиента к серверу...

Ошибка/исключение Socket Error # 10060 Connection timed out
Всем привет. Ребята подскажите пожалуйста, в чём ошибка выхода данной ошибки/исключения. Если параметры прокси не прописывать, то...

Socket Error # 10060 Connection timed out
Добрый день. Embarcadero XE8 В программе читающей несколько веб страниц с разных сайтов для одной из них периодически возникает...

9
 Аватар для igorrr37
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,721
Записей в блоге: 15
26.03.2022, 21:31
Этот порт на сервере закрыт для неклиентских программ. Можете попробовать подключиться туда через telnet или браузер - ошибка.
1
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
26.03.2022, 21:55  [ТС]
Цитата Сообщение от igorrr37 Посмотреть сообщение
Этот порт на сервере закрыт для неклиентских программ.
А как он в теории может определять, клиентская ли программа? :/
Я думал это будет определяться уже при "рукопожатии", а не при "подключении".

Добавлено через 1 минуту
Цитата Сообщение от igorrr37 Посмотреть сообщение
Можете попробовать подключиться туда через telnet или браузер - ошибка.
Может там ошибка потому что это IP и порт для игры? Мне кажется, проблем с подключением быть не должно..

Добавлено через 10 минут
Попробовал создать локальный сервер и подключиться к нему с клиента, действительно, сработало. Но почему не срабатывает с тем сервером? По идее же делаю все как надо..
0
 Аватар для igorrr37
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,721
Записей в блоге: 15
27.03.2022, 08:00
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
А как он в теории может определять, клиентская ли программа?
думаю порт закрыт файерволлом или типа того, у которого в настройках указано разрешать доступ только клиентской программе
Миниатюры
Ошибка подключения к серверу 10060 (connection timed out)  
0
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
27.03.2022, 21:29  [ТС]
igorrr37, Дело в том, что игра, для которой я делаю прокси-сервер Minecraft. Скорее всего я делаю что-то не так, может сокет настраиваю или что-то ещё, по чему сервер и определяет что я не с клиента игры а с чего-то другого. Но вроде бы я всё делаю так.

Добавлено через 30 минут
Странно, к другим серверам подключается, а к этому нет (сейчас он уже не доступен, но когда я вчера тестировал был доступен)

Добавлено через 49 минут
igorrr37, Не могу сообразить, как корректно заставить прокси пересылать сообщения от клиента к серверу и наоборот?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <WinSock2.h>
#include <WS2tcpip.h>
 
#include <iostream>
using namespace std;
 
const wchar_t PROXY_IP[] = L"127.0.0.1";
const wchar_t PROXY_PORT[] = L"25565";
 
const wchar_t SERVER_IP[] = L"WorldKingCraft.ru-mc.ru";
const wchar_t SERVER_PORT[] = L"25572";
 
const int BUFLEN = 512;
 
 
int main()
{
    // Disable synchronization of C and C++ output streams (speeds up output)
    ios_base::sync_with_stdio(false);
 
    SetConsoleTitleW(L"Proxy");
 
    int iResult = 0;
 
    try
    {
        WSADATA wsaData;
 
        // Initialize Winsock
        iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (iResult != 0)
        {
            throw "Windows Sockets API initialization error";
        }
 
        addrinfoW hints{};
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_PASSIVE;
 
        addrinfoW* result = nullptr;
 
        // Resolve the proxy address and port
        iResult = GetAddrInfoW(PROXY_IP, PROXY_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting proxy address information";
        }
 
        // Create a SOCKET for connecting to proxy
        SOCKET ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ListenSocket == INVALID_SOCKET)
        {
            throw "Listening socket creation error";
        }
 
        // Setup the TCP listening socket
        iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
        if (iResult == SOCKET_ERROR)
        {
            throw "Bind listening socket error";
        }
 
        FreeAddrInfoW(result);
 
        iResult = listen(ListenSocket, SOMAXCONN);
        if (iResult == SOCKET_ERROR)
        {
            throw "Listening error";
        }
 
        cout << "Waiting connection.." << endl;
 
        // Accept a client socket
        SOCKET ClientSocket = accept(ListenSocket, nullptr, nullptr);
        if (ClientSocket == INVALID_SOCKET)
        {
            throw "Error accepting client socket";
        }
 
        cout << "Client connected" << endl;
        cout << "Connection to the server.." << endl;
 
        // No longer need listen socket
        closesocket(ListenSocket);
 
        // Resolve the server address and port
        iResult = GetAddrInfoW(SERVER_IP, SERVER_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting server address information";
        }
 
        SOCKET ServerSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ServerSocket == INVALID_SOCKET)
        {
            throw "Server socket creation error";
        }
 
        if (connect(ServerSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR)
        {
            throw "Server connection error";
        }
 
        FreeAddrInfoW(result);
    }
 
    catch (const char* exception)
    {
        cout << "[Exception] " << exception << endl;
        cout << "[Exception] Error code: " << WSAGetLastError() << endl;
 
        WSACleanup();
        system("pause");
        return 0;
    }
 
    cout << "Connected to server" << endl;
 
    WSACleanup();
    system("pause");
    return 0;
}
Пробовал добавлять часть кода который публиковал выше, но там пишет всегда "Disconnected or error".
0
 Аватар для JmpShort
6 / 6 / 3
Регистрация: 24.03.2022
Сообщений: 22
28.03.2022, 01:38
eXpl01TeR, а зачем через прокси - русских блочат?
0
 Аватар для igorrr37
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,721
Записей в блоге: 15
28.03.2022, 09:21
К этому серверу, да, коннектится.
Цитата Сообщение от eXpl01TeR Посмотреть сообщение
заставить прокси пересылать сообщения
recv / send. Ну и надо знать формат сообщений которые понимает сервер (протокол)

вот так send работает. Но сервер ничего не отвечает и закрывает соединение (recv возвращает 0). Нужно знать протокол обмена сообщений с сервером.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include <WinSock2.h>
#include <WS2tcpip.h>
 
#include <iostream>
using namespace std;
 
const wchar_t PROXY_IP[] = L"127.0.0.1";
const wchar_t PROXY_PORT[] = L"25565";
 
const wchar_t SERVER_IP[] = L"WorldKingCraft.ru-mc.ru";
const wchar_t SERVER_PORT[] = L"25572";
 
const int BUFLEN = 512;
 
 
int main()
{
    // Disable synchronization of C and C++ output streams (speeds up output)
    ios_base::sync_with_stdio(false);
 
    SetConsoleTitleW(L"Proxy");
 
    int iResult = 0;
 
    try
    {
        WSADATA wsaData;
 
        // Initialize Winsock
        iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (iResult != 0)
        {
            throw "Windows Sockets API initialization error";
        }
 
        addrinfoW hints{};
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_PASSIVE;
 
        addrinfoW* result = nullptr;
 
        // Resolve the proxy address and port
        iResult = GetAddrInfoW(PROXY_IP, PROXY_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting proxy address information";
        }
 
        // Create a SOCKET for connecting to proxy
        SOCKET ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ListenSocket == INVALID_SOCKET)
        {
            throw "Listening socket creation error";
        }
 
        // Setup the TCP listening socket
        iResult = bind(ListenSocket, result->ai_addr, (int)result->ai_addrlen);
        if (iResult == SOCKET_ERROR)
        {
            throw "Bind listening socket error";
        }
 
        FreeAddrInfoW(result);
 
        iResult = listen(ListenSocket, SOMAXCONN);
        if (iResult == SOCKET_ERROR)
        {
            throw "Listening error";
        }
 
        cout << "Waiting connection.." << endl;
 
        // Accept a client socket
        SOCKET ClientSocket = accept(ListenSocket, nullptr, nullptr);
        if (ClientSocket == INVALID_SOCKET)
        {
            throw "Error accepting client socket";
        }
 
        cout << "Client connected" << endl;
        cout << "Connection to the server.." << endl;
 
        // No longer need listen socket
        closesocket(ListenSocket);
 
        // Resolve the server address and port
        iResult = GetAddrInfoW(SERVER_IP, SERVER_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting server address information";
        }
 
        SOCKET ServerSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ServerSocket == INVALID_SOCKET)
        {
            throw "Server socket creation error";
        }
 
        if (connect(ServerSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR)
        {
            throw "Server connection error";
        }
        //std::cout << result->ai_addr << "\n";
 
        FreeAddrInfoW(result);
 
        cout << "Connected to server" << endl;
 
        char sendbuf[512] = "Client: sending data test";
        int const recvbuflen = 512;
        char recvbuf[recvbuflen] = "";
 
        iResult = send(ServerSocket, sendbuf, (int)strlen(sendbuf), 0);
        if (iResult == SOCKET_ERROR) {
            wprintf(L"send failed with error: %d\n", WSAGetLastError());
            closesocket(ServerSocket);
            WSACleanup();
            return 1;
        }
 
        printf("Bytes Sent: %d\n", iResult);
 
        // Receive until the peer closes the connection
        do {
 
            iResult = recv(ServerSocket, recvbuf, recvbuflen, 0);
            if (iResult > 0)
                wprintf(L"Bytes received: %d\n", iResult);
            else if (iResult == 0)
                wprintf(L"Connection closed\n");
            else
                wprintf(L"recv failed with error: %d\n", WSAGetLastError());
 
        } while (iResult > 0);
 
        iResult = closesocket(ServerSocket);
        if (iResult == SOCKET_ERROR) {
            wprintf(L"close failed with error: %d\n", WSAGetLastError());
            WSACleanup();
            return 1;
        }
 
    }
 
    catch (const char* exception)
    {
        cout << "[Exception] " << exception << endl;
        cout << "[Exception] Error code: " << WSAGetLastError() << endl;
    }
 
    WSACleanup();
    system("pause");
    return 0;
}
Попробуй погуглить на тему протокола/команд которые понимают сервера майнкрафт
Ну или посмотри что серверу отправляет клиент и отправь то же самое

Добавлено через 1 час 26 минут
вот вроде описание протокола
1
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
28.03.2022, 20:32  [ТС]
Цитата Сообщение от igorrr37 Посмотреть сообщение
Нужно знать протокол обмена сообщений с сервером.
Я не могу понять, зачем мне его знать, если я просто передаю от клиента к серверу данные через себя? Клиент же за меня всё делать должен. В плане, формировать данные по протоколу и так далее. Он же не знает что подключается к прокси, думает что реальный сервер.

Добавлено через 3 минуты
igorrr37, Мне просто нужен код который бы передавал то что отправил клиент на прокси серверу и наоборот. Я не могу понять как это реализовать.
0
 Аватар для igorrr37
2869 / 2016 / 991
Регистрация: 21.12.2010
Сообщений: 3,721
Записей в блоге: 15
29.03.2022, 07:54
Лучший ответ Сообщение было отмечено eXpl01TeR как решение

Решение

А, понятно. Почему то переклинило что ты и клиент свой пишешь.
Тогда да, два потока. В одном читаешь от клиента и передаёшь на сервер, во втором - от сервера клиенту.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
#include <WinSock2.h>
#include <WS2tcpip.h>
 
#include <iostream>
#include <cstdlib>
using namespace std;
 
const wchar_t PROXY_IP[] = L"127.0.0.1";
const wchar_t PROXY_PORT[] = L"25565";
 
const wchar_t SERVER_IP[] = L"WorldKingCraft.ru-mc.ru";
const wchar_t SERVER_PORT[] = L"25572";
 
const int BUFLEN = 512;
 
SOCKET pClientSocket, pServerSocket = 0;
HANDLE hThreadArray[2];
 
// читает от клиента и передаёт на сервер
DWORD WINAPI ClientFunction(LPVOID lpParam)
{
    try
    {
        char recvbuf[BUFLEN];
        int iSendResult = 0, iRecvResult = 0;
        do {
            iRecvResult = recv(pClientSocket, recvbuf, BUFLEN, 0);
            if (iRecvResult > 0)
            {
                wprintf(L"Bytes received from client: %d\n", iRecvResult);
                iSendResult = send(pServerSocket, recvbuf, iRecvResult, 0);
                if (iSendResult == SOCKET_ERROR) {
                    throw("send() to pServerSocket failed");
                }
                printf("Bytes Sent to server: %d\n", iRecvResult);
            }
            else if (iRecvResult == 0)
                wprintf(L"Client has closed connection\n");
            else
                throw("recv() from pClientSocket failed");
 
        } while (iRecvResult > 0);
 
        iRecvResult = closesocket(pClientSocket);
    }
    catch (const char* exception)
    {
        cout << "ClientFunction() exception: " << exception << ", error code: " << WSAGetLastError() << endl;
    }
}
 
// читает от сервера и передаёт клиенту
DWORD WINAPI ServerFunction(LPVOID lpParam)
{
    try
    {
        char recvbuf[BUFLEN];
        int iSendResult = 0, iRecvResult = 0;
        do {
            iRecvResult = recv(pServerSocket, recvbuf, BUFLEN, 0);
            if (iRecvResult > 0)
            {
                wprintf(L"Bytes received from server: %d\n", iRecvResult);
                iSendResult = send(pClientSocket, recvbuf, iRecvResult, 0);
                if (iSendResult == SOCKET_ERROR) {
                    throw("send() to pClientSocket failed");
                }
                printf("Bytes Sent to client: %d\n", iRecvResult);
            }
            else if (iRecvResult == 0)
                wprintf(L"Server has closed connection\n");
            else
                throw("recv() from pServerSocket failed");
 
        } while (iRecvResult > 0);
 
        iRecvResult = closesocket(pServerSocket);
    }
    catch (const char* exception)
    {
        cout << "ServerFunction() exception: " << exception << ", error code: " << WSAGetLastError() << endl;
    }
}
 
int main()
{
    // Disable synchronization of C and C++ output streams (speeds up output)
    ios_base::sync_with_stdio(false);
 
    SetConsoleTitleW(L"Proxy");
 
    int iResult = 0;
 
    try
    {
        WSADATA wsaData;
 
        // Initialize Winsock
        iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
        if (iResult != 0)
        {
            throw "Windows Sockets API initialization error";
        }
 
        addrinfoW hints{};
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_PASSIVE;
 
        addrinfoW* result = nullptr;
 
        // Resolve the proxy address and port
        iResult = GetAddrInfoW(PROXY_IP, PROXY_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting proxy address information";
        }
 
        // Create a SOCKET for connecting to proxy
        SOCKET ClientListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (ClientListenSocket == INVALID_SOCKET)
        {
            throw "Listening socket creation error";
        }
 
        // Setup the TCP listening socket
        iResult = bind(ClientListenSocket, result->ai_addr, (int)result->ai_addrlen);
        if (iResult == SOCKET_ERROR)
        {
            throw "Bind listening socket error";
        }
 
        FreeAddrInfoW(result);
 
        iResult = listen(ClientListenSocket, SOMAXCONN);
        if (iResult == SOCKET_ERROR)
        {
            throw "Listening error";
        }
 
        cout << "Waiting connection.." << endl;
 
        // Accept a client socket
        pClientSocket = accept(ClientListenSocket, nullptr, nullptr);
        if (pClientSocket == INVALID_SOCKET)
        {
            throw "Error accepting client socket";
        }
 
        cout << "Client connected" << endl;
        cout << "Connection to the server.." << endl;
 
        // No longer need listen socket
        closesocket(ClientListenSocket);
 
        // Resolve the server address and port
        iResult = GetAddrInfoW(SERVER_IP, SERVER_PORT, &hints, &result);
        if (iResult != 0)
        {
            throw "Error getting server address information";
        }
 
        pServerSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
        if (pServerSocket == INVALID_SOCKET)
        {
            throw "Server socket creation error";
        }
 
        if (connect(pServerSocket, result->ai_addr, (int)result->ai_addrlen) == SOCKET_ERROR)
        {
            throw "Server connection error";
        }
        //std::cout << result->ai_addr << "\n";
 
        FreeAddrInfoW(result);
 
        cout << "Connected to server" << endl;
        
        hThreadArray[0] = CreateThread(
            NULL,                   // default security attributes
            0,                      // use default stack size  
            ClientFunction,         // thread function name
            NULL,                   // argument to thread function 
            0,                      // use default creation flags 
            NULL);
        hThreadArray[1] = CreateThread(
            NULL,                   // default security attributes
            0,                      // use default stack size  
            ServerFunction,         // thread function name
            NULL,                   // argument to thread function 
            0,                      // use default creation flags 
            NULL);
        if (hThreadArray[0] == NULL || hThreadArray[1] == NULL)
        {
            throw("CreateThread failed");
        }
        WaitForMultipleObjects(2, hThreadArray, FALSE, INFINITE);
 
    }
 
    catch (const char* exception)
    {
        cout << "[Exception] " << exception << endl;
        cout << "[Exception] Error code: " << WSAGetLastError() << endl;
    }
 
    for (int i = 0; i < 2; ++i)
    {
        CloseHandle(hThreadArray[i]);
    }
    WSACleanup();
    system("pause");
}
1
155 / 9 / 2
Регистрация: 14.08.2019
Сообщений: 771
29.03.2022, 16:17  [ТС]
igorrr37, РАБОТАЕТ) СПАСИБО!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.03.2022, 16:17
Помогаю со студенческими работами здесь

Socket error 10060 Connection Timed out
Выдает при попытке коннекта к почте.

Socket error 10060 connection timed out
Здравствуйте. Написал простенькую прогу для отправки писем через smtp. Но выскакивает ошибка. Вот код: IdSMTP1-&gt;Username =...

Как исправить ошибку Socket Error # 10060 Connection timed out? при get запросе
Здравствуйте. Появляется такая ошибка на тяжёлых сайтах: procedure TForm2.Button1Click(Sender: TObject); var ...

ошибка [error] 28601#28601: *1574 upstream timed out (110: Connection timed out) while reading response header
Всем привет! Имеется интернет-магазин на WP + WooCommerce. Раньше он был на хостингу и начали появляться ошибки 500 при попытки...

ошибка [error] 28601#28601: *1574 upstream timed out (110: Connection timed out) while reading response header
Всем привет! Имеется интернет-магазин на WP + WooCommerce. Раньше он был на хостингу и начали появляться ошибки 500 при попытки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru