Witam.
Mam prosty programik robiący za serwer TCP, który nasłuchuje na wybranym porcie. Chcę żeby odbierał on dane od klienta (moduł pomiarowy podłączony do sieci), dane te nie są przetwarzane i nie są do niczego potrzebne, chcę tylko sprawdzić jak szybko potrafi wysyłać klient. Mam problem z buforem odbiorczym serwera, nie wiem jak go czyścić, mianowicie chodzi mi o to, że po kilkunastu segmentach okno odbiorcze maleje do 0 co uniemożliwia komunikację. Nie mogłem znaleźć żadnej funkcji na stronie msdn, może ktoś wie jak to zrobić?
Poniżej kod programu.
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
int main(int argc, char **argv)
{
WORD RequiredVersion;
WSADATA WData;
SOCKET ss, s;
struct sockaddr_in addr, incoming;
int alen;
long val;
int port;
char pakiet[1600];
printf("Numer portu: ");
scanf("%d", &port);
RequiredVersion = MAKEWORD(2, 0);
if (WSAStartup(RequiredVersion, &WData) != 0) {
printf("Blad inicjalizacji WinSock2\n");
return 1;
}
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
ss = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
bind(ss,(struct sockaddr*) &addr, sizeof(addr));
listen(ss, 10);
alen = sizeof(incoming);
while((s = accept(ss, (struct sockaddr*) &incoming, &alen))
!= INVALID_SOCKET) {
recv(s, pakiet, sizeof(pakiet)-1, 0);
}
closesocket(ss);
WSACleanup();
return 0;
}