Winsok2 problem

Oct 4, 2008 at 6:35pm
I have a problem using winsock 2:
1>c:\documents and settings\nandor\my documents\warknight\warknight server\warknight server\warknight server.cpp(14) : error C2065: 'WSADATA' : undeclared identifier

and lots more like this...where can i get the coresponding header files?
Oct 5, 2008 at 6:33am
MSDN or Microsoft...you will also have to go to your compiler and tell it to include the winsock lib file...Idr it's name exactly, but you could probably do a search and find it.
Oct 5, 2008 at 6:49am
I use VS 2005,i wrote this to the project configuration:
Linker->Input->Aditional dependencies->Ws_32.lib Mswsock.lib Advapi32.lib
Last edited on Oct 5, 2008 at 7:01am
Oct 5, 2008 at 7:04am
I managed to get the code working,but how can I test it?If a connect 2 computers in LAN and on one is the server and on the other is the client,will it work?
Oct 5, 2008 at 5:30pm
Well, you could just make 2 .exes, one that hosts (run it first), then run the client (and have it connect to yourself). You can connect to yourself either using localhost or 172.0.0.1 (I think)
Oct 5, 2008 at 6:00pm
127.0.0.1
Oct 6, 2008 at 3:26pm
Will those program work for only one client or one client needs one server?
Oct 6, 2008 at 5:04pm
Yeah, you will either need to use some type of threading system in order to have one server handle multiple connections.

Boost::thread is a good one to check out:
http://www.boost.org/doc/libs/1_36_0/doc/html/thread.html
Oct 7, 2008 at 1:09pm
but...can this be achieved with winsock2?
Oct 7, 2008 at 4:54pm
I know that windows also has some functions for using threads, but those are Windows specific. CreateThread() and stuff IIRC...MSDN is your friend.
Oct 9, 2008 at 5:37pm
are there any tutorials?
Oct 9, 2008 at 6:15pm
Google for Winsock tutorials.
Oct 10, 2008 at 1:45pm
I tried...but i haven't got any for multiple conections...I'm now trying to make 256 ConnectSockets.

Here I try to get messages from several clients,but it's not working.
I have problems with connecting the new client,or maybe anything is wrong
My code:
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
int __cdecl main(void) 
{
	int con=0;
	time_t timebeg=time(NULL);
    WSADATA wsaData;
    SOCKET ListenSocket = INVALID_SOCKET,
           ClientSocket[256],
		   TMPS = INVALID_SOCKET;
    struct addrinfo *result = NULL,
                    hints;
    int iResult, iSendResult;
    int recvbuflen = DEFAULT_BUFLEN;
    // Initialize Winsock
    iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
    if (iResult != 0) {
        printf("WSAStartup failed: %d\n", iResult);
        return 1;
    }


    ZeroMemory(&hints, sizeof(hints));
    hints.ai_family = AF_INET;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
    hints.ai_flags = AI_PASSIVE;

    // Resolve the server address and port
    iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result);
    if ( iResult != 0 ) {
        printf("getaddrinfo failed: %d\n", iResult);
        WSACleanup();
        return 1;
    }

    // Create a SOCKET for connecting to server
    ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    if (ListenSocket == INVALID_SOCKET) {
        printf("socket failed: %ld\n", WSAGetLastError());
        freeaddrinfo(result);
        WSACleanup();
        return 1;
    }

    // Setup the TCP listening socket
    iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen);
    if (iResult == SOCKET_ERROR) {
        printf("bind failed: %d\n", WSAGetLastError());
        freeaddrinfo(result);
        WSACleanup();
        return 1;
    }

    freeaddrinfo(result);

    iResult = listen(ListenSocket, SOMAXCONN);
    if (iResult == SOCKET_ERROR) {
        printf("listen failed: %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }

    // Accept a client socket
    ClientSocket[0] = accept(ListenSocket, NULL, NULL);
    if (ClientSocket[0] == INVALID_SOCKET) {
        printf("accept failed: %d\n", WSAGetLastError());
        closesocket(ListenSocket);
        WSACleanup();
        return 1;
    }
	int aux;
	TMPS=ListenSocket;
	 time_t seconds,seconds2;
	 struct tm * timeinfo;

		closesocket(ListenSocket);
		do {

			listen(ListenSocket, 1);
			if(ListenSocket!=TMPS)
			{
				con++;
				ClientSocket[con] = accept(ListenSocket, NULL, NULL);
                                                                //here I try to connect the new client to the server...But it's not working
			}
			for(int a=0;a<con+1;a++)
			{
				iResult = recv(ClientSocket[a], recvbuf, 64, 0);

				if (iResult > 0) {			
					time (&seconds);
					timeinfo = localtime ( &seconds );
					printf("Received content at %scontent: %s ",asctime (timeinfo),recvbuf);
					response();
					iSendResult = send( ClientSocket[a], recvbuf, iResult, 0 );
					if (iSendResult == SOCKET_ERROR) {
						printf("send failed: %d\n", WSAGetLastError());
						closesocket(ClientSocket[a]);
						WSACleanup();
						return 1;
					}
					seconds2 = time (NULL);
					printf("Response: %s in %u s\n", recvbuf,seconds2-seconds);
				}
				else if (iResult == 0)
					printf("Connection closing...\n");
				else  {
					printf("recv failed: %d\n", WSAGetLastError());
					closesocket(ClientSocket[a]);
					WSACleanup();
					return 1;
				}
			}

		} while (iResult > 0);
	for(int a=0;a<156;a++)
	{
    // shutdown the connection since we're done
    iResult = shutdown(ClientSocket[a], SD_SEND);
    if (iResult == SOCKET_ERROR) {
        printf("shutdown failed: %d\n", WSAGetLastError());
        closesocket(ClientSocket[a]);
        WSACleanup();
        return 1;
    }

    // cleanup
	
    closesocket(ClientSocket[a]);
	}
    WSACleanup();
	int a;std::cin>>a;
    return 0;
}


Can someone help?
Last edited on Oct 10, 2008 at 4:38pm
Topic archived. No new replies allowed.