Witam,
Mam kod serwera:
int _tmain(int argc, _TCHAR* argv[])
{
int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (result != NO_ERROR)
printf("initialization error\n");
mainSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (mainSocket == INVALID_SOCKET)
{
printf("Error creating socket %ld\n", WSAGetLastError());
WSACleanup();
system("PAUSE");
return 1;
}
memset(&service, 0, sizeof(service));
service.sin_family = AF_INET;
service.sin_addr.s_addr = inet_addr("192.168.1.2");
service.sin_port = htons(27015);
if (bind(mainSocket, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR)
{
printf("bind() failed\n");
closesocket(mainSocket);
system("PAUSE");
return 1;
}
if (listen(mainSocket, 1) == SOCKET_ERROR)
printf("Error listening on socket\n");
acceptSocket = SOCKET_ERROR;
printf("Waiting for a client to connect..\n");
while (acceptSocket == SOCKET_ERROR)
{
acceptSocket = accept(mainSocket, NULL, NULL);
}
printf("Client connected.\n)");
mainSocket = acceptSocket;
odb = recv(mainSocket, bufor_serv, 10, 0);
if (odb != 0)
MessageBox(0, L"cos tam odebrano", NULL, MB_OK);
CreateFile(L"test_log_rec.txt", GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_HIDDEN, NULL);
plik.open(L"test_log_rec.txt");
for (int i = 0; i < 10; i++)
{
plik << bufor_serv[i];
}
system("PAUSE");
return 0;
}
W jaki sposób mając powyższy kod i bibliotekę winsock mogę odczytać adres IP od którego przyszedł pakiet danych? Tzn chodzi mi o oczywiście adres globalny.