S
Ich versuche das gerade als Klasse zu implementieren. (Dass dieser Code zu einem großen Teil aus C-Code besteht, wird noch geändert). Wieso geht das Fenster sofort wieder zu? Die Endlosschleife scheint nicht zu funktionieren...
HEADER:
#ifndef _SERVER_
#define _SERVER_
#include <iostream>
#include <string>
#include <winsock.h>
using namespace std;
class Server
{
private:
SOCKET s, c;
int addr_len;
struct sockaddr_in addr;
public:
Server()
{}; //Konstrukor
~Server(){}; // Destruktor
int SocketStart();
}; //SEMIKOLON NICHT VERGESSEN!!!
int Server::SocketStart()
{
WSADATA wsa;
if (WSAStartup(MAKEWORD(1, 1), &wsa))
{
printf("WSAStartup() failed, %lu\n", (unsigned long)GetLastError());
return EXIT_FAILURE;
}
return 0;
//SOCKET ANLEGEN
s = socket(PF_INET, SOCK_STREAM, 0);
if (s == -1)
{
perror("socket() failed");
return 1;
}
//CONNECTEN
addr.sin_addr.s_addr = INADDR_ANY;
addr.sin_port = htons(7000);
addr.sin_family = AF_INET;
//BINDEN
if (bind(s, (struct sockaddr*) &addr, sizeof(addr)) == -1)
{
perror("bind() failed");
return 2;
}
//ZUHÖREN
if (listen(s, 3) == -1)
{
perror("listen () failed");
return 3;
}
//WARTEN
for(;;)
{
addr_len = sizeof(addr);
c = accept(s, (struct sockaddr*)&addr, &addr_len);
if (c == -1)
{
perror("accept() failed");
continue;
}
printf("Client from %s\n", inet_ntoa(addr.sin_addr));
closesocket(c);
}
closesocket(s);
}
#endif _SERVER_
CPP Datei:
#include "Klasse.h"
#define BUF_SIZ 4096
int main()
{
Server a;
a.SocketStart();
char buffer[BUF_SIZ];
return 0;
}