Среда, 24.04.2024, 03:39 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: xXxSh@dowxXx  
delphicode » Обсуждения » Интернет и сети » передача файлов по TCP/UDP (частая проблема)
передача файлов по TCP/UDP
QubertДата: Воскресенье, 26.08.2012, 17:16 | Сообщение # 1
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Всем привет!

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

как сделать так, чтобы можно было нормально передавать файлы, сидя за роутером?
потому что ведь проще сделать: оставить прогу-сервер у себя на компе, а прогу-клиент отослать кому-либо...тогда останется открыть порты только у себя

только в этом и заключается проблема! знаю, что также нужно, что-то делать во влкдаке роутера Port Forwarding, но у меня роутер ASUS RT-G32 и там ее почему-то нет !

знаю-знаю, этот вопрос поднимался НЕОДНОКРАТНО, даже уже и задавался мной, но никто так нормально и конкретно не ответил, к саоалению....и данная проблема у меня все еще не решена, хотя прошло прилично времени!

Буду очень благодарен за решение !
 
DelДата: Воскресенье, 26.08.2012, 17:31 | Сообщение # 2
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Нужно, чтобы файлы через какой-то сервер шли. Т.е. с твоего компа они идут на сайт/сервер а от туда на комп получателя. Я такую проблему решил с помощью почты.
 
QubertДата: Воскресенье, 26.08.2012, 17:48 | Сообщение # 3
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Del, с почтой - то понятно, это я тоже делал!

ну, а что, если нужно мониторить какою-нибудь камеру или удаленно управлять своим ПК, для работы?
через почту ведь не сделаешь!
 
DelДата: Воскресенье, 26.08.2012, 19:18 | Сообщение # 4
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (Qubert)
через почту ведь не сделаешь!

Я же сделал.
 
DelДата: Воскресенье, 26.08.2012, 19:24 | Сообщение # 5
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (Qubert)
удаленно управлять своим ПК,

В смысле? Несколько функций? Или полный контроль.
 
QubertДата: Воскресенье, 26.08.2012, 20:10 | Сообщение # 6
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Del, а как Вы смогли просматритьвать видео с камеры, используя только почту?
взять, к примеру, библиотеку OpenCV
с ее помощью можно передать поток видео через интернет, только опять же таки там все на винсоке

не могли бы сказать, как Вы справились с данной проблемой, через почту?

очень интересно, как так можно
 
QubertДата: Воскресенье, 26.08.2012, 20:12 | Сообщение # 7
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Del, ну с функциями я представялю, как можно делать

можно ведь просто послыать на имейл какую-либо строку, программа-клиент будет читать эту строку из последних сообщений, пришедших на имейл и делать что-либо
 
dolphinДата: Понедельник, 27.08.2012, 00:01 | Сообщение # 8
Администратор
Сообщений: 906
Статус: Offline
Qubert, прокинь на роутере порты, загляни на официальный сайт, по форумам глянь. Я уже давно решил эту проблему правда роутер другой
 
DelДата: Понедельник, 27.08.2012, 09:02 | Сообщение # 9
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (Qubert)
Del, а как Вы смогли просматритьвать видео с камеры, используя только почту?

Если тебе надо онлайн то ни как.
 
xXxSh@dowxXxДата: Понедельник, 27.08.2012, 09:53 | Сообщение # 10
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Quote (Del)
Если тебе надо онлайн то ни как.

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

Там как минимум 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.хх.хх). Ситуация хоть и простая, но без сетевого Админа ты ее не решишь, Ибо Роутеры не маршрутизируют обратно. ПортМаппинг тебе в помощь.

PS: Обсуждалось вот тут...


Сообщение отредактировал xXxSh@dowxXx - Понедельник, 27.08.2012, 09:58
 
QubertДата: Понедельник, 27.08.2012, 10:40 | Сообщение # 11
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
xXxSh@dowxXx, заметьте там тема, как раз создана мной...и я дажу тут написал, что уже есть подобная тема

но ответ - то так и не дали !

вот конкретно пункты 3 и 4? вы не могли бы объяснить ?

dolphin, я же написал у меня нет Port Forwarding почему-то, хотя в примераху к моему роутеру есть (Роуетр - ASUS RT-G32 )
я уже с зимы пытаюсь решить проблему, неоднократно писал на разные форумы, читал, даже про сети немного читал, ничего не помогает, если бы у меня была возможность решить самому - давно бы решил!

не могли бы помочь?

я просто вчера даже пробовал:
кинул другу прогу-сервер (у него прямое подключение), а у себя оставил прогу-клиент

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

dolphin, ну, если Вы решили, то не могли бы помочь, объяснить...просто я не понимаю, что можно еще сделать?

Большое спасибо!

з.ы. xXxSh@dowxXx, в той же теме Вы так и дали ответ...но у меня не получается

з.ы. спасибо!
 
DelДата: Понедельник, 27.08.2012, 10:43 | Сообщение # 12
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (Qubert)
у меня нет Port Forwarding почему-то, хотя в примераху к моему роутеру есть (Роуетр - ASUS RT-G32 )

А без роутера вообще ни как?
 
QubertДата: Понедельник, 27.08.2012, 10:48 | Сообщение # 13
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Del, никак...ведь сейчас почти на всех ПК стоят роутеры
да и, я изначально думал, что если ПК, где стоит прога-сервер, не подключен к роутеру, а другой ПК, где прога-клиент , подключен, то все должно работать...ан-нет...вчера я на практике проверил, что это не так
 
xXxSh@dowxXxДата: Понедельник, 27.08.2012, 12:05 | Сообщение # 14
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Quote (Qubert)
вот конкретно пункты 3 и 4? вы не могли бы объяснить ?

Представь на минутку по какому принципу работают клиентские приложения типа ICQ, Skype, МайлАгент и тп., вот и тут на подобии той же истории, дело в том (если мне не изменяет память и я сейчас не ошибаюсь) что Роутер не может принимать команды из вне через сокет, он может их только передавать...
то есть тебе нужно настроить твое клиентское приложение таким образом что бы после того как ты дал сервер другу (у которого прямой доступ в нет, без NAT(не через роутер)) именно твой клиент отправлял бы ему команды, а он бы напрямую их принимал, тогда будет работать, сам тестировал с другом у нас у обоих роутеры, но у меня еще к тому же есть старый модем который открывает прямое подключение без NAT.

Quote (Qubert)
я просто вчера даже пробовал:
кинул другу прогу-сервер (у него прямое подключение), а у себя оставил прогу-клиент

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


Если ты говоришь что у него выделенка стоит, то по всей видимости на 89% можно утверждать что его подключение все равно идет через NAT, даже если у него дома просто сетевой шнур в сетевую карту воткнут, откуда ты знаешь что у него где либо в доме (на том же чердаке например, или на крыше), как они обычно делают, не стоит общий по данному дому Роутер или еще какое оборудование, ведь не у него одного этот интернет в подъезде разве не так?, так что думай, для теста купи себе какой нить дешевенький модем руб за 300 а то и дешевле,или найди у знакомых каких нибудь, что бы работал без NAT напрямую, хотя сейчас такие модемы не в моде, и их наверное будет не просто найти...

PS: На самом деле эту проблему обсуждать можно сколько угодно, тем более как я вижу ей все больше народу стало интересоваться, давайте так поступим, можно выложить какой нить простенький код клиент - серверного приложения на сокетах и потестить, а реализацию нормального рабочего кода через NAT уже как нибудь вместе разберем...?


Сообщение отредактировал xXxSh@dowxXx - Понедельник, 27.08.2012, 12:16
 
QubertДата: Понедельник, 27.08.2012, 12:12 | Сообщение # 15
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
xXxSh@dowxXx, я точно не знаю под NAT`ом он или нет, он как будет в сети, я у него спрошу

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

а, можно уточнить, вот Вы писали, что
Quote
Посылать трафик через удаленный сервер (НЕ ПОЧТОВЫЙ ЯЩИК, а нормальный сервер)

как это можно сделать? наверняка есть какие-то сервисы?
или можно просто хостинг взять и делать, что хочешь?
у меня просто есть сайт...можно через него сделать (не ucoz xD )
 
xXxSh@dowxXxДата: Понедельник, 27.08.2012, 12:15 | Сообщение # 16
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Quote (Qubert)
как это можно сделать? наверняка есть какие-то сервисы?
или можно просто хостинг взять и делать, что хочешь?
у меня просто есть сайт...можно через него сделать (не ucoz xD )

На счет Ucoz ничего сказать не могу, а сервисы конечно всякие есть, по моему где то, в какой то теме уже давали ссылки на подобные сервисы, честно говоря уже и не помню где это было... wacko
 
QubertДата: Понедельник, 27.08.2012, 12:28 | Сообщение # 17
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
xXxSh@dowxXx, я и сказал, что не юкоз этот нубский...а нормальный полноценный сайт, который писался мной с нуля

просто можно как-то через него перегнать? сам принцип каков? или там ссылки скинуть не могли бы?
было бу круто!
 
DelДата: Понедельник, 27.08.2012, 13:13 | Сообщение # 18
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (xXxSh@dowxXx)
давайте так поступим, можно выложить какой нить простенький код клиент - серверного приложения на сокетах и потестить,

Классический internat32 ?
 
QubertДата: Понедельник, 27.08.2012, 13:24 | Сообщение # 19
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
xXxSh@dowxXx, Del,

вот сервер :
Code

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, ScktComp, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent,
   IdTCPConnection, IdTCPClient, IdHTTP;

type
   TForm1 = class(TForm)
     Button1: TButton;
     Button2: TButton;
     Bevel1: TBevel;
     Label1: TLabel;
     Server: TServerSocket;
     Memo1: TMemo;
     ListBox1: TListBox;
     Label2: TLabel;
     Label3: TLabel;
     Button3: TButton;
     Bevel2: TBevel;
     Edit1: TEdit;
     Button4: TButton;
     Timer1: TTimer;
     Label4: TLabel;
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
     procedure ServerClientConnect(Sender: TObject;
       Socket: TCustomWinSocket);
     procedure ServerClientDisconnect(Sender: TObject;
       Socket: TCustomWinSocket);
     procedure ServerClientRead(Sender: TObject; Socket: TCustomWinSocket);
     procedure Button4Click(Sender: TObject);
     //procedure Timer1Timer(Sender: TObject);
     procedure Button3Click(Sender: TObject);
     //procedure ServerAccept(Sender: TObject; Socket: TCustomWinSocket);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   Form1: TForm1;
   i:Integer;
   idhttp1:Tidhttp;
   guard:String;

implementation

{$R *.dfm}
{
function getip: string;
var
len, ip: string;
num:integer;
begin
try
idhttp1:= Tidhttp.Create(nil);
ip:= idhttp1.get('http://www.myip.ru/get_ip.php');
len:=ip;
num:=pos('<TD bgcolor=white align=center valign=middle>',len)+45;
delete(len,1,num);
len:=copy(ip, num, pos('<',len));
ip:= len;
Result:=ip;
idhttp1.Free;
except exit;
end;
end;
  }
procedure TForm1.Button1Click(Sender: TObject);
begin
Server.Port:=20000;
Server.Open;
Button2.Enabled:=true;
Button1.Enabled:=false;
If Server.Active=true then begin
Label1.Caption:='Run:'+IntToStr(Server.Port);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Server.Close;
Label1.Caption:='';
Button1.enabled:=true;
Button2.enabled:=false;
end;

procedure TForm1.ServerClientConnect(Sender: TObject;
   Socket: TCustomWinSocket);
begin
i:=i+1;
For i:=0 to Server.Socket.ActiveConnections-1 do
Server.Socket.connections[i].sendtext('#ip');
end;

procedure TForm1.ServerClientDisconnect(Sender: TObject;
   Socket: TCustomWinSocket);
begin
i:=i+1;
end;

procedure TForm1.ServerClientRead(Sender: TObject;
   Socket: TCustomWinSocket);
   var
   mes:string;
begin
mes:=Socket.ReceiveText;
if copy(mes,1,5)='#ip0 ' then begin
Delete(mes,1,5);
Listbox1.Items.add(mes);
Mes:='';
end;
Memo1.Lines.Insert(0,mes);
For i:=0 to Server.Socket.ActiveConnections-1 do
Server.Socket.Connections[i].SendText(mes);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Listbox1.Clear;
For i:=0 to Server.Socket.ActiveConnections-1 do
Server.Socket.Connections[i].SendText('#ip');
end;
{
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Guard:=getip;
if Label4.caption<>guard then
Label4.Caption:=guard;
end;
  }
procedure TForm1.Button3Click(Sender: TObject);
begin
For i:=0 to Server.Socket.ActiveConnections-1 do
Server.Socket.Connections[i].SendText(edit1.text);
end;

end.


вот клиент:

Code

unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
   IdTCPClient, IdHTTP, ScktComp, jpeg, ExtCtrls;

type
   TForm1 = class(TForm)
     Button1: TButton;
     GroupBox1: TGroupBox;
     Label1: TLabel;
     Edit1: TEdit;
     Label2: TLabel;
     Edit2: TEdit;
     GroupBox2: TGroupBox;
     Memo1: TMemo;
     Button2: TButton;
     Edit4: TEdit;
     IdHTTP1: TIdHTTP;
     Image1: TImage;
     Client: TClientSocket;
     procedure Button1Click(Sender: TObject);
     procedure ClientError(Sender: TObject; Socket: TCustomWinSocket;
       ErrorEvent: TErrorEvent; var ErrorCode: Integer);
     procedure Button2Click(Sender: TObject);
    // procedure ClientRead(Sender: TObject; Socket: TCustomWinSocket);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   Form1: TForm1;
   idhttp1:Tidhttp;

implementation

{$R *.dfm}
{
function getip: string;
var
len, ip: string;
num:integer;
begin
try
idhttp1:= Tidhttp.Create(nil);
ip:= idhttp1.get('http://www.myip.ru/get_ip.php');
len:=ip;
num:=pos('<TD bgcolor=white align=center valign=middle>',len)+45;
delete(len,1,num);
len:=copy(ip, num, pos('<',len));
ip:= len;
Result:=ip;
idhttp1.Free;
except exit;
end;
end;
  }

procedure TForm1.Button1Click(Sender: TObject);   //подключиться
begin
If Edit1.text='' then
Showmessage('Значение "Порт" не указано.');
If Edit2.text='' then
showmessage('Значение "Адрес" не указано.');
if Client.active=false then begin
Client.Port:=20000;
Client.Open;
Button1.Caption:='Подключиться';
end
else
begin
Client.Close;
Button1.Caption:='Отключиться';
end;
end;

procedure TForm1.ClientError(Sender: TObject; Socket: TCustomWinSocket;
   ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
if ErrorCode=10061 then begin
Showmessage('Невозможно подключиться. Хост не найден или настройки подключения не верны. Код: '+IntToStr(ErrorCode));
ErrorCode:=0;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Client.Socket.SendText(Edit4.text);
Edit4.text:='';
end;
{
procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
mes:string;
begin
mes:=Socket.ReceiveText;
if copy(mes,1,4)='#ip' then begin
SOcket.SendText('#ip0 '+getip);
Delete(mes,1,4);
end;
Memo1.lines.add(mes);
end;}

end.


все на делфи(изначально выложил на сишке ++)....проще некуда

это я и тестил


Сообщение отредактировал Qubert - Понедельник, 27.08.2012, 13:46
 
DelДата: Понедельник, 27.08.2012, 13:40 | Сообщение # 20
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Я на Сишных языках не шарю. Я дельфи люблю.
 
QubertДата: Понедельник, 27.08.2012, 13:46 | Сообщение # 21
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
Del, а так?
 
DelДата: Понедельник, 27.08.2012, 13:52 | Сообщение # 22
Участник
Зарегистрирован: 20.08.2012
Группа: Пользователи
Сообщений: 69
Статус: Offline
Quote (Qubert)
Del, а так?

Что "а так?" ?
Извини, понял.


Сообщение отредактировал Del - Понедельник, 27.08.2012, 13:53
 
QubertДата: Вторник, 28.08.2012, 17:21 | Сообщение # 23
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
тот код на делфи (спецом для Del)

а этот код на С++...я как раз на нем и делал

сервер:
Code


//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<   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;
}   



клиент:

Code


#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;
}



Оба кода рабочие - точно!

все эти два кода и на С++ и на Делфи я делал по локалке с одногруппниками, как чат, и по вай-фай, НО вот через роутер не работает


Сообщение отредактировал Qubert - Вторник, 28.08.2012, 17:22
 
QubertДата: Вторник, 28.08.2012, 17:52 | Сообщение # 24
Частый гость
Зарегистрирован: 21.01.2012
Группа: Пользователи
Сообщений: 43
Статус: Offline
вот, что в настройках роутера:

нет Port Forwarding
Прикрепления: 1315941.png (77.5 Kb)


Сообщение отредактировал Qubert - Вторник, 28.08.2012, 17:52
 
xXxSh@dowxXxДата: Среда, 29.08.2012, 10:45 | Сообщение # 25
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
Quote (Qubert)
вот, что в настройках роутера:

нет Port Forwarding


А разве Port Trigger не то же самое делает?

Цитата:

"Маршрутизатор по умолчанию блокирует все входящие запросы об установке соединения. Механизм работы функции Port Triggering заключается в том, чтобы при появлении определенного события динамически открывать порты на своем внешнем интерфейсе и привязывать их к соответствующим портам компьютера в локальной сети. Таким событием является отправка компьютером из локальной сети пакета на заданный порт (Trigger Port) куда-нибудь во внешнюю сеть."

пример


Сообщение отредактировал xXxSh@dowxXx - Среда, 29.08.2012, 10:50
 
delphicode » Обсуждения » Интернет и сети » передача файлов по TCP/UDP (частая проблема)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz