Witam, pisze serwer który po dostaniu wiadomości od jednego komunikatora wysyła do drugiego. Tylko że pojawia się problem z serwerem (komunikator jest na pewno dobry bo był sprawdzany z innym serwerem). Oto kod:

/************************************/// Biblioteki
#include <winsock2.h>
#include <iostream>
#include <windows.h>
#include <conio.h>
/************************************/// Zmienne
WSADATA wsaData;
WORD wersja;
int wynik_operacji;
int blad;
int rozmiar;
SOCKET soc_serwer,soc_klient;
struct sockaddr_in sin;
char bufor[500];
char znak;
/************************************/// Głowny blok programu
int main()
{
    using namespace std;
    ios_base::sync_with_stdio(0);

    wersja = MAKEWORD(2, 0);
    blad = WSAStartup(wersja, &wsaData);

    if(blad != 0) 
    {
        cout << "Blad krtytczny! Nacisniecie dowolnego klawisza spowoduje wylaczenie sie serwera...";
        getch();
        WSACleanup();
        return false;
    }

    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0)
    {
        cout << "Blad zla wersja WinSocket! Nacisniecie dolnego klawisza spowoduje wylaczenie sie serwera...";
        getch();
        WSACleanup();
        return false;
    }

    soc_serwer = socket(AF_INET, SOCK_STREAM, 0); // tworzenie socketa

    memset(&sin, 0, sizeof(sin));
    sin.sin_family = AF_INET; // parametry socketa
    sin.sin_addr.s_addr = INADDR_ANY;
    sin.sin_port = htons(12345);

    if(bind(soc_serwer,(struct sockaddr *)&sin, sizeof(sin))==SOCKET_ERROR)
    {
        cout << "Blad krtytczny! Nacisniecie dowolnego klawisza spowoduje wylaczenie sie serwera...";
        getch();
        WSACleanup();
        return false;
    }

    if(listen(soc_serwer,SOMAXCONN)==SOCKET_ERROR) // przestawienie socketa na nasłuch
    {
        cout << "Blad krtytczny! Nacisniecie dowolnego klawisza spowoduje wylaczenie sie serwera...";
        getch();
        WSACleanup();
        return false;   
    }

    cout << "Serwer gotowy do uzycia, oczekuje na wiadomosci." << endl; 
    while(1==1)
    {
        rozmiar = sizeof(sin);
        if(soc_klient = accept(soc_serwer,(struct sockaddr *)&sin, &rozmiar) != SOCKET_ERROR)
        {
            cout << "Numer x pomyslnie podlaczyl sie do serwera." << endl;
        }

        wynik_operacji = recv(soc_klient,bufor,sizeof(bufor),0);
        cout << bufor;
        if(wynik_operacji != SOCKET_ERROR)
        {
            cout << "Otrzymalem wiadomosc od numeru x do numeru y." << endl;
        }
        else
        {
            cout << "Blad odbierania!";
        }

        if(send(soc_klient,bufor,sizeof(bufor),0) != SOCKET_ERROR)
        {
            cout << "Wyslalem wiadomosc od numeru x do numeru y." << endl;
        }
        else
        {
            cout << "Blad wysylania!";
        }

    }
    return 0;
}

Problem jest w tym że zawsze wyświetla blad wyslania i odebrania, z innym serwerem jest ok. Co tutaj może być nie tak ?