@tigmen

Send WinSocket не отправляет сообщение на сервер, что делать?

Я использую winsocket и winapi для разработки "месседжера". И send() из winsocket не работает с GetWindowText(). Вот код:
GUI(при нажатии на кнопку отправляется сообщение введенное в obj.hEDIT)
case ID_BUTTON3:
        {
            char ip[32] = "127.0.0.1";
            client(ip, 1111, obj.hWnd);
            CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)CMH,NULL, NULL, NULL);
            break;
        }

client:
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)
#include <WinSock2.h>
#include <iostream>
#include <windows.h>

SOCKET hconnect;

    int client(char ip[32], int port, HWND hwnd)
    {
        WSADATA wsa;
        WORD DLLVersion = MAKEWORD(2, 1);
        if (WSAStartup(DLLVersion, &wsa) != 0)
        {
            //std::cout << "Error 1" << std::endl;
            exit(1);
        }

        SOCKADDR_IN addr;
        int sizeaddr = sizeof(addr);
        addr.sin_addr.s_addr = inet_addr(ip);
        addr.sin_port = htons(port);
        addr.sin_family = AF_INET;

        SOCKET conect = socket(AF_INET,SOCK_STREAM, NULL);
        if (connect(conect, (SOCKADDR*)&addr, sizeof(addr)) != 0)
        {
            //std::cout << "Error 1" << std::endl;
            return 1;
        }
        //std::cout << "Connected!\n";
        char msg[256];
        hconnect = conect;
        return 0;
    }
    char* clienthandler()
    {
        char msg[256];
        recv(hconnect, msg, 256, NULL);
        return msg;
    }
    int servermessage(char msg[256])
    {
        send(hconnect, msg, 256, NULL);
        return 0;
    }

Server:
#include <iostream>
#pragma comment(lib, "ws2_32.lib")
#pragma warning(disable: 4996)
#include <WinSock2.h>

SOCKET connectn[32];
int Counter = 0;

void ClientHandler(int index)
{
    char msg[256];
    while (true) {
        recv(connectn[index], msg, sizeof(msg), NULL);
        std::cout << msg << std::endl;
        for (int i = 0; i < Counter; i++)
        {
            if (i == index) {
                continue;
            }
            send(connectn[index], msg, sizeof(msg), NULL);
        }
    }
}

int main()
{
    WSADATA wsa;
    WORD DLLVersion = MAKEWORD(2, 1);
    if (WSAStartup(DLLVersion, &wsa) != 0)
    {
        std::cout << "Error 1" << std::endl;
        return 1;
    }
    int port;
    char ip[32];
    //127.0.0.1
    //1111
    std::cout << "ip: ";
    std::cin >> ip;
    std::cout << "port: ";
    std::cin >> port;

    SOCKADDR_IN addr;
    int sizeaddr = sizeof(addr);
    addr.sin_addr.s_addr = inet_addr(ip);
    addr.sin_port = htons(port);
    addr.sin_family = AF_INET;

    SOCKET sListen = socket(AF_INET, SOCK_STREAM, NULL);
    bind(sListen, (SOCKADDR*)&addr, sizeof(addr));
    listen(sListen, SOMAXCONN);

    SOCKET nConect;
    for (int i = 0; i < 32; i++)
    {
        nConect = accept(sListen, (SOCKADDR*)&addr, &sizeaddr);
        if (nConect == 0)
        {
            std::cout << "Error 2" << std::endl;
            return 1;
        }
        else
        {
            std::cout << "Client Connected!\n";
            
            
            connectn[i] = nConect;
            Counter++;
            CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)ClientHandler, (LPVOID)i, NULL, NULL);
        }
    }

    char b;
    std::cin >> b;
    return 0;
}
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы