Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/145: Рейтинг темы: голосов - 145, средняя оценка - 4.99
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6

WinSock:простой пример:нужен исходник с коментами

24.07.2010, 23:55. Показов 27369. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
вже запарился искать в иннете, неспорю примеры есть но не один не получается запустить
то там недоделки то там то вообще наткнулся на статью написанно что под виндов а скрипт под уникс, да и почти все статьи перегружают дополнительным кодом показывая свою крутизну в программировании, в общем на вас последняя надежда

нужен исходник с коментами консольного приложения "клиент-сервис"

насколько я понимаю логика должна быть примерно следующей:
сервер:
-создать сокет
-ждать подключения
-отправить/принять сообщение

клиент:
-создать сокет
-пытаться подключится
-принять/отправить сообщение


плиз выложите файлы для Visual C++ 6.0 рабочего примера - что бы я вже хоть от чего та мог отталкиватся.
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.07.2010, 23:55
Ответы с готовыми решениями:

Простой арканоид - нужен исходник
Здравствуйте! Пишу арканоид на Си. Без дополнений, без уровней и без жизней. Может кто-нибудь прислать исходник кода для этой игры.

Нужен исходник ScreenSaver (хранителя экрана) в Delphi, то бишь заставки, самый простой и не замысловатый
Пыталась сделать хранитель экрана в Delphi. но что то мои труды не увенчались успехом, не получается ни по каким обучалкам и блогам. Кому...

Нужен пример простой игры
Нужно создать не сложную игру, типа 2048/крестики нолики/сапер. Прошу, если у вас есть свои игры на делфи бросьте их в эту тему, желательно...

16
 Аватар для erthalion
48 / 45 / 4
Регистрация: 29.03.2010
Сообщений: 233
25.07.2010, 08:57
посмотри вот это - может поможет (простейший консольный пример - клиент отсылает серверу коэффициенты квадр ур и получает корни)
писал в vs2008 - вроде работало)
Вложения
Тип файла: zip sock.zip (1.7 Кб, 2484 просмотров)
2
 Аватар для erthalion
48 / 45 / 4
Регистрация: 29.03.2010
Сообщений: 233
25.07.2010, 09:12
на всякий случай упомяну, что нужно подключить библиотеку winsock32.lib
0
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6
25.07.2010, 09:43  [ТС]
Биг сенкс за пример
шикарно вже сервер запустил се работает, и насчет библиотеки тож правильно, но у меня ее VC++ не находит, зато с ws2_32.lib все прекрасно работает.
всетаки форум это весчь!, стока времени экономит

сейчас вже буду в синтаксис вникать, кстати исходники используют TCP или UDP ?
0
 Аватар для erthalion
48 / 45 / 4
Регистрация: 29.03.2010
Сообщений: 233
25.07.2010, 10:59
ну для начала это вовсе не критично)
но вообще при создании сокета используется AF_INET - а это вроде подразумевает TCP
0
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6
25.07.2010, 14:15  [ТС]
частично с кодом разобрался,

сейчас у меня
сервер:
ждет соединения
как только есть соединение пытается принять 1 символ
если принял отсылает в ответ "Ok"

клиент:
пытается подключится
считывает от пользователя символ
отправляет его на сервер
считывает ответ от сервера - выводит его пользователю


Проблемма: на сервере когда выводит считываемую информацию, помимо ее еще выводит иероглефы+WinSock2.0 -видать отчет какой та
как его отсеить и что бы был чисто ответ? (именно хотелось бы функией а не выводом только части буфера)


и 2й момент: как сделать что бы приложение работоло в сети internet?
логика: я запускаю на ПК1 сервер,
на ПК2 запускаю клиент,
вписываю в него IP сервера, - клиент конектится
затем ввожу символ - и клиент отсылает символ на сервер

вот исходники:
сервер: сервер.txt
клиент клиент.txt
0
 Аватар для erthalion
48 / 45 / 4
Регистрация: 29.03.2010
Сообщений: 233
25.07.2010, 18:05
"иероглифы" - это скорее всего просто проблемы с размером передаваемой строки (передается или принимается лишнее) - заполни исходную строку, куда считываешь ответ от сервера, символами окончания строки - вроде это решит проблему.

а по поводу запуска на разных компах - нужно получить переменную LPHOSTENT lphost (например, используя имя сервера и функцию gethostbyname(host_name) или по ip), потом при заполнении структуры struct sockaddr_in serv_addr сделать что-нибудь такое
C++
1
memcpy((void*)&serv_addr.sin_addr,lphost->h_addr,lphost->h_length);
структура serv_addr и будет отвечать за то, куда цепляемся

потом указать порт на сервере
C++
1
serv_addr.sin_port=htons(port);
а все остальное так же (если, конечно, ничего не забыл))
0
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6
25.07.2010, 19:06  [ТС]
плиз напиши как инициализировать что бы клиент подключался по конкретному ip адресу
0
 Аватар для erthalion
48 / 45 / 4
Регистрация: 29.03.2010
Сообщений: 233
26.07.2010, 10:26
C++
1
memcpy((void*)&serv_addr.sin_addr,lphost->h_addr,lphost->h_length);
здесь ip выбираем из структуры lphost (lphost->h_addr)

как видишь, достаточно написать что-нибудь такое
C++
1
2
LONG ip;
serv_addr.sin_addr.s_addr=ip;
1
77
1 / 1 / 0
Регистрация: 24.07.2010
Сообщений: 6
27.07.2010, 23:07  [ТС]
плиз помогите разобраться с сокет

создаю клиент-сервер - на мое компе работает (через мой ip)

как через иннет нефига не хочет работать вже как ток не пробовал ip же сервера вписываю почему не конектиться та????

please help me

Добавлено через 31 секунду
Вот исходник сервера:
============


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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream>//для использования стандарных операторов типо cout
#include <conio.h>      //для использования getch();
 
    #pragma comment(lib, "ws2_32")//включаем библиотеку для сокетов
    #include <winsock2.h>
 
using namespace std;//прямой доступ к операторам типо std::cout<<endl;
 
//глобальные переменные
    int i_error=0;//будет хранить код ошибки
//------------
 
int main (void)
{
    system("chcp 1251 > text");//ставим подержку русской кодировки
//--------------
    std::cout<<"Программа работает :)"<<endl<<endl;
/********************************************
0. настройка библиотеки Ws2_32.dll*/
    //В случае успеха WSAStartup возвращает 0; иначе - код ошибки. 
          WSADATA wsaData;//определяем переменную
    i_error = WSAStartup(MAKEWORD(2,2),&wsaData);//настраиваем
    if (i_error)//проверка на успешность настройки
    {std::cout<<"0)   ОШИБКА! "<<WSAGetLastError()<<"; 2й метод: "<<i_error<<endl;
    }else{ std::cout<<"0)   библиотека Ws2_32.dll - успешно настроена."<<endl;}
 
/********************************************
1. создание серверного сокета*/
    //В случае успеха socket возвращает номер сокет-дескриптора. иначе -1
        SOCKET SSock;//создаем прототип
    SSock=socket(
                AF_INET,//используется при создании Интернет-приложений
                SOCK_STREAM,//потоковый
                IPPROTO_TCP//ТСР - для потоковых
                );
    if(SSock==-1){std::cout<<"1)   ОШИБКА! - сокет не создан!"<<endl;
    }else{ std::cout<<"1)   Сокет успешно создан."<<endl;}
 
/********************************************
2. Привязка к локальным именам*/
    //необходимо сокет связать с IP-адресом компьютера.
    struct sockaddr_in addr;//создаем протатип(addr), структуры sockaddr_in
    addr.sin_family=AF_INET;//при создании Интернет-приложений
    //далее функции преобразуют переменные типа short [для htons()] 
        //и long[для htonl()], к формату понятному для сети.
    addr.sin_port=htons(3000);//порт
    addr.sin_addr.s_addr=htonl(INADDR_ANY);
        //INADDR_ANY сервер работает НА машине, с любым ip
    /*если мы захотим фактически задать IP-адрес
    Мы должны использовать функцию inet_addr(). inet_addr ("129.42.12.241")*/
        i_error=0;//очистка переменной для ошибок
    i_error = bind(//В случае успеха bind возвращает 0, в противном случае - "-1"
        SSock,
        (SOCKADDR*)&addr,//addr - указатель на структуру sockaddr_in
        sizeof(addr) //размер структуры.
        );
    if(i_error==-1){ std::cout<<"2)   ОШИБКА! сокет не связан с IP-адресом компьютера!"<<endl;
    }else{ std::cout<<"2)   Сокет успешно связан с IP-адресом компьютера."<<endl;}
 
 
 
/********************************************
3. Инициализация процесса «прослушивания» порта*/
    //приложение-сервер будет следить за всеми подключениями на заданный порт
    std::cout<<"3)   Инициализация процесса «прослушивания» порта"<<endl;
    listen(
            SSock, 
            3 //сколько запросов могут стоять в очереди
            );
 
/********************************************
4. подключение клиента - Получение дескриптора клиентского соединения*/
    //сервер создает новый сокет и связывает его с ассоциацией, 
        //эквивалентной 'слушающему сокету'
    SOCKET ClientSock;//создаем прототип сокета для подключающегося клиента
    struct sockaddr_in addr_klienta;//создаем прототип структуры для подключающегося клиента
    //Если функция accept выполнилась успешно - возвращает новый сокет 
        //для установленного соединения, в противном случае  INVALID_SOCKET
    int size_client_addr=sizeof(addr_klienta);//размер структуры для клиента
    ClientSock=accept(
                        SSock,// сокет
                        (sockaddr*)&addr_klienta, //адрес структуры (!)sockaddr_in 
                            //куда будет помещена информация о клиенте.
                        &size_client_addr // Длинна адреса
                       );
/*Метод Socket.Accept извлекает из очереди первый запрос и 
возвращает новый объект Socket, 
  который можно использовать для коммуникационного взаимодействия с клиентом.
  */
/*accept Как я уже говорил ранее в addr будет возвращена информация о клиенте. 
Нам будет важна только:
addr.sin_port – порт с которого было подключение
addr.sin_addr – ip клиента в двоичном формате. Для преобразования в строковой формат используется функция inet_ntoa. Т.е. ip:pchar; ip:=inet_ntoa(addr.sin_addr);
*/
 
    if(ClientSock==INVALID_SOCKET) std::cout<<"4)   ОШИБКА! подключения клиента"<<endl;
    else std::cout<<"4)   Клиент успешно подключен"<<endl;
 
 
/********************************************
5. Передача-чтение данных*/
  //чтение
    //char c_data_from_klient[]="Ghbdtn";
    char c_data_ot_k[1024];
    recv(//чтение
        ClientSock,//сокет
        c_data_ot_k,//буфер куда поподут данные
        1024,//размер буфера чтения - сколько считать
        0//делаем ее аналогичной как функция read
        );
    std::cout<<"5)   Были полученны от клиента данные: "<<c_data_ot_k<<endl;
 
 
    char c_data_s_go_k[]="Hello klient";
    send(//отправка
        ClientSock,//сокет
        c_data_s_go_k,//данные
        sizeof(c_data_s_go_k),
        0//делаем ее аналогичной как функция write
        );
 
 
 
 
 
/********************************************
6. Закрытие сокета*/
    closesocket (SSock);//закрытие
    WSACleanup();// выгружаем WinSock
 
//----------------
    std::cout<<"\n\nДля завершения программы нажмите любую клавишу."<<endl;
    getch();//ждем нажатие клавиши :)
    return 0;
}
Добавлено через 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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include <iostream>//для использования стандарных операторов типо cout
#include <conio.h>      //для использования getch();
 
    #pragma comment(lib, "ws2_32")//включаем библиотеку для сокетов
    #include <winsock2.h>
 
using namespace std;//прямой доступ к операторам типо std::cout<<endl;
 
//глобальные переменные
    int i_error=0;//будет хранить код ошибки
//------------
 
int main (void)
{
    system("chcp 1251 > text");//ставим подержку русской кодировки
//--------------
    std::cout<<"К Л И Е Н Т   >>>Программа работает :)"<<endl<<endl;
/********************************************
0. настройка библиотеки Ws2_32.dll*/
    //В случае успеха WSAStartup возвращает 0; иначе - код ошибки. 
          WSADATA wsaData;//определяем переменную
    i_error = WSAStartup(MAKEWORD(2,2),&wsaData);//настраиваем
    if (i_error)//проверка на успешность настройки
    {std::cout<<"0)   ОШИБКА! "<<WSAGetLastError()<<"; 2й метод: "<<i_error<<endl;
    }else{ std::cout<<"0)   библиотека Ws2_32.dll - успешно настроена."<<endl;}
 
/********************************************
1. создание серверного сокета*/
    //В случае успеха socket возвращает номер сокет-дескриптора. иначе -1
        SOCKET my_sock;//создаем прототип
    my_sock=socket(
                AF_INET,//используется при создании Интернет-приложений
                SOCK_STREAM,//потоковый
                IPPROTO_TCP//ТСР - для потоковых
                );
    if(my_sock==-1){std::cout<<"1)   ОШИБКА! - сокет не создан!"<<endl;
    }else{ std::cout<<"1)   Сокет успешно создан."<<endl;}
 
/********************************************
2. Привязка к локальным именам*/
  //При установке соединения -/клиент/ может указать 
  //    в качестве адреса как DNS-имя, так и IP-адрес сервера.
/*
//INADDR_ANY сервер работает НА машине, с любым ip
    /*если мы захотим фактически задать IP-адрес
    Мы должны использовать функцию inet_addr(). inet_addr ("77.235.103.45")*/
 
 
    struct sockaddr_in  dest_addr ;//создаем протатип(dest_addr), структуры sockaddr_in
    dest_addr.sin_family=AF_INET;//при создании Интернет-приложений
    dest_addr.sin_port=htons (3000); //порт
 
    // Преобразование IP -адреса. servIP - адрес сервера
    char *servIP = "93.127.32.109";//задаем ip
dest_addr.sin_addr.s_addr = inet_addr(servIP);
 
//HOSTENT *hst;
//hst=gethostbyname(servIP);
//((unsigned long*)&dest_addr.sin_addr)[0] = ((unsigned long**)hst->h_addr_list)[0][0];
/*
    if(inet_addr(servIP)!=INADDR_NONE ){
        dest_addr.sin_addr.s_addr = inet_addr(servIP) ;
    }else{ 
            //Осуществляем попытку получения IP-адреса по доменному имени
            if(hst=gethostbyname(servIP))
            {
                ((unsigned long*)&dest_addr.sin_addr)[0] = 
                    ((unsigned long**)hst->h_addr_list)[0][0];
            }else{
                cout<<"Invalid address"<<servIP<<endl;
                closesocket(my_sock);
                WSACleanup() ;
            }
 
    }
 
*/
 
 
/********************************************
4. Установка связи*/
    
    connect(
        my_sock, //сокет
        (sockaddr*)&dest_addr, //dest_addr -указатель на структуру
        sizeof(dest_addr) //размер
        );
 
 
 
 
 
 
 
/********************************************
5. Передача-чтение данных*/
  //отправка
    char c_data_k_go_s[]="V2 kliento";
    send(//отправка
        my_sock,//сокет
        c_data_k_go_s,//данные
        sizeof(c_data_k_go_s),
        0//делаем ее аналогичной как функция write
        );
 
 
  //чтение
    //char c_data_from_klient[]="Ghbdtn";
    char c_data_ot_s[1024];
    recv(//чтение
        my_sock,//сокет
        c_data_ot_s,//буфер куда поподут данные
        1024,//размер буфера чтения - сколько считать
        0//делаем ее аналогичной как функция read
        );
    std::cout<<"5)   Были полученны от сервера данные: "<<c_data_ot_s<<endl;
 
 
 
 
 
 
 
/********************************************
6. Закрытие сокета*/
    closesocket (my_sock);//закрытие
    WSACleanup();// выгружаем WinSock
 
//----------------
    std::cout<<"\n\nДля завершения программы нажмите любую клавишу."<<endl;
    getch();//ждем нажатие клавиши :)
    return 0;
}
0
113 / 113 / 13
Регистрация: 01.10.2008
Сообщений: 876
28.07.2010, 08:12
77, если не коннектится через нет, то это не проблема твое проги а проблема модема
надо как-то натроить его на прием соединий
0
0 / 0 / 0
Регистрация: 22.03.2013
Сообщений: 51
16.11.2016, 16:23
erthalion,

Подскажите как подключить winsock32.lib
Система Windows 10
0
0 / 0 / 0
Регистрация: 03.03.2017
Сообщений: 23
03.09.2017, 18:20
Всё зависит от компилятора и среды. Могу сказать решение для Code::Blocks
0
Software Developer
 Аватар для fastb1t
315 / 229 / 113
Регистрация: 03.05.2017
Сообщений: 1,336
09.09.2017, 23:25
Цитата Сообщение от JohnChaban Посмотреть сообщение
Подскажите как подключить winsock32.lib
Система Windows 10
гдето в начале ....
C++
1
#pragma comment(lib, "winsock32.lib")
Добавлено через 9 минут
Цитата Сообщение от 77 Посмотреть сообщение
плиз выложите файлы для Visual C++ 6.0 рабочего примера - что бы я вже хоть от чего та мог отталкиватся.
залезть только в поиск на форуме, я не говорю уже о гугле, там столько рабочих примеров, что от них не только можна отталкиватся, но и долго потом ещё и "бежать не уставая" ...
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
10.09.2017, 17:39
Цитата Сообщение от decrement Посмотреть сообщение
гдето в начале ....
будет работать только в компиляторе от MS.
0
 Аватар для zz555
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 6
24.04.2018, 12:25
Добрый день!

Пытаюсь запустить в "Microsoft Visual Studio 2017" пример от сюда "клиент.txt" (сообщение от: 25.07.2010 14:15)

Получаю две ошибки компиляции:

Error C4996 'gethostbyname': Use getaddrinfo() or GetAddrInfoW() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
Error C4996 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _getch. See online help for details.

Подскажите как их решить.
Миниатюры
WinSock:простой пример:нужен исходник с коментами   WinSock:простой пример:нужен исходник с коментами  
0
 Аватар для zz555
0 / 0 / 0
Регистрация: 06.06.2017
Сообщений: 6
25.04.2018, 10:37
Рабочий пример для "Microsoft Visual Studio 2017".

"Создание сетевого чата C++ / C# (Часть 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
// server.cpp
// "Создание сетевого чата C++ / C# (Часть 1)"
// https://www.youtube.com/watch?v=B4fQDQdiNfo
 
#include "stdafx.h"
#include <WinSock2.h>
#include <iostream>
#include <WS2tcpip.h>
#pragma comment(lib, "Ws2_32.lib")
 
SOCKET  Connect;
SOCKET* Connections;
SOCKET  Listen;
 
int ClientCount = 0;
 
void SendMessageToClient(int ID) {
    char* buffer = new char[1024];
    for (;;Sleep(75)) {
        memset(buffer,0,sizeof(buffer));
        if (recv(Connections[ID],buffer,1024,NULL)) {
            printf(buffer);
            printf("\n");
            for (int i=0; i<=ClientCount; i++) {
                send(Connections[i], buffer, strlen(buffer), NULL);
            }
        }
    }
    delete buffer;;
}
 
int main() {
    setlocale(LC_ALL, "russian");
    WSAData data;
    WORD version = MAKEWORD(2,2);
    int res = WSAStartup(version, &data);
    if (res != 0) return 0;
 
    struct addrinfo hints;
    struct addrinfo * result;
 
    Connections = (SOCKET*)calloc(64, sizeof(SOCKET));
 
    ZeroMemory(&hints, sizeof(hints));
 
    hints.ai_family = AF_INET;
    hints.ai_flags = AI_PASSIVE;
    hints.ai_socktype = SOCK_STREAM;
    hints.ai_protocol = IPPROTO_TCP;
 
    getaddrinfo(NULL, "7770", &hints, &result);
 
    Listen = socket(result->ai_family, result->ai_socktype, result->ai_protocol);
    bind(Listen, result->ai_addr, result->ai_addrlen);
    listen(Listen, SOMAXCONN);
 
    freeaddrinfo(result);
 
    printf("Start server....");
    char m_connect[] = "Connect...;;;5";
    for (;;Sleep(75)) {
        if (Connect = accept(Listen, NULL, NULL)) {
            printf("Client connect...\n");
            Connections[ClientCount] = Connect;
            send(Connections[ClientCount], m_connect, strlen(m_connect), NULL);
            ClientCount++;
            CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)SendMessageToClient, (LPVOID)(ClientCount-1), NULL, NULL);
        }
    }
 
    return 1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.04.2018, 10:37
Помогаю со студенческими работами здесь

Нужен пример простой игры
Ребята скиньте пожалуйста простую игру на джава начинающему программисту :)

Быстрая сортировка: нужен простой пример
Помогите, пожалуйста. Нужно написать любой код быстрой сортировки в VBA. Не сложный, чтобы можно было бы разобраться. Спасибо

Нужен простой пример чтения PDF
дайте самый простой пример работы с файлом PDF на PHP

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

Нужен пример любой простой программы
Доброго времени суток, форумчане! Требуется пример простенькой программы с кодом самой программы (желательно с комментариями и не такую...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru