Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.67/117: Рейтинг темы: голосов - 117, средняя оценка - 4.67
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361

telnet через С++

05.07.2010, 15:34. Показов 23951. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
задание такое:
нужно через командную строку в telnet и оттуда зайти на switch'и и дать им команду reboot
если что не ясно, спрашивайте
заранее благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.07.2010, 15:34
Ответы с готовыми решениями:

Проблемы общения TELNET - клиента с Microsoft Telnet server
Задание по сетям на семестр было в написании кросс-платформенного (ха ха) консольного клиента, реализующего минимальное подмножество опций...

Можно запросом через telnet серверу получить часовой пояс клиента?
Пишу сервер(windows). Можно ли как-то запросом через telnet серверу получить часовой пояс клиента(это что бы вернуть клиенту время в его...

Хочу подключится через telnet к удаленному компютеру, пишу telnet ip и пишет не удалось открыть подключение к
Хочу подключится через telnet к удаленному компютеру, пишу telnet ip и пишет не удалось открыть подключение к этому узлу на порт 23, сбой...

49
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
07.07.2010, 16:20  [ТС]
вот нарыл в инете, но работать отказывается
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
#include <comdef.h>
#include <atlbase.h>
#include <windows.h>
#include <stdio.h>
 
VOID ReadFromPort( ITcp *pSocket, DWORD dwMaxMSecs );
 
////////////////////////////////////////////////////////////////////////////////
 
int main(int argc, char* argv[])
{
    ITcp        *pSocket = NULL;
    LONG        lLastError;
    HRESULT     hr;
    _bstr_t     bstrHost = "library.uah.edu";
    _bstr_t     bstrLogin = "guest";
    _bstr_t     bstrPassword = "guest";
 
    // Initialize COM
    CoInitialize(NULL);
 
    hr = CoCreateInstance(CLSID_Tcp, NULL, CLSCTX_INPROC_SERVER, IID_ITcp, (void**) &pSocket );
 
    if( ! SUCCEEDED( hr ) )
    {
        pSocket = NULL;
        printf( "Unable to create instance of the object.\n" );
        goto _EndMain;
    }
 
    pSocket->put_Protocol( asPROTOCOL_TELNET ); // Telnet protocol
 
    // Connect
    pSocket->Connect( bstrHost, 23 );
    pSocket->get_LastError( &lLastError );
    printf( "Connect to '%s', result: %d\n", ( char * ) bstrHost, lLastError );
 
    if( lLastError ) goto _EndMain;
 
    printf( "Wait for 5 seconds before telnet connection is established...\n" );
    Sleep( 5000 );  // It usually takes some seconds before a connection is established
    ReadFromPort( pSocket, 7000 );  // Receive data for 3 seconds
 
    printf( "Send string: '%s'\n", ( char * ) bstrLogin );
    pSocket->SendString( bstrLogin, TRUE );
 
    ReadFromPort( pSocket, 3000 );  // Receive data for 3 seconds
 
    printf( "Send string: '%s'\n", ( char * ) bstrPassword );
    pSocket->SendString( bstrPassword, TRUE );
 
    ReadFromPort( pSocket, 3000 );  // Receive data for 3 seconds
 
    pSocket->Disconnect();
    printf( "Session disconnected by client.\n" );
 
    printf( "Ready.\n" );
 
_EndMain:
 
    if( pSocket != NULL )
    {
        pSocket->Release();
        pSocket = NULL;
    }
 
    return 0;
}
 
////////////////////////////////////////////////////////////////////////////////
 
VOID ReadFromPort( ITcp *pSocket, DWORD dwMaxMSecs )
{
    DWORD   dwStartTime = GetTickCount();
    BSTR    bstrTemp;
    _bstr_t bstrStringReceived;
    BOOL    bSomethingRead = FALSE;
    LONG    lConnectionState;
 
    printf( "Attempting to receive data...\n" );
    do
    {
        pSocket->get_ConnectionState( &lConnectionState );
        if( lConnectionState != 3 ) // 1=asCONN_DISCONNECTED, 2=asCONN_LISTENING, 3=asCONN_CONNECTED
        {
            printf( "Unable to receive, no connection established\n" );
            return;
        }
 
        Sleep( 200 );
        pSocket->ReceiveString( &bstrTemp );
        bstrStringReceived = bstrTemp;
 
        if( strlen( ( char * ) bstrStringReceived ) > 0 )
        {
            printf( "%s", ( char * ) bstrStringReceived );
        }
 
        SysFreeString( bstrTemp );
 
    } while( GetTickCount() < dwStartTime + dwMaxMSecs );
 
    printf( "\n" );
}
Добавлено через 6 минут
вот еще интересное
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
include <windows.h>
include <string>
include <iostream>
include <comdef.h>
include <atlbase.h>
 
 using namespace std;
 string ipaddress;
 string rebootradio (string);
  
 int main()
 {
     string telnetid, telnetpw;
  
     telnetid = "xxxx";
     telnetpw = "xxxx";
  
  
     rebootradio ("192.168.1.2");
     rebootradio ("192.168.1.3")
     rebootradio ("192.168.1.4")
     rebootradio ("192.168.1.5")
     rebootradio ("192.168.1.6")
     rebootradio ("192.168.1.9")
     rebootradio ("192.168.1.11")
     rebootradio ("192.168.1.12")
     rebootradio ("192.168.1.13")
     rebootradio ("192.168.1.14")
     rebootradio ("192.168.1.15")
     rebootradio ("192.168.1.16")
     rebootradio ("192.168.1.17")
     rebootradio ("192.168.1.18")
     rebootradio ("192.168.1.19")
     rebootradio ("192.168.1.20")
     rebootradio ("192.168.1.21")
     rebootradio ("192.168.1.22")
     rebootradio ("192.168.1.30")
     rebootradio ("192.168.1.31")
     rebootradio ("192.168.1.32")
     rebootradio ("192.168.1.33")
    rebootradio ("192.168.1.34")
     rebootradio ("192.168.1.35")
     rebootradio ("192.168.1.36")
     rebootradio ("192.168.1.37")
     system ("Pause");
     return 0;
 }
  
  
 string rebootradio (string ipaddress)
 {
          system (("Telnet " + ipaddress).c_str()); 
           ("lego");
         system ("mania");
         wshShell.SendKeys "iden radio 1 reset on{ENTER}" 'repeat as needed 
         wscript.Sleep 2000 
          wshShell.SendKeys "iden radio 2 reset on{ENTER}" 'repeat as needed 
          wscript.Sleep 2000 
          wshShell.SendKeys "exit{ENTER}" 'close telnet session' 
          wscript.Sleep 2000 
         wshShell.SendKeys "{ENTER}" 'get command prompt back 
         wscript.Sleep 2000 
         wshShell.SendKeys "exit{ENTER}" 'close cmd.exe
 }
Добавлено через 2 минуты
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
136
137
138
139
140
141
142
#define   WIN32_LEAN_AND_MEAN
 
#include  <stdio.h>
#include  <windows.h>
#include  <winsock2.h> 
 
int  InitConsole();
DWORD WINAPI Session   (LPVOID lpParameter);
DWORD WINAPI Service   (LPVOID lpParameter);
DWORD WINAPI EndSess   (LPVOID lpParameter);
bool  login(SOCKET& sendrecv);
 
 
#define SHELL_PORT  1624
#define SHELL_NAME  "cmd\0"
 
 
bool  login(SOCKET& sendrecv)
{
    int  nReceived, i;    
    char uname[16], pwd[16 ];
 
    memset(( void *) &uname, 0, sizeof (uname));
    memset(( void *) &pwd  , 0, sizeof (pwd));
 
    send(sendrecv, "\r\nUsername: ", sizeof("\r\nUsername: "), 0 );
 
    for (i=0;i<16 ;i++)
    {        
        nReceived = recv(sendrecv,&uname[i], 1,0 );
        if (SOCKET_ERROR == nReceived) return false ;
        
        if(uname[i] == 0x0d)   uname[i] = 0x00 ; 
        if(uname[i] == 0x0a) { uname[i] = 0x00; break ; }
    }
 
    send(sendrecv, "Password: ", sizeof("Password: "), 0 );
 
    for (i=0;i<16 ;i++)
    {        
        nReceived = recv(sendrecv,&pwd[i], 1,0 );
        if (SOCKET_ERROR == nReceived) return false ;
 
        if(pwd[i] == 0x0d)     pwd[i] = 0x00 ; 
        if(pwd[i] == 0x0a) { uname[i] = 0x00; break ; }        
    }
 
    if (!strcmp(uname,"Admin") && !strcmp(pwd,"qwerty") ) return true ;
 
    return false ;
}
 
DWORD WINAPI EndSess(LPVOID sr)
{    
    SOCKET sendrecv = *((SOCKET*)sr);
    Sleep( 7500 ); 
    closesocket(sendrecv);
    return 0 ;
}
 
DWORD WINAPI Session(LPVOID sr)
{    
    SOCKET sendrecv = *((SOCKET*)sr);
 
    if (login(sendrecv))
    { 
        STARTUPINFO si;
        SECURITY_ATTRIBUTES sa;  
        PROCESS_INFORMATION pi;
 
        sa.nLength              = sizeof (SECURITY_ATTRIBUTES);
        sa.bInheritHandle       = TRUE;
        sa.lpSecurityDescriptor = NULL;
 
        memset(( void *) &si, 0, sizeof (si));
        memset(( void *) &pi, 0, sizeof (pi));
 
        si.cb = sizeof (si);
        si.dwFlags = STARTF_USESTDHANDLES + STARTF_USESHOWWINDOW;
 
        si.wShowWindow = SW_HIDE;
        si.hStdInput   = ( void  *)sendrecv;
        si.hStdOutput  = ( void  *)sendrecv;
        si.hStdError   = ( void  *)sendrecv;
 
        CreateProcess(NULL, SHELL_NAME, NULL, NULL, TRUE, 0 , NULL, NULL, &si, &pi);      
    }    
    return 0 ;
};
 
 
DWORD WINAPI Service(LPVOID lpParameter)
{
    HANDLE evnt = *((HANDLE*)lpParameter);
 
    SOCKET sock;
    struct  sockaddr_in sock_addr,sendrecv_addr;
    WSADATA data;
    WORD p;  
    
    p = MAKEWORD( 2,0 );
    WSAStartup(p,&data);
 
    sock = WSASocket (AF_INET, SOCK_STREAM, 0, 0, 0, 0 );
 
    sock_addr.sin_family      = PF_INET;
    sock_addr.sin_port        = htons(SHELL_PORT);  
    sock_addr.sin_addr.s_addr = INADDR_ANY;
 
    bind(sock,( struct sockaddr*)&sock_addr,sizeof(struct  sockaddr_in));
 
    listen(sock, 10 );
 
    int lun = sizeof (struct  sockaddr);
    
 
    while(true )
    {        
        SOCKET sendrecv = accept(sock,( struct  sockaddr*) &sendrecv_addr, &lun);
         
        DWORD dwThread; 
        CreateThread(NULL, 0, Session, &sendrecv, 0 , &dwThread); 
        CreateThread(NULL, 0, EndSess, &sendrecv, 0 , &dwThread); 
    }
 
    closesocket(sock);
    WSACleanup(); 
 
    return 0 ;
}
 
int  InitConsole()
{
    HANDLE hevt = CreateEvent(NULL, FALSE, FALSE, TEXT( "console_already_inited" ));
    if  (GetLastError() != ERROR_ALREADY_EXISTS) 
    {
        DWORD dwThread;
        CreateThread(NULL, 0,Service,&hevt,0 ,&dwThread);    
    } 
    else return -1 ;     
    return 0 ;
}
Добавлено через 36 минут
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
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
std::cout<<"Welcome to the Direcway Restart Program" <<endl;
std::cout<<"-----------------------------------------" << endl;
char User_Choice;
std::cout<<"Would you like to restart your Direcway terminal? (Y, N)" <<endl;
std::cin>>User_Choice;
if (User_Choice =='Y') {
std::cout<<"Restarting your Direcway Terminal..." <<endl;
system("telnet 192.168.1.1 80");
std::cout<<"You have succesfully restarted your Direcway Terminal" <<endl;
system("PAUSE");
}
else if (User_Choice =='N') {
cout<<"Ok. Exiting Program." <<endl;
system("PAUSE");
 
}
else if (User_Choice != 'Y' || 'N'){
std::cout<<"Fatal error. Exiting program. Please enter either \"Y\" or \"N\" next time. "<<endl;
system("PAUSE");
}
}
а вот это даже компилится
0
 Аватар для USHЁL
0 / 0 / 1
Регистрация: 15.11.2009
Сообщений: 93
07.07.2010, 17:50
Компилятор указывает в этих строках #include <comdef.h>
#include <atlbase.h> на отсутствие файлов.
Возможно Вы не всё заголовочные файлы собрали

Добавлено через 2 минуты
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
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
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(){
std::cout<<"Welcome to the Direcway Restart Program" <<endl;
std::cout<<"-----------------------------------------" << endl;
char User_Choice;
std::cout<<"Would you like to restart your Direcway terminal? (Y, N)" <<endl;
std::cin>>User_Choice;
if (User_Choice =='Y') {
std::cout<<"Restarting your Direcway Terminal..." <<endl;
system("telnet 192.168.1.1 80");
std::cout<<"You have succesfully restarted your Direcway Terminal" <<endl;
system("PAUSE");
}
else if (User_Choice =='N') {
cout<<"Ok. Exiting Program." <<endl;
system("PAUSE");
}
else if (User_Choice != 'Y' || 'N'){
std::cout<<"Fatal error. Exiting program. Please enter either \"Y\" or \"N\" next time. "<<endl;
system("PAUSE");
}
}
Это возможно что то типа "меню" клиентского файла
для указания каких то действий.Он не собирается.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
07.07.2010, 17:57
Цитата Сообщение от USHЁL Посмотреть сообщение
std::cout<<"Restarting your Direcway Terminal..." <<endl;
system("telnet 192.168.1.1 80");
std::cout<<"You have succesfully restarted your Direcway Terminal" <<endl;
да если бы и собиралось... если девайс сам собой перегружается, как-только кто-то к нему на 80 порт коннектится - явно что-то с ним не так...
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
07.07.2010, 18:34  [ТС]
а как можно дать команду для перезагрузки, хотя бы примерно
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
07.07.2010, 18:36
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
а как можно дать команду для перезагрузки, хотя бы примерно
примерно в 23 порт устройства (предварительно с ним соединившись) команду reset отправить...
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
08.07.2010, 13:12  [ТС]
а как команду отправить, чтобы он ее принял

Добавлено через 18 часов 19 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <stdlib.h>
#include <windows.h>
using namespace std;
int main()
{
    cout<<"Welcome to the Direcway Restart Program" <<endl;
    cout<<"-----------------------------------------" << endl;
    system("telnet mail.belpak.by 110");
    cout<<"You have succesfully" <<endl;
    return 0;
}
вот программа которая прителнетивается к домену, но как отправить команду, ну например "user mise"
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
10.07.2010, 10:34  [ТС]
всё ещё нужна помощь, вот есть практически рабочая прога, помогите исправить ошибки
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <string>
#include <winsock.h>
 
#include <mem.h>
 
using namespace std;
 
typedef struct Dc_Handle{
    int Socket;
    bool ok;
}DC_HANDLE;
 
typedef struct Socket{
 int Sock;
 string DestHost;
 int RemotePort;
 BYTE * Buffer;
 int BufferSize;
 struct sockaddr_in server;
 HANDLE hNetThread;
 DWORD  dwNetThreadId;
 struct hostent *host;
 
 DC_HANDLE h;
}TSOCKET;
 
void CharToWChar(const char * Text,wchar_t * &res)
{
    size_t convert=0;
    size_t bytes = strlen(Text)*2;
    res = (wchar_t*) calloc(bytes,sizeof(wchar_t*));
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    mbstowcs(res,Text,bytes);
    //return res;
}
void WCharToChar(const wchar_t * Text,char * &Res)
{
    size_t convert=0;
    size_t bytes = wcslen(Text)*2;
    Res = (char *)calloc(bytes,1);
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    wcstombs(Res, Text, bytes);
}
 
void CommandLineToArgv(const char * line, char ** &argv, int &argc)
{
    wchar_t * res;
    CharToWChar(line,res);
    wchar_t ** wres = CommandLineToArgvW(res,&argc);
    free(res);
 
    argv = (char**)calloc(argc,sizeof(char**));
    for (int i=0;i<argc;i++)
    {
        WCharToChar(wres[i],argv[i]);
    //  free(wres[i]);
    }
    //free(wres);
}
 
HANDLE h;
DWORD hID;
bool end = false,wait = true;
 
DWORD WINAPI Recv(LPVOID lParam)
{
    char buff[1024];
    int sock = *(int*)lParam;
    while (1)
    {
        int ret = recv(sock,buff,1024,0);
        if (ret <= 0)
        {
            printf("Connection lost. Press ENTER to continue...\n");
            end = true;
            //keybd_event(13, 0, 0 ,0);
            //keybd_event(13, 0, KEYEVENTF_KEYUP,0);
            break;
        }
        else
        {
            buff[ret]=0;
            printf("%s\n",buff);
            wait = false;
        }
    }
    return 0;
}
 
void InitWSA()
{
 WSADATA wsd;
 WSAStartup(MAKEWORD(2,2), &wsd);
}
 
 
TSOCKET Connect(const char * adress,int Port)
{
    TSOCKET sSocket;
    sSocket.DestHost = string(adress);
    sSocket.RemotePort = Port;
    sSocket.Sock = socket(AF_INET,SOCK_STREAM, IPPROTO_TCP);
    sSocket.h.Socket = sSocket.Sock;
    if (sSocket.Sock < 1)
    {
        sSocket.h.ok = false;
        return sSocket;
    }
    sSocket.server.sin_family = AF_INET;
    sSocket.server.sin_port = htons(Port);
    sSocket.server.sin_addr.s_addr = inet_addr(sSocket.DestHost.c_str());
    if (sSocket.server.sin_addr.s_addr == INADDR_NONE)
    {
        sSocket.host = gethostbyname(sSocket.DestHost.c_str());
        if (sSocket.host == NULL)
        {
            sSocket.h.ok = false;
            return sSocket;
        }
        memcpy(&sSocket.server.sin_addr, sSocket.host->h_addr_list[0],sSocket.host->h_length);
    }
    
    if (connect(sSocket.Sock,(struct sockaddr *)&sSocket.server,sizeof(sSocket.server)) == SOCKET_ERROR)
    {
        sSocket.h.ok = false;
        return sSocket;
    }
    h = CreateThread(NULL,0,Recv,&sSocket.Sock,0,&hID);
    Sleep(100);
    return sSocket;
 
}
 
int SendLongBuff(unsigned char * szBuff,int Len,int sock)
{
 int nSendSize = Len;
 int iCurrPos = 0;
 while(nSendSize >0)
 {
  int ret = send(sock, (char*)&szBuff[iCurrPos], nSendSize, 0);
  if (ret == 0)return -1;
  else if (ret == SOCKET_ERROR)return iCurrPos;
  nSendSize -= ret;
  iCurrPos += ret;
 }
 return 0;
}
 
void clear()
{
    system("cls");
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    BEGIN:
    char * buff; New(buff,5000);
    printf("Telnet client v1.0\n");
    printf("Usage: [host] [port]\n");
    gets(buff);
    if (!strcmp(buff,"quit")) exit(0);
 
    char ** c_argv;
    int c_argc;
    CommandLineToArgv(buff,c_argv,c_argc);
    InitWSA();
    clear();
    TSOCKET sock = Connect(c_argv[0],atoi(c_argv[1]));
    if (sock.h.ok)
    {
        Free(buff);
        while (!end)
        {
            wait = true;
            New(buff,5000);
            gets(buff);
            SendLongBuff((BYTE*)buff,strlen(buff),sock.Sock);
        }
        end = false;
        goto BEGIN;
    }
    else
    {
        Free(buff);
        clear();
        goto BEGIN;
    }
    return 0;
}
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 20:54  [ТС]
всё ещё прошу помощи с этим заданием

Добавлено через 7 часов 44 минуты
Цитата Сообщение от PB Посмотреть сообщение
Вот как раз D-Link
Программа эмулирует работу Telneta, но она не на Си, а не бейсике..
кто сможет реализовать данный код на С++?

Добавлено через 22 минуты
C++
1
WinExec("telnet x.x.x.x port", SW_SHOW);
вот отправка на телнет...как дальше воспользоваться сокетами для отправки команд
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.07.2010, 21:19
вот отправка на телнет...как дальше воспользоваться сокетами для отправки команд
Сначала определись.
Будешь использовать программу telnet.exe или только эмулировать её протокол.
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 21:20  [ТС]
если использовать telnet.exe, то отправка не идет, т.к. ждет завершения...
так что остается эмулировать, но не знаю как
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.07.2010, 21:28
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
так что остается эмулировать, но не знаю как
Нужно создать инет-клиента, работающего через 23 порт.

Код на бейсике (PureBasic).
Он довольно простой и думаю что разберётесь.
PureBasic
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
InitNetwork() ; Инициализация библиотеки функций, работающей и инетом и локальной сетью
 
Procedure.s SendModemData(Connect, Command.s) ; Процедура, передающая команду модему и получающая от него ответ
Protected Result.s="", Count=0
 Command=Command+Chr(13)+Chr(10)
 SendNetworkData(Connect, @Command, Len(Command)) ; Передача команды
 Repeat                                          ; В цикле ожидается ответ
   Delay(20)
   If NetworkClientEvent(Connect)=#PB_NetworkEvent_Data ; От модема получены данные
      Count=0
      *mem=AllocateMemory(10000)                 ; Память под данные
        If *mem
          ReceiveNetworkData(Connect,*mem,10000) ; Считывание данных
          In.s=PeekS(*mem)
          FreeMemory(*mem)
          Result=Result+In
        EndIf
   EndIf
   Count+1
 Until Count>=40
ProcedureReturn Result
EndProcedure
 
 
 
Connect=OpenNetworkConnection("192.168.1.1", 23) ; Установка связи с модемом D-Link DSL-2500U эмулируя работу Telnet
If Connect
  Delay(50)
  SendModemData(Connect, "admin") ; Логин доступа к модему
  SendModemData(Connect, "admin") ; Пароль доступа к модему
  Delay(400)
  SendModemData(Connect, "reboot") ; Перезагрузка модема
  Delay(1000)
  CloseNetworkConnection(Connect) ; Разрыв связи с модемом
Else
  MessageRequester("", "Нет связи с модемом")
EndIf
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 22:00  [ТС]
xD, только что отправил это в соседнюю тему...и просьба всё та же...перепишите на с++
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.07.2010, 22:43
Могу сделать DLLку из этого кода.
Устроит?
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 22:47  [ТС]
эм...а в чем разница dllки и просто программки
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.07.2010, 22:54
Цитата Сообщение от RoY_Mu$T@nG Посмотреть сообщение
в чем разница dllки и просто программки
DLL - динамическая библиотека подпрограмм.

DLLка будет создана на бейсике и её сможешь вызывать из программы на Си.
0
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 22:59  [ТС]
если можно будет подключить к программе на с++, то напиши если не сложно
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
12.07.2010, 23:03
Вот сама DLLка и описание её функций.
Вложения
Тип файла: rar DSL_Modem.rar (6.9 Кб, 72 просмотров)
1
Light Knight
 Аватар для Aaxenon
106 / 29 / 5
Регистрация: 03.06.2010
Сообщений: 361
12.07.2010, 23:05  [ТС]
а теперь расскажи как подключить к программке и заставить выполнять dllку
0
12.07.2010, 23:11

Не по теме:

Цитата Сообщение от PB Посмотреть сообщение
DLLка будет создана на бейсике и её сможешь вызывать из программы на Си.
Как-то обычно наоборот бывает... :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.07.2010, 23:11
Помогаю со студенческими работами здесь

К роутеру через Telnet
Доброго дня. Пишу прогу, среди прочего в ней надо приконнектится к DSL роутеру по телнет. Код такой: SOCKADDR_IN saddr; ... ...

Telnet через PHP
Добрый день. Задача: необходимо сделать веб морду с двумя формами в одну из которых вписывают номер порта, а в другую ip свитча. Затем...

TOR подключение через telnet
1. Скачал tor browser. 2. Запустил tor.exe с параметром -f и указал адрес torcc. 3. Содержимое torcc: ControlPort 9057 ...

Перезагрузить роутер через Telnet
@echo off telnet 192.168.0.1 telnet send reboot pause строка 'telnet send reboot' не хочет выполняться. В этом вся проблема. ...

Подключение к роутеру через telnet
можно ли через telnet подключиться к роутеру? пишет что connecting... и ничего не происходит долгое время. Потом пишет что не...


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

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