С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 17

Визуальная часть для программы, работающей с <winsock2.h>

27.10.2015, 19:12. Показов 1156. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
//---------------------------------------------------------------------------
 
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
 
//---------------------------------------------------------------------------
 
int myprintf (const char *lpFormat, ... ) {
    int nLen = 0;
    int nRet = 0;
    char ansiBuffer[512] ;
    char oemBuffer[512] ;
    va_list arglist ;
    HANDLE hOut = NULL;
    ZeroMemory(ansiBuffer, sizeof(ansiBuffer));
    va_start(arglist, lpFormat);
    nLen = lstrlen( lpFormat ) ;
    nRet = wvsprintf( ansiBuffer, lpFormat, arglist );
    if( nRet >= nLen || GetLastError() == 0 ) {
    hOut = GetStdHandle(STD_OUTPUT_HANDLE) ;
    CharToOem(ansiBuffer,oemBuffer);
    if( hOut != INVALID_HANDLE_VALUE )
    WriteConsole( hOut, oemBuffer, lstrlen(oemBuffer), (LPDWORD)&nLen, NULL ) ;
    } return nLen ;
}
 
char* encodeWSAGetLastError(int n){
    switch(n){
    case WSAEINTR: return " WSAEINTR: Прерванный вызов функции."; break;
    case WSAEACCES: return " WSAEACCES: Доступ запрещен."; break;
    // ....................
    default : return "Неизвестная ошибка"; break;
    }
}
 
#pragma argsused
int main(int argc, char* argv[])
{
    WSADATA wsaData;
    SOCKET ReceivingSocket;
    struct sockaddr_in ReceiverAddr, SenderAddr;
    int Port = 4000;
    char ReceiveBuf[1024];
    int BufLength = 1024;
    int SenderAddrSize = sizeof(SenderAddr);
    int Ret;
    ZeroMemory(&ReceiverAddr, sizeof(ReceiverAddr));
    ZeroMemory(&SenderAddr, sizeof(SenderAddr));
    // Инициализация Winsock версии 2.2
    if ((Ret = WSAStartup(MAKEWORD(2,2), &wsaData)) != 0)
    {
        // Так как Winsock не загрузился мы не можем использовать WSAGetLastError
        // для определения ошибки. Код ошибки возвращает сама функция WSAStartup
        myprintf("Ошибка WSAStartup %s\n", encodeWSAGetLastError(Ret));
        return 0;
    }
    // Создаём новый сокет для приёма датаграмм
    if ((ReceivingSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == INVALID_SOCKET)
    {
        myprintf("Ошибка socket %s\n", encodeWSAGetLastError(WSAGetLastError()));
        WSACleanup();
        return 0;
    }
    // Заполнение стуктуры struct sockaddr_in, чтобы уведомить функцию bind,
    // что мы хотим получать датаграммы со всех интерфейсов, используя порт 4000
    ReceiverAddr.sin_family = AF_INET;
    ReceiverAddr.sin_port = htons(Port);
    ReceiverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
    // Ассоциируем адресную информацию с сокетом
    if (bind(ReceivingSocket, (struct sockaddr *)&ReceiverAddr, sizeof(ReceiverAddr))   == SOCKET_ERROR)
    {
        myprintf("Ошибка bind %s\n", encodeWSAGetLastError(WSAGetLastError()));
        closesocket(ReceivingSocket);
        WSACleanup();
        return 0;
    }
    myprintf("Мы готовы получить 1 датаграмму с любого интерфейса на порту %d...\n", Port);
    // Здесь мы можем получить 1 диаграмму на наш связанный сокет
    if ((Ret = recvfrom(ReceivingSocket, ReceiveBuf, BufLength, 0,
        (struct sockaddr *)&SenderAddr, &SenderAddrSize)) == SOCKET_ERROR)
    {
        myprintf("Ошибка recvfrom %s\n", encodeWSAGetLastError(WSAGetLastError()));
        closesocket(ReceivingSocket);
        WSACleanup();
        return 0;
    }
    ReceiveBuf[Ret] = '\0';
    myprintf("Мы успешно получили %d байт сообщения %s от адреса %s:%d.\n", Ret, ReceiveBuf, inet_ntoa(SenderAddr.sin_addr), ntohs(SenderAddr.sin_port));
    // По окончании приёма датаграммы закроем сокет
    closesocket(ReceivingSocket);
    // Выгружаем Winsock
    WSACleanup();
    myprintf("Нажмите Enter для завершения.\n");
    getchar();
    return 0;
}
//---------------------------------------------------------------------------
Нужно сделать из этого визуальное приложение на c++ builder
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.10.2015, 19:12
Ответы с готовыми решениями:

Производительность программы, работающей с пикселями канвы
Доброго времени суток. У меня есть простенькая программа, которая выполняет несколько сотен или тысяч проверок цветов с монитора. Но...

Визуальная часть
Есть программа Delphi. С помощью её можно сделать визуальную часть программы с кнопками, но там используется паскаль. Вот подскажите...

Визуальная часть в Xcode with Swift
подскажите идеи реализации такого таб бара в SWIFT: 1 - что бы были такие вкладки 2 - что бы изображения имели реальный цвет а не цвет...

1
0 / 0 / 0
Регистрация: 21.10.2014
Сообщений: 17
29.10.2015, 15:29  [ТС]
В файле word код программы , помогите пожалуйста)
Вложения
Тип файла: docx Kursachok.docx (13.6 Кб, 3 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2015, 15:29
Помогаю со студенческими работами здесь

Перенос Qt + Winsock2 программы на другой компьютер
Всем доброго времени суток! Помогите пожалуйста со страшной проблемой:cry: У меня есть программа, написанная на Qt5 под Windows, в ней...

От кода - до работающей программы.
&quot; Детский вопрос &quot; : имеется код программы, написанный на Turbo Pascal. А что дальше ? Как из него сделать работающую программу ? И с...

Выкидывает из работающей программы
Всем привет! Пишу сюда т.к. не знаю какие разделы могут подойти для моей программы. Точнее не совсем моей. Собственно вот она. program...

Обновление работающей программы
как обновить файл (exe) самой запущенной программы??

Образ уже работающей на ПК программы
Господа специалисты, Возможно ли сделать образ уже работающей на ПК программы, что бы был возможен перенос и корректная работа ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru