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

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

27.08.2012, 13:31. Показов 4588. Ответов 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
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
28.08.2012, 13:10
попробуйте без роутера сесть для начала
1
0 / 0 / 0
Регистрация: 04.12.2011
Сообщений: 28
28.08.2012, 16:07  [ТС]
vxg, такая возможность будет позже...

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

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

значит проблема именно в роутере
раз она решаема, не могли бы подсказать?
0
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
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
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru