Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ WinAPI Книги по WinApi Пошел я на книжный рынок что бы купить себе книги по WinApi. и мне уже сказали что такие книги не продают так вот вопрос в каком интренети магазине(Украина ) можно заказать книги по WinApi Добавлено через 10 минут Сказали что по WinApi уже не выпускают книги так вот вопрос где их можно достать https://www.cyberforum.ru/ win-api/ thread420798.html Автоматическое изменение размера основного окна приложения C++ WinAPI
Поиск сабжа ничего не дал. А я сижу и не что-то могу сообразить :wall: Имеем основное окно приложения, на котором расположены несколько компонентов. Пусть это будут панель инструментов, таб-контрол и строка состояния. С первым и последним все понятно, они умеют подстраиваться под размер окна. Таб не умеет, но у него есть макрос TabCtrl_AdjustRect, который позволяет задать желаемые размеры. У...
C++ WinAPI Имитация мыши. Полное управление курсором. WinAPI https://www.cyberforum.ru/ win-api/ thread420159.html
Требуется найти функции, которые используем мыщьх. Движение курсора, нажатие LB\RB, прокрутка вниз\вверх. Задача состоит в имитации работы пользователя, т.о. нужно при свернутом приложении действовать на другие программы. Хочу создать opensource редактор макросов для винды.
C++ WinAPI Функция MessageBox Здравствуйте, уважаемые форумчане! Начал учиться по Щупаку программировать для windows. Набрал первый пример из книги (ниже привожу его) #include <Windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { MessageBox(NULL, "Hello, Win32 World!", "Hello from messagebox", MB_OK); https://www.cyberforum.ru/ win-api/ thread419568.html
C++ WinAPI задача про экран
препод кинул задачку, а мы - нубы. объяснитеход решения пожалуйстп 1366x768 32бита,зажаты клавиши shift, Q и пробел, то чему равно следующее выражение (WS_CHILD | WS_VISIBLE | LBS_STANDARD) + (GetKeyState(MEDIA_PLAY_PAUSE-MEDIA_NEXT_TRACK+RETURN)>>7)*RGB(14, 9, 0) + GetDeviceCaps(deviceHDC, '^'-'V') - TRUE где deviceHDC=CreateDC(TEXT("DISPLAY"), NULL, NULL, NULL);
C++ WinAPI Считывание данных c edit https://www.cyberforum.ru/ win-api/ thread419299.html
Добрый вечер! Возникла проблема со считыванием текста с эдита. Дело в том что раньше работала с эдитами только в диалоговых окнах, а тут пришлось создать самостоятельно. Вот я создаю свой эдит: hEdit = CreateWindow(TEXT("EDIT"), NULL, WS_VISIBLE | WS_CHILD | WS_BORDER| ES_LEFT, 250, 10, 40, 27,(HWND) hMainWnd, (HMENU)IDC_EDIT, hInstance, NULL); ...
C++ WinAPI Изменение шрифта https://www.cyberforum.ru/ win-api/ thread419283.html
Можно ли установить стандартный шрифт в ресурсах, чтобы он изменял текст на всех элементах управления(кнопки, статики и т.д.)?
Создал Edit, но не могу в нем ничего напечатать C++ WinAPI
создал edit: HINSTANCE hInstance = 0; // create dialog const char* Win32ClassName = "WindowsTestDialog"; WNDCLASSEX wcex; wcex.cbSize = sizeof(WNDCLASSEX);
C++ WinAPI Заголовочный файл <windows.h>. Где он в Visual studio? https://www.cyberforum.ru/ win-api/ thread418305.html
Привет, участникам форума) Давно не писал сюда. Вот такая проблемка возникла: Никогда не писал для win32api, а тут прямо припёрло. Ну скачал Щупака. Открыл любимую visual studio восьмую, создал проект типа Windows application на C++. Набрал простейший пример: Код: #include <windows.h>
C++ WinAPI Как организовать ввод данных на чистом API? Добрый день )) Начал писать программу для построения графика эллипсоида. Основной алгоритм написан, завис на моменте создания дочерних окон для ввода переменных (( Использую VC 2008 Express (других IDE под рукой нет). Создавать и редактировать ресурсы, соответственно, нет возможности. Да и опыта работы с ними как такового нет. Часть кода: #include <windows.h> #include <windef.h> #include... https://www.cyberforum.ru/ win-api/ thread418020.html
Как работать с Mathcad на чистом API, c/c++, Visual Studio. C++ WinAPI
Не подскажите, как подключиться и работать с Mathcad на чистом API, c/c++, Visual Studio?
C++ WinAPI Как удалить и вернуть кнопку https://www.cyberforum.ru/ win-api/ thread417547.html
Здравствуйте, уважаемые господа. Каким образом можно вернуть кнопку закрытия окна консольного приложения, которую я убираю при помощи функции DeleteMenu вот таким образом: HWND ConsoleWnd = FindWindow (NULL, "2_0_1"); HMENU hm = GetSystemMenu (ConsoleWnd, FALSE); DeleteMenu (hm, SC_CLOSE , MF_BYCOMMAND); DrawMenuBar (ConsoleWnd); При помощи функции EnableMenuItem? Если да, то как...
60 / 57 / 8
Регистрация: 22.07.2011
Сообщений: 436
0

Ошибка в использовании сокетов - C++ WinAPI - Ответ 2344708

31.12.2011, 15:51. Показов 842. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Захотел сделать сервер-клиент. Нашёл статью, как можно организовать через winapi. Так вот, если сервер стоит на одном компе с клиентом, то всё получилось без проблем. А если на разных, то никак.
Код Сервера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <cstdlib>
#include <iostream>
#include <conio.h>
#include <winsock2.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
    WORD sockVer;
    WSADATA wsaData;
    int retVal;
 
    sockVer = MAKEWORD(2,2);
 
    WSAStartup(sockVer, &wsaData);
 
    SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if(servSock == INVALID_SOCKET)
    {
        cout << "Unable to create socket" << endl;
        getch();
        WSACleanup();
        
        return SOCKET_ERROR;
    }
    SOCKADDR_IN sin;
    sin.sin_family = PF_INET;
    sin.sin_port = 0;
    sin.sin_addr.s_addr = inet_addr("5.5.149.227\0");
 
    retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to bind" << endl;
        WSACleanup();
        getch();
        return SOCKET_ERROR;
    }
 
    retVal = listen(servSock, 10);
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to listen" << endl;
        WSACleanup();
        getch();
        return SOCKET_ERROR;
    }
 
    SOCKET clientSock;
 
    clientSock = accept(servSock, NULL, NULL);
 
    if(clientSock == INVALID_SOCKET)
    {
        cout << "Unable to accept" << endl;
        WSACleanup();
        getch();
        return SOCKET_ERROR;
    }
 
    char szReq[100];
    retVal = recv(clientSock, szReq, 100, 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to recv" << endl;
        getch();
        return SOCKET_ERROR;
    }
    
    cout << "Got the request from client" << endl << szReq << endl;
 
    char szResp[100] = "hi, client";
 
    cout << "Sending response from server" << endl;
    retVal = send(clientSock, szResp, strlen(szResp), 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to send" << endl;
        getch();
        return SOCKET_ERROR;
    }
 
    closesocket(clientSock);
    closesocket(servSock);
 
    WSACleanup();
    getch();
    return 0;
}
Код клиента:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <cstdlib>
#include <iostream>
#include <winsock2.h>
#include <conio.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
WORD ver = MAKEWORD(2,2);
    WSADATA wsaData;
    int retVal=0;
 
    WSAStartup(ver,(LPWSADATA)&wsaData);
 
    LPHOSTENT hostEnt;
 
    hostEnt = gethostbyaddr("5.5.149.227", 12, PF_INET);
 
    if(!hostEnt)
    {
        cout << "Unable to collect gethostbyaddr" << endl;
        WSACleanup();
        getch();
        return 1;
    }
 
    //Ñîçäàåì ñîêåò
    SOCKET clientSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if(clientSock == SOCKET_ERROR)
    {
        cout << "Unable to create socket" << endl;
        WSACleanup();
        getch();
        return 1;
    }
 
    SOCKADDR_IN serverInfo;
 
    serverInfo.sin_family = PF_INET;
    serverInfo.sin_addr = *((LPIN_ADDR)*hostEnt->h_addr_list);
    serverInfo.sin_port = htons(1111);
 
    retVal=connect(clientSock,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
    if(retVal==SOCKET_ERROR)
    {
        cout << "Unable to connect" << endl;
        WSACleanup();
        getch();
        return 1;
    }
    cout << "Connection made sucessfully" << endl;
 
    char *pBuf = "hi, server";
    cout << "Sending request from client" << endl;
    retVal = send(clientSock, pBuf, strlen(pBuf), 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to send" << endl;
        WSACleanup();
        getch();
        return 1;
    }
 
 
    char szResponse[100];
    retVal = recv(clientSock, szResponse, 100, 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to recv" << endl;
        WSACleanup();
        getch();
        return 1;
    }
    cout << "Got the response from server" << endl << szResponse << endl;
 
    closesocket(clientSock);
    WSACleanup();
    getch();
    return 0;
}
Ошибка происходит тут: hostEnt = gethostbyaddr("5.5.149.227", 12, PF_INET); (в локалке я использовал функцию gethhostbyname())
Ошибка не в компиляторе! Её выводит консоль:
C++
1
2
3
4
5
6
7
 if(!hostEnt)
    {
        cout << "Unable to collect gethostbyaddr" << endl;
        WSACleanup();
        getch();
        return 1;
    }
Добавлено через 9 часов 49 минут
Всё, выяснилось, что эту часть можно пропустить.

Добавлено через 13 часов 33 минуты
Возникла новая проблема: попытался засунусть ожидание пользователя в поток, но функция accept() почему-то возвращает INVALID_SOCKET;
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#include <winsock2.h>
#include <stdio.h>
#include <iostream>
 
using namespace std;
 
 
    WORD sockVer;
    WSADATA wsaData;
    int retVal;
 
    SOCKET servSock;
    SOCKET clientSock[10];
    
int Thread1(LPVOID pParam);
 
 HANDLE hThread1;
 
 DWORD hThread1ID;
 
int main(void)
{ 
    
   sockVer = MAKEWORD(2,2);
   WSAStartup(sockVer, &wsaData); 
    servSock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if(servSock == INVALID_SOCKET)
    {
        cout << "Unable to create socket" << endl;
        WSACleanup();
        getchar();
        return SOCKET_ERROR;
    }
    SOCKADDR_IN sin;
    sin.sin_family = AF_INET;
    sin.sin_port = htons(1111);
    sin.sin_addr.s_addr = inet_addr("127.0.0.1");
 
    retVal = bind(servSock, (LPSOCKADDR)&sin, sizeof(sin));
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to bind" << endl;
        WSACleanup();
        getchar();
        return SOCKET_ERROR;
    }
 
 
    retVal = listen(servSock, 10);
    if(retVal == SOCKET_ERROR)
    {
       cout << "Unable to listen" << endl;
        WSACleanup();
        getchar();
        return SOCKET_ERROR;
    }
    
  hThread1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread1, NULL, 0, &hThread1ID);
 
  while(hThread1 != 0 && hThread2 != 0)
  Sleep(100);
 
    closesocket(servSock);
 
    WSACleanup();
    getchar();
    return 0;
}
 
int Thread1(LPVOID pParam)
{
 clientSock[0] = accept(servSock, NULL, NULL);
 
 
    if(clientSock[0] == INVALID_SOCKET)
    {
        cout << "Unable to accept" << endl;
        WSACleanup();
        getchar();
        return SOCKET_ERROR;
    }
 
    char szReq[100]; 
    retVal = recv(clientSock[0], szReq, sizeof(szReq), 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to recv" << endl;
        getchar();
        return SOCKET_ERROR;
    }
    
    cout << "Got the request from client" << endl << szReq << endl;
 
    char *szResp = "hi, client";
 
    cout << "Sending response from server" << endl;
    retVal = send(clientSock[0], szResp, strlen(szResp), 0);
 
    if(retVal == SOCKET_ERROR)
    {
        cout << "Unable to send" << endl;
        getchar();
        return SOCKET_ERROR;
    }
 
    closesocket(clientSock[0]);
    hThread1 = 0;
    
    return 0;
   }
Добавлено через 18 минут
Выяснилось, что в каждом потоке нужно снова инициализировать сокет. Но неужели для каждого пользователя свой сокет?

Вернуться к обсуждению:
Ошибка в использовании сокетов C++ WinAPI
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2011, 15:51
Готовые ответы и решения:

Ошибки линковщика при использовании сокетов
Доброго времени суток! При попытки скомпилировать код, линковшик выдает ошибки. Хотелось бы...

Буфер данных при использовании сокетов
Всем привет! На что влияет буфер при отправлении и получении данных через сокеты? byte bytes = new...

Проблема при использовании сокетов с русскими буквами.
ДЕЛО В ТОМ ЧТО ПРИ ПЕРДАЧИ ДАННЫХ МЕЖДУ КЛИЕНТОМ И СЕРВЕРОМ ИСПОЛЬЗУЮТСЯ ТАКИЕ ЗАМОРОЧКИ КАК ПОТОКИ...

Ограничение скорости передачи данных при использовании сокетов.
Требуется передавать большие объемы данных от сервера клиенту (коих одновременно может быть...

0
31.12.2011, 15:51
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.12.2011, 15:51
Помогаю со студенческими работами здесь

Отличие Web сокетов от сокетов в Boost Asio
Здравствуйте, Кто нибудь может пожалуйста подсказать, есть ли различие между WebSocket и...

Ошибка сокетов: D/AndroidRuntime: Shutting down VM
Пишу сокет-клиент. Вроде всё делаю правильно... tvOut.setText(&quot;Коннектимся...&quot;);...

Ошибка при использовании vector (в конце, после вывода результатов выскакивает ошибка, но сам результат коректен)
Суть в следующем, мы считываем введеные значения и выводим этот массив Проблема такова что...

Ошибка в использовании библиотеки/ошибка в библиотеке
Изучаю Java, написал библиотеку для рисования некоторых геометрических фигур (точка, круг, квадрат,...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru