Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Cortas
2 / 2 / 1
Регистрация: 14.03.2016
Сообщений: 26
Завершенные тесты: 2
#1

Программа - роутер, раздающая wi-fi с ноута - C++

26.07.2016, 22:36. Просмотров 247. Ответов 1

ПРЕДИСЛОВИЕ

Здравствуйте! Есть задача написать простенькую программа которая раздает wi-fi с ноута с помощью команды nesth или чего-нибудь другого, если оно вообще есть. Я уже писал такую программку, но только на pascal.
Для тех кому интересно

Довольно примитивная, со скудным функционалом, однако функцию свою выполняет.
Pascal
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
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
uses crt,sysutils,dos,mouse;
const nf='WiFiCFG.bat';
 
var x1,y1,x2,y2,i:integer;
    sim:string[13];
    bt:text;
    buf,NNS,data,start,stop,s:string;
    f:longint;
    e:TMouseEvent;
    wlan,show:boolean;
 
procedure start_wlan;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,start);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
 
procedure stop_wlan;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,stop);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
procedure rec(x1,y1,x2,y2:integer; style:char);
  var j:integer;
  begin
  if style='b' then j:=7
  else j:=1;
  GotoXY(x1,y1); write(sim[j+2]);
  GotoXY(x2,y1); write(sim[j+3]);
  GotoXY(x1,y2); write(sim[j+4]);
  GotoXY(x2,y2); write(sim[j+5]);
  for i:=x1+1 to x2-1 do begin GotoXY(i,y1); write(sim[j+1]); GotoXY(i,y2); write(sim[j+1]); end;
  for i:=y1+1 to y2-1 do begin GotoXY(x1,i); write(sim[j]); GotoXY(x2,i); write(sim[j]); end;
  end;
 
function InBoxClick(x1,y1,x2,y2:integer; click:char):boolean;
  var button:word;
  begin
  Case click of
  'l': button:=MouseLeftButton;
  'r': button:=MouseRightButton;
  'm': button:=MouseMiddleButton;
  end;
  if(e.buttons=button) and (e.action=MouseActionDown) and (e.x+1>=x1) and (e.x+1<=x2) and (e.y+1>=y1) and (e.y+1<=y2) then
    InBoxClick:=true
  else
    InBoxClick:=false;
  end;
 
function PointClick(x,y:integer; click:char):boolean;
  var button:word;
  begin
  Case click of
  'l': button:=MouseLeftButton;
  'r': button:=MouseRightButton;
  'm': button:=MouseMiddleButton;
  end;
  if(e.buttons=button) and (e.action=MouseActionDown) and (e.x+1=x) and (e.y+1=y) then
    PointClick:=true
  else
    PointClick:=false;
  end;
 
procedure AcceptChanges;
  begin
  for i:=18 to 28 do begin GotoXY(1,i); clreol; end; GotoXY(1,18);
  getdir(0,s); delete(s,4,length(s));
  chdir(s); f:=filecreate(nf); fileclose(f);
  assign(bt,nf);
  rewrite(bt);
  writeln(bt,data);
  close(bt);
  exec(s+'\'+nf,'');
  DeleteFile(nf);
  end;
 
procedure ChangeName;
  var outs:boolean;
  begin
  donemouse;
  GotoXY(2,2); textcolor(12); write('  Enter new name  ');
  outs:=false;
  textcolor(8);
  GotoXY(3,5); write('                ');
  repeat
    GotoXY(3,5); readln(NNS);
    for i:=1 to length(NNS) do
      if NNS[i]=' ' then begin
        GotoXY(3,5); write('WRONG NAME!'); delay(1000);
        GotoXY(3,5); write('                ');
        outs:=false; break;
      end else
        outs:=true;
  until outs;
  i:=0;
  repeat i:=i+1; until (data[i]=' ') and (data[i+1]='k');
  buf:=copy(data,i,length(data)); insert(buf,NNS,length(NNS)+1); i:=0;
  repeat i:=i+1; until (data[i]='d') and (data[i+1]='='); i:=i+2;
  delete(data,i,length(data)); insert(NNS,data,i);
  AcceptChanges;
  GotoXY(2,2); textcolor(12); write('   Name changed   '); textcolor(2);
  delay(1000); GotoXY(2,2); write('                  ');
  initmouse;
  end;
 
procedure SHPassword;
  var j:integer;
  begin
    textcolor(8); GotoXY(3,9);
    j:=0;
    repeat j:=j+1; until (data[j]='y') and (data[j+1]='='); j:=j+2;
    if show then begin
      write(data[j..length(data)]);
      GotoXY(19,9);
      write('ш');
      show:=false;
    end else begin
      for j:=j to length(data) do write(sim[13]);
      GotoXY(19,9);
      write('~');
      show:=true;
    end;
    textcolor(2);
  end;
 
procedure ChangePassword;
  var i:integer;
      outs:boolean;
  begin
  i:=0;
  outs:=false;
  donemouse;
  GotoXY(2,2); textcolor(12); write('Enter new password');
  if show then begin
    GotoXY(3,9); SHPassword; end;
  GotoXY(3,9); write('                ');
  textcolor(8);
  repeat
  GotoXY(3,9); readln(NNS);
  if length(NNS)<8 then begin
    GotoXY(3,9); write('7> SIMVOLS!     '); delay(1000);
    GotoXY(3,9); write('                ');
    end;
    for i:=1 to length(NNS) do
      if NNS[i]=' ' then begin
        GotoXY(3,9); write('WRONG PASSWORD!'); delay(1000);
        GotoXY(3,9); write('                ');
        outs:=false; break;
      end else
        outs:=true;
  until (length(NNS)>8) and outs;
  repeat i:=i+1; until (data[i]='y') and (data[i+1]='='); i:=i+2;
  delete(data,i,length(data)); insert(NNS,data,i);
  AcceptChanges;
  GotoXY(2,2); textcolor(12); write('Password chenged  '); textcolor(2);
  delay(1000); GotoXY(2,2); write('                  ');
  initmouse;
  end;
 
procedure SwitchWlan;
  begin
  GotoXY(8,13);
  if wlan then begin
    textcolor(8); write('Start'); textcolor(2);
    GotoXY(3,1); write('OFF'); stop_wlan; wlan:=false; end
  else begin
    textcolor(8); write('Stop '); textcolor(2);
    GotoXY(3,1); write('ON',sim[8]); start_wlan; wlan:=true; end;
  end;
 
begin
clrscr;
cursoroff;
initmouse; showmouse;
textcolor(2);
data:='start netsh wlan set hostednetwork mode=allow ssid=Asus_EeePC key=barguzin2017';
start:='netsh wlan start hostednetwork'; stop:='netsh wlan stop hostednetwork';
sim:='іДЪїАЩєНЙ»Ијщ';
show:=false;
x1:=1; x2:=20;
y1:=1; y2:=16;
rec(x1,y1,x2,y2,'b'); GotoXY(17,1); write('[ю]'); x1:=x1+1; x2:=x2-1;
rec(x1,4,x2,6,'n'); textcolor(8); GotoXY(3,5); write(data[52..62]); textcolor(2);
GotoXY((x2 div 2)-length('name')+1,4); write('Name');
rec(x1,8,x2,10,'n'); SHPassword; GotoXY(5,8); write('Password');
rec(x1,12,x2,14,'n'); textcolor(8); GotoXY(8,13); write('Start'); textcolor(2);
repeat
donemouse; initmouse; showmouse;
GetMouseEvent(e);
if InBoxClick(x1,4,x2,6,'l') then
  ChangeName
else if PointClick(19,9,'l') then
  SHPassword
else if InBoxClick(x1,8,x2,10,'l') then
  ChangePassword
else if InBoxClick(x1,12,x2,14,'l') then
  SwitchWlan
else if PointClick(18,y1,'l') then begin
    GotoXY(18,1); write('');
    repeat GetMouseEvent(e);  until e.action=MouseActionUp;
    GotoXY(18,1); write('ю');
    if (e.x=17) and (e.y=0) then break;
  end;
until PointClick(18,y1,'l');  end.

Пробовал написать такую же только с большим функционалом уже на с++. Но столкнулся с некоторыми проблемами при написании в консоли. Например при запуске сети программа запускает сеть и все, потом она просто зависает. Решил, что в консоли делать её бессмысленно, поэтому решил иcпользовать WinApi.

ВОПРОС
1. Как можно реализовать запуск/остановку сети? (в cmd nesth wlan start/stop hostednetwork)
2. Как вывести/записать в переменную количество подключенных пользователей? (в cmd netsh wlan show hostednetwork)
3. Как менять ssid и key?
4. Возможно ли это вообще реализовать на С++?

ПОСЛЕСЛОВИЕ
У меня есть некоторые идею насчет этого. Например запускать консоль, которая будет менять параметры сети или запускать её, в маленько окошке за приделом экрана при нажатии кнопки. Но вот как можно записать количество пользователей...


P.S. Я не в коем случае не прошу писать за меня данную программу, а лишь помочь разобраться в данных вопросах.
P.P.S. Заранее всем спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2016, 22:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа - роутер, раздающая wi-fi с ноута (C++):

2 ноута, роутер, стрим... - Wi-Fi
Есть: adsl - модем он же и роутер, Netgear (wireless adsl router). Подключение к стриму и два ноутбука. Я хочу: беспроводное...

Купил роутер TL-WR841ND, не могу одновременно выходить в интернет с ноута и компьютера - Сетевое оборудование
Помогите, пожалуйста!!! В этом деле я полный чайник! На компьютере стоит система Windows XP, на ноуте - Windows 7 (создавать домашнюю...

Организовать сеть Хаб - роутер - роутер - роутер - роутер. Все роутеры имели свои IP адреса и локальную сеть - Wi-Fi
Здравствуйте, помогите кто сможет. Хотел организовать сеть вот таким образом. Рисунок (Сеть.jpg). Интернет я получаю по динамическому IP....

У DVD от ноута SATA разъем меньше, чем у жесткого от ноута - DVD, Blu-ray
У DVD от ноута SATA разъем меньше, чем у жесткого от ноута, почему так? просто переходник который для жесткого на usb не подходит к...

есть два ноута. у обоих есть ви-фи. у первого ноута имеется интернет yota. все настроил работает и локалка и инет.НО - Wi-Fi
Здравствуйте. проффесилналы!! нужна ваша помощь. есть два ноута. у обоих есть ви-фи. у первого ноута имеется интернет yota. все настроил...

есть роутер(проводной) TL-R460, нужно подключить к нему WIFI роутер - Wi-Fi
Ребят есть роутер(проводной) TL-R460. Раздаёт инет на 2 компа. Нужно подключить к нему WIFI роутер... D-link DIR 615 (чтобы одновременно...

1
nonedark2008
964 / 704 / 157
Регистрация: 28.07.2012
Сообщений: 1,932
26.07.2016, 23:25 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Cortas, думаю, что правильнее было бы это сделать через вызов функций отсюда (которые с префиксом WlanHosted).
Цитата Сообщение от Cortas Посмотреть сообщение
в cmd
Все команды "из cmd" можно запускать через system("cmd nesth wlan start").
Цитата Сообщение от Cortas Посмотреть сообщение
Как вывести/записать в переменную количество подключенных пользователей?
Это можно сделать либо через вызов нужной функции из первой ссылки, либо запуском твоей команды через CreateProccess с перенаправлением стандартного вывода. (Что бы считать в переменную ту фигню, которую нам выдала команда).
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 23:25
Привет! Вот еще темы с ответами:

Роутер-мост-фильтр + роутер-модем: Добавить определенные сайты в исключения - Сетевое оборудование
Здравствуйте. Если написал не в тот раздел, то прошу простить и направить, куда надо. Ситуация такая: Роутер: routerboard 750 Модем:...

Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU - Wi-Fi
Помогите настроить wifi через Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU .Инет подключен к adsl роутеру через телефон каб.+ ip...

Необходимо настроить цепочку: десктоп - роутер - роутер - adsl - интернет - Wi-Fi
Всем привет! Как настроить такую связку: десктоп подключен к роутеру dir 300 c1 (прошитый как надо), далее этот роутер в режиме клиента...

Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU - Wi-Fi
Помогите настроить wifi через Роутер ADSL-2540U D-LINK + WIFI Роутер ASUS WL-520GU .Инет подключен к adsl роутеру через телефон каб.+ ip...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.