Problem śmieszny... Po podłączeniu się klienta do serwera przez socket przy zamykaniu klienta dosłownie zabijany jest proces serwera - nie kończy się on normalnie. Czegoś pewnie z WSA nie rozumiem...
Serwer to standardowe otwarice socketu, nie ma tam nic nadzwyczajnego. W kliencie:
case ID_CONNECT:
if(!isConnected)
{
WSAStartup(versionRequested, &wsadata);
s = socket(AF_INET, SOCK_STREAM, 0);
if(s == INVALID_SOCKET) return 0;
unsigned long server_addr = inet_addr("127.0.0.1");
if(server_addr == INADDR_NONE) MessageBox(hwnd, "Niepoprawny adres IP", "Łączenie z serwerem", MB_OK|MB_ICONSTOP);
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(23);
addr.sin_addr.s_addr = server_addr;
if(connect(s, (struct sockaddr*) &addr, sizeof(addr))) MessageBox(hwnd, "Nie można było ustanowić połączenia z serwerem", "Łączenia z serwerem", MB_OK|MB_ICONSTOP);
else isConnected = true;
} else MessageBox(hwnd, "Jesteś już połączony!", "Status", MB_ICONINFORMATION|MB_OK);
break;
case WM_DESTROY:
if(MessageBox(hwnd, "Pewien?\nBędzie smutno ;(", "Koniec bazgrania", MB_ICONQUESTION | MB_YESNO) == IDYES)
{
if(isConnected)
{
closesocket(s);
WSACleanup();
}
PostQuitMessage(0);
}
break;
Co jest nie tak?