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

Передача информации по TCP/UDP, находясь за роутером

27.08.2012, 13:31. Показов 4557. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!

Проблема заключается в названии самой темы. Она ОЧЕНЬ распространена и это будет просто круто, если вы поможете мне ее решить !

Я сделал две программы: клиент и сервер! их код обычный, легкий,абсолютно стандартный (точно работающий)

если указывать IP 127.0.0.1 - все работает (конечно, если проги на одной машине), но я просто вчера даже пробовал:
кинул другу прогу-сервер (у него прямое подключение), а у себя оставил прогу-клиент

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

также слышал, что нужно просто,используемый порт в настроках роутера во вкладке Port Forwarding поставить на локальный IP ПК...но у меня роутер RT-G32, (в примерах есть такая вкладка), а захожу на 192.168.1.1 такой - нет


нарыл вот такую информацию:

Все решается и я уже описывал примерную схему работы онлайн через винсоки...

Там как минимум 3 варианта:

1). Перебросить порты в настройках роутера.
2). Посылать трафик через удаленный сервер (НЕ ПОЧТОВЫЙ ЯЩИК, а нормальный сервер).
3). Для сведения, по сетям соединяться можно как угодно, главное чтоб все было правильно организовано:
В сети компы должны быть в одной подсети и видеть друг друга.
По интернету у клиента должен быть нормальный доступ через маршрутизаторы выход до сервера. На сервере его ИП должен соответствовать тому куда "звонит" клиент и соответственно открыт порт на нем.
Примеры:
1) В ЛВС. ИП Клиента 192.168.0.15, сервер 192.168.0.21. Клиент "звонит" на 192.168.0.21 порт 1212. На сервере 1212 открыт серверной программой.
2) В интернет(Оба компа подключены напрямую и имеют на сетевых интерфейсах ИП типа 87.113.74.ХХ). Ситуация как и случае 1 Клиент звонит на 87.113.74.ХХ сервера на порт, порт открыт.
3) В интернет(Клиент подключен через ЛВС имеющую Роутер в инет, Клиент имеет на сетевом интерфейсе ИП типа 192.168.0.15, Сервер имеет на сетевом интерфейсе ИП типа 87.113.74.ХХ). Ситуация как и в случае 2 Клиент звонит на 87.113.74.ХХ сервера на порт, порт открыт. Маршрутизатор сам перенаправит пакет куда надо.
4) В интернет(Оба подключены через ЛВС имеющую Роутер в инет, Клиент имеет на сетевом интерфейсе ИП типа 192.168.хх.хх, Сервер имеет на сетевом интерфейсе ИП типа 192.168.хх.хх). Ситуация хоть и простая, но без сетевого Админа ты ее не решишь, Ибо Роутеры не маршрутизируют обратно. ПортМаппинг тебе в помощь.


но, что - то не помогло...не могу разобраться! ВСЕМ большое СПАСИБО!

вот код
сервера:

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
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   SERVER  >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
#include "stdafx.h"
#include  <WinSock2.h>
#include <Windows.h>
#include <atlsocket.h>
#include <atltypes.h>
#include <iostream>
#include <string.h>
#include <string>
 
 
#pragma comment(lib, "Ws2_32.lib")
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   
    //Launching winsock
    WSADATA wsaDATA;
    WSAStartup(MAKEWORD(2,2),&wsaDATA);
 
    //creation of the socket
    int s=socket(AF_INET,SOCK_STREAM,0);
 
    SOCKADDR_IN sin;
    sin.sin_family=AF_INET;
    sin.sin_port=htons(5005);
    sin.sin_addr.s_addr=INADDR_ANY;
    
    //fixing the connection
    bind(s,(LPSOCKADDR)&sin,sizeof(sin));
 
    listen(s,SOMAXCONN);
 
    SOCKADDR_IN from;
    int fromlen=sizeof(from);
    SOCKET s1 = accept(s,(struct sockaddr*)&from, &fromlen);
 
     char str[60] = "";
    recv(s1, str, sizeof(str), 0 ); 
 
    for (int i=0; i<sizeof(str); i++){
     cout<<str[i];
    };
     cout<<endl;
 
     if (str == "h"){
         cout<<"HUINYA"<<endl;
     };
    
     //////////////////////////////////
     cout<<"\n input str:"<<endl;
 
    string st;
    cin>>st;
 
    const char *st1 = st.c_str(); // string ->> const char*
 
    send( s1, st1,sizeof(st1), 0 ); 
     //////////////////////////////
 
    // EXIT
    closesocket(s);
    closesocket(s1);
    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
#include "stdafx.h"
#include <WinSock2.h>
 
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
#pragma comment(lib,"shell32.lib")
#include <Shellapi.h>
#include <Windows.h>
#pragma comment(lib,"Ws2_32.lib")
 
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< CLIENT >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
int _tmain(int argc, _TCHAR* argv[])
{
     int result;
    WSADATA wsaDATA;
 
 
    WSAStartup(MAKEWORD(2,2),&wsaDATA);
 
    int s = socket(AF_INET,SOCK_STREAM,0);
 
    SOCKADDR_IN sin;
    sin.sin_family=AF_INET;
    sin.sin_port=htons(5005);
    sin.sin_addr.S_un.S_addr=inet_addr("178.177.102.39");
 
    connect(s,(struct sockaddr*)&sin,sizeof(struct sockaddr));
 
    cout<<"\n input str:"<<endl;
 
    string st;
    cin>>st;
 
    const char *str = st.c_str(); // string ->> const char*
    
 
    send( s, str,sizeof(str), 0 ); 
 
    
    do{
    
    char strrec[60] = "";
 
      result = recv(s,strrec, sizeof(strrec), 0 ) ; 
     cout<<strrec;
 
     if (strrec == "t") {
        ShellExecute(0,L"open",0,0,L"Shell:::{7007ACC7-3202-11D1-AAD2-00805FC1270E}",SW_SHOW);
     };
 
    } while (result > 0 );
     
    
 
 
    closesocket(s);
    WSACleanup();
 
    return 0;
}
з.ы. Еще раз спасибо за будущие ответы!

з.ы.з.ы. извините, за объем текста!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.08.2012, 13:31
Ответы с готовыми решениями:

Передача файлов по протоколам TCP и UDP
Добрый вечер!Подскажите где почитать и как примерно делать такое: Клиент запрашивает имя файла у сервера,сервер посылает файл или...

Утилита для получения статической информации по протоколам UDP, TCP, ICMP, IP.
Т. е. надо вывести статическую инфу аналогочную, получаемую при вызове netstat -s в cmd... Может кто реализовывал что-то подобное, или...

Передача больших объемов информации по TCP
Надо передавать больше данных, чем может весть отдельный пакет. Когда данных мало, то всё понятно, можно отправить объект целиком и указать...

11
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
28.08.2012, 13:10
попробуйте без роутера сесть для начала
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
28.08.2012, 16:07  [ТС]
vxg, такая возможность будет позже...

но это проблема ведь решаема
0
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
29.08.2012, 09:38
конечно решаема. но может проблема не в этом. поэтому лучше исключать ложные пути решения проблемы последовательно начиная с того места где все еще работает.
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
29.08.2012, 11:18  [ТС]
vxg, но я точно проверял да даже эту прогу с одногруппниками:
по локалке работает

без роутера тоже работает, я попросил проверить друзей

значит проблема именно в роутере
раз она решаема, не могли бы подсказать?
0
Модератор
 Аватар для vxg
3406 / 2177 / 354
Регистрация: 13.01.2012
Сообщений: 8,444
29.08.2012, 13:16
пробросить порт. но у вас это не выходит по причине отсутствия вкладки которая должна (должна?) там быть. для начала выяснить почему ее нет. поднять доки, может есть новая прошивка, может модель изначально не может этого делать.
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
29.08.2012, 15:48  [ТС]
vxg, а не могли бы подсказать, как это сделать именно на моем роутере?

я нашел тут http://zyxel.ru/kb/2189

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

вот скриншот
Миниатюры
Передача информации по TCP/UDP, находясь за роутером  
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
30.08.2012, 21:24
На роутерах ASUS нет вкладки Port Forwarding, у них это называется Virtual Server или по-русски Виртуальный Сервер. Принцип один и тот же.

Добавлено через 2 минуты
Weratius, допиши то же самое но уже с IP-адресом локального ПК в Виртуальном Сервере.
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
31.08.2012, 12:09  [ТС]
lazybiz, а не подскажете, роутер будет пропускать только входящие или исходящие пакеты?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
31.08.2012, 13:43
Weratius, он будет пропускать пакеты в обе стороны.
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
31.08.2012, 18:51  [ТС]
lazybiz, а айпи указывать, который стоит напротив ipvn4, в консоли, в запросе ipconfig?
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
31.08.2012, 21:05
Weratius, надо указать IP своего локального ПК. Думаю у тебя он выглядит примерно так: 192.168.0.xxx или 192.168.1.xxx
Да, ты его можешь увидеть через ipconfig.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2012, 21:05
Помогаю со студенческими работами здесь

TCP/IP пакеты. Как можно изменить служебные параметры заголовка TCP или UDP?
Всем привет! Работаю с передачей данных через интернет. Как можно изменить служебные параметры заголовка TCP или UDP (флаги, контрольная...

Передача с микрофона в udp и прием из udp на динамик
Собственно каким образом осуществить передачу данных с микрофона в сеть и прием из сети данных вывести на звуковое устройство. проект...

UDP/TCP
порекомендуйте книгу по UDP/TCP в которой можно розобратса как работать с этими класами

TCP и UDP
Вот при отправке данных по TCP - данные передаются как поток байт. И не известен размер порции которую отправляет функция send() за один...

UDP и TCP
Здравствуйте! Хотел спросить: если допустим взять UDP и TCP протоколы, и при этом обезопасить UDP (решить проблему с...


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

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