Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Клиент-серверное приложение. 
:(
    Опции темы
devmstr
Дата 29.5.2006, 19:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Developer
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 28.4.2004
Где: Ukraine

Репутация: нет
Всего: 11



Что не так. 
Сервер не получает сообщение.

Помогите, пожайлуста...
Сервер:
Код
#include <winsock2.h>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib")

#define PORT 4736
WSADATA wsd;

DWORD WINAPI ReadThreadPrc(LPVOID lpParam)
{
    SOCKET sock = SOCKET(lpParam);
    WSABUF wsaBuf;
    char st[10];
    wsaBuf.buf = st;
    wsaBuf.len = 6;
    DWORD dwRes;
    while (1)
    {
        if (!WSARecv(sock, &wsaBuf,1, &dwRes, 0, 0, 0))
        {
            MessageBox(NULL, wsaBuf.buf, "Hello", 0);
        }
    }
    
    closesocket(sock);
    return 0;
}

INT WINAPI WinMain(HINSTANCE hInstm, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow)
{
    
    SOCKET    sct;
    int        iErr;
    if (WSAStartup(MAKEWORD(2, 2), &wsd))
    {
        MessageBox(NULL, "Error load Winsock2", "Error", MB_ICONERROR);
        return 1;
    }
    sct    =    WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, 0);
    if (sct == INVALID_SOCKET)
    {
        MessageBox(NULL, "An error was appeared during creating a socket", "ERROR", MB_ICONERROR);
        return 2;
    }
    SOCKADDR_IN sca, sca_cl;
    sca.sin_family        = AF_INET;
    sca.sin_port        = htons(PORT);
    sca.sin_addr.s_addr = htonl(INADDR_ANY);
    bind(sct, (sockaddr *)&sca, sizeof(sca));
    
    if (listen(sct, SOMAXCONN))
    {
        MessageBox(NULL, "Listen returned error", "Error", MB_ICONERROR);
        iErr = WSAGetLastError();
        closesocket(sct);
        return 3;
    }
    int iSz = sizeof(sca_cl);
    HANDLE hThread;
    SOCKET sClient;
    while (1)
    {
        sClient = WSAAccept(sct, (sockaddr *)&sca_cl, &iSz, NULL, NULL);
        if (sClient == INVALID_SOCKET)
        {
            iErr = WSAGetLastError();
            MessageBox(NULL, "An error was appeared during Accept  socket", "ERROR", MB_ICONERROR);
        }
        hThread = CreateThread(NULL, NULL, ReadThreadPrc, (LPVOID)sClient, NULL, NULL);
        
    }
    CloseHandle(hThread);
    closesocket(sct);
    return 0;

}



Клиент:
Код
#include <winsock2.h>
#include <windows.h>

#pragma comment(lib, "ws2_32.lib")

#define PORT 4736
#define INETADDR "127.0.0.1"

INT WINAPI WinMain(HINSTANCE hInstm, HINSTANCE hPrevInst, LPSTR lpCmdLine, INT nCmdShow)
{
    WSADATA wsd;
    SOCKET    sct;
    if (WSAStartup(MAKEWORD(2, 2), &wsd))
    {
        MessageBox(NULL, "Error load Winsock2", "Error", MB_ICONERROR);
        return 1;
    }
    sct    =    WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, NULL, 0);
    if (sct == INVALID_SOCKET)
    {
        MessageBox(NULL, "An error was appeared during creating a socket", "ERROR", MB_ICONERROR);
        closesocket(sct);
        return 2;
    }
    
    SOCKADDR_IN sca;
    sca.sin_family        = AF_INET;
    sca.sin_port        = htons(PORT);
    sca.sin_addr.s_addr    = inet_addr(INETADDR);
    if (WSAConnect(sct, (sockaddr *)&sca, sizeof(sca), NULL, NULL, 0, 0))
    {
        MessageBox(NULL, "An error was appeared during connect", "ERROR", MB_ICONERROR);
        int t =WSAGetLastError();
        if (t ==WSAECONNREFUSED)
            MessageBox(NULL, "The attempt to connect was rejected", "ERROR", MB_ICONERROR);

        closesocket(sct);
        return 2;
    }
    WSABUF wsaBuf;
    wsaBuf.buf    = "Hello";
    wsaBuf.len    = strlen("Hello")+1;
    DWORD nSend;
    if (WSASend(sct, &wsaBuf, 1, &nSend, 0, NULL, NULL))
    {
        int iErr = WSAGetLastError();
        if (iErr == WSAENOBUFS)
            MessageBox(NULL, "Send Error; The Windows Sockets provider reports a buffer deadlock.", "ERROR", MB_ICONERROR);
        
    }
    closesocket(sct);
    return 0;

}
   

Это сообщение отредактировал(а) devmstr - 30.5.2006, 05:48


--------------------
Think different ©Steve Jobs 
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0387 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.