Hallo Tweakers,
Ik ben nu al een tijdje bezig met het maken van een applicatie dat dmv winsock een connectie legt met een IRC server. Nu lukken me wel aardig wat dingen, namelijk host omzetten naar IP etc, maar zodra ik naar een server wil verbinden krijg ik een fout.
Het rare is voor mij dat hij wel naar localhost kan verbinden, maar zodra ik naar een extern address wil verbinden schiet hij dicht. Hierbij krijg ik fout code 10061, volgens google geeft 10061 aan dat de remote server mijn connectie blockt.
Hier is mijn code:
Bij het SOCKADDR_IN gedeelte waar ik bijv het IP vast leg heb ik ook het volgende geprobeerd om een IP aan te geven:
Echter bleef het resultaat hetzelfde.
Het probleem is dus eigelijk dat ik niet naar buiten kan verbinden, maar enkel naar applicaties die onder localhost vallen. Iemand een idee hoe ik dit op kan lossen?
Alvast bedankt
Ik ben nu al een tijdje bezig met het maken van een applicatie dat dmv winsock een connectie legt met een IRC server. Nu lukken me wel aardig wat dingen, namelijk host omzetten naar IP etc, maar zodra ik naar een server wil verbinden krijg ik een fout.
Het rare is voor mij dat hij wel naar localhost kan verbinden, maar zodra ik naar een extern address wil verbinden schiet hij dicht. Hierbij krijg ik fout code 10061, volgens google geeft 10061 aan dat de remote server mijn connectie blockt.
Hier is mijn code:
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
| #include <winsock2.h> #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { char hostName[255]; int port; // Get host + ip of IRC Server cout << "IRC Host: "; cin >> hostName; cout << "Port : "; cin >> port; cout << endl << "Connecting to " << hostName << endl << endl; // Preparing WSA WSADATA wsaData; WORD wsVersion = MAKEWORD(2,0); // Load WSA if((WSAStartup(wsVersion, &wsaData)) != 0) { cout << "Error while starting WSA" << endl << endl; system("pause"); return 0; } // Resolving IP adres hostent *hostIP; hostIP = gethostbyname(hostName); // Creating socket SOCKET ircSock; ircSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(ircSock == INVALID_SOCKET) { cout << "Could not create socket" << endl; system("pause"); WSACleanup(); return 0; } // Socket / Connection information SOCKADDR_IN sockAddr; sockAddr.sin_port = port; sockAddr.sin_family = AF_INET; // IP information sockAddr.sin_addr.S_un.S_un_b.s_b1 = (int)hostIP->h_addr_list[0][0]; sockAddr.sin_addr.S_un.S_un_b.s_b2 = (int)hostIP->h_addr_list[0][1]; sockAddr.sin_addr.S_un.S_un_b.s_b3 = (int)hostIP->h_addr_list[0][2]; sockAddr.sin_addr.S_un.S_un_b.s_b4 = (int)hostIP->h_addr_list[0][3]; // Connect to IRC server if(connect(ircSock, (SOCKADDR *)&sockAddr, sizeof(sockAddr)) == SOCKET_ERROR) { cout << "Unable to connect to server: " << WSAGetLastError() << endl; system("pause"); WSACleanup(); return 0; } cout << "Succes" << endl; WSACleanup(); system("PAUSE"); return 0; } |
Bij het SOCKADDR_IN gedeelte waar ik bijv het IP vast leg heb ik ook het volgende geprobeerd om een IP aan te geven:
C++:
1
| sockAddr.sin_addr.s_addr = inet_addr("xxx.xxx.xxx.xxx"); |
Echter bleef het resultaat hetzelfde.
Het probleem is dus eigelijk dat ik niet naar buiten kan verbinden, maar enkel naar applicaties die onder localhost vallen. Iemand een idee hoe ik dit op kan lossen?
Alvast bedankt