Kod źródłowy (fragment), który podałem to kod po stronie serwera, który ma tylko odebrać jakieś dane. Klient to osobna aplikacja. Wszystko łączy się dobrze, klient wysyła też dane przy pomocy funkcji send() i niby je wysyła, ale nie jestem w stanie odebrać ich na serwerze. Nie podałem całego kodu programu bo chyba mija się to z celem skoro nawiązywanie połączenia działa, a jedynym problemem jest odbiór danych :)
Oto cały kod po stronie serwera:
Kopiuj
#define IP "127.0.0.1"
#define PORT 5010
#define USERS 10
#define BUFOR 1024
int main()
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
std::cout << "\n>> WSAStartup error!";
_getch();
return(1);
}
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN saddr;
saddr.sin_addr.S_un.S_addr = inet_addr(IP);
saddr.sin_family = AF_INET;
saddr.sin_port = htons(PORT);
if (bind(sock, (sockaddr*) &saddr, sizeof(saddr)) == 0)
{
std::cout << "\n>> Server started!";
if (listen(sock, USERS) == 0)
{
std::cout << "\n>> Listening started!";
SOCKET client = INVALID_SOCKET;
if (client = accept(sock, NULL, NULL) != INVALID_SOCKET)
{
std::cout << "\n>> New user connected!";
char* msg = NULL;
bool bDone = false;
while (!bDone)
{
if (recv(client, msg, BUFOR, NULL) > 0)
{
std::cout << "\nmessage: " << msg;
bDone = true;
}else std::cout << "\nerror: " << WSAGetLastError();
Sleep(1000);
}
}
closesocket(client);
}
else
{
std::cout << "\n>> Listening error:\n" << WSAGetLastError();
_getch();
return(1);
}
}
else
{
std::cout << "\n>> Server start-up error:\n" << WSAGetLastError();
_getch();
return(1);
}
closesocket(sock);
WSACleanup();
_getch();
return(0);
}
EDIT:
qwe napisał(a)
http://cpp0x.pl/kursy/Kurs-WinSock-C++/271
Nie widzę różnicy między tym, a moim kodem. Dalej ten sam irytujący błąd...