
06.08.2009, 21:58
|
|
Познающий
Регистрация: 25.04.2008
Сообщений: 51
С нами:
9497102
Репутация:
17
|
|
Итак, все получилось.
У меня уже была написана команда, по которой клиент коннектится к опр. IP. И я получаю его IP как говорил __mad:
Код:
#include "iostream"
using namespace std;
#include <winsock2.h>
#pragma comment( lib, "ws2_32.lib" )
int port=2121;
int main() {
cout << "Work" << endl;
WSADATA wsd;
if (WSAStartup(MAKEWORD(2,2), &wsd) != 0) {
cout << "WSAData initialize error" << endl;
return 0;
}
SOCKET sClient, sServer;
struct sockaddr_in localaddr, clientaddr;
int iSize;
sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (sServer == SOCKET_ERROR)
{
cout << "Soket error" << endl;
return 0;
}
localaddr.sin_addr.s_addr = htonl(INADDR_ANY);
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(port);
if (bind(sServer, (struct sockaddr *)&localaddr, sizeof(localaddr)) == SOCKET_ERROR)
{
cout << "Can't bind" << endl;
return 1;
}
cout << "Bind OK" << endl;
listen(sServer, 4);
cout << "Listen OK" << endl;
while(1) {
iSize = sizeof(clientaddr);
sClient = accept(sServer, (struct sockaddr *)&clientaddr, &iSize);
if (sClient == INVALID_SOCKET)
{
cout << "Accept filed" << endl;
break;
}
cout << "Accept OK" << endl;
cout << "Client IP: " << inet_ntoa(clientaddr.sin_addr) << endl;
//return 0;
}
closesocket(sServer);
cout << "End" << endl;
WSACleanup();
return 0;
}
Еще не тестил(только локалхост), но думаю работает.
__mad'у спасибо!!! и вообще всем кто ответил
|
|
|