Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2011, 20:52   #1
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию отправка файла через TcpServer/TcpClient

сервер
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Sockets, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    TcpServer1: TTcpServer;

    procedure TcpServer1Accept(Sender: TObject;
      ClientSocket: TCustomIpClient);
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation

{$R *.dfm}
 
 
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
var
  stream: TMemoryStream;
  msg: string;
  sz: integer;
begin
  if ClientSocket.Connect then
  begin
    msg := ClientSocket.Receiveln;
      stream := TMemoryStream.Create;
      sz := StrToInt(msg);
      stream.SetSize(sz);
      ClientSocket.Sendln('ok');

      ClientSocket.ReceiveBuf(stream.Memory^, sz);
      stream.SaveToFile('otchet.txt');
      stream.Free;
    end;

    ClientSocket.Disconnect;
  end;
procedure TForm1.Button1Click(Sender: TObject);
begin
TcpServer1.LocalHost:=edit1.Text;
TcpServer1.Open;
end;

end.
клиент
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Sockets;
 
type
  TForm1 = class(TForm)



    Button1: TButton;
    Edit1: TEdit;
    TcpClient1: TTcpClient;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation

{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  stream: TMemoryStream;
  msg: string;
begin
  tcpClient1.Remotehost:=edit1.Text;
  tcpClient1.Active := true;

  if TcpClient1.Connect then
  begin
    stream := TMemoryStream.Create;
    stream.LoadFromFile('otchet.txt');
    TcpClient1.Sendln(IntToStr(stream.Size));
    if TcpClient1.Receiveln = 'ok' then
      TcpClient1.SendBuf(stream.Memory^, stream.Size);
    tcpClient1.Active := false;
    TcpClient1.Disconnect;
  end
  else showmessage('Error connecting');
end;


end.
локально на одном пк все работает если ставить 127.0.0.1
а вот по инету уже не работает, не работает и тогда если у клиента, что запускаю на этом же пк, мой айпи.
срабатывает showmessage('Error connecting');
в чем дело вот?
Цитата:
object TcpServer1: TTcpServer
bmBlocking
LocalPort = '9999'
OnAccept = TcpServer1Accept


object TcpClient1: TTcpClient
bmThreadBlocking
RemotePort = '9999'
в брандмауэре все разрешено

может ли быть дело где то тут?
WAN Settings

http://s57.radikal.ru/i155/1112/52/ac6aa96d2679.png
Alexandr555 вне форума Ответить с цитированием
Старый 19.12.2011, 21:12   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а доступ то есть извне к вашему компу?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:36   #3
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию

тобишь извне?
Alexandr555 вне форума Ответить с цитированием
Старый 19.12.2011, 21:38   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

из интернета к серверу есть доступ?
если нет, то откуда у программы он может взяться?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 21:41   #5
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию

есть, делаю это на одном пк, за которым щас и пишу собственно, кроме проверки когда клиент с другого пк запускал чтобы подключиться
Alexandr555 вне форума Ответить с цитированием
Старый 19.12.2011, 21:46   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

как вы проверили доступ из интернета?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.12.2011, 22:45   #7
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию

а собственно говоря не знаю

вот еще что в настройках NAT

http://s017.radikal.ru/i432/1112/9b/8204222a0af7.png
Alexandr555 вне форума Ответить с цитированием
Старый 19.12.2011, 23:23   #8
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию

нашел что доступ вроде бы тут давать
http://s017.radikal.ru/i419/1112/cd/93e510b3e526.png
но почему то безрезультатно
Alexandr555 вне форума Ответить с цитированием
Старый 20.12.2011, 09:54   #9
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

IP адрес на WAN маршрутизатора какой?
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 20.12.2011, 15:35   #10
Alexandr555
Форумчанин
 
Регистрация: 23.03.2011
Сообщений: 310
По умолчанию

http://s017.radikal.ru/i405/1112/43/0926a3baab12.png
вот поставил 80.234.118.3
не помогло
Alexandr555 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TCPServer и TCPClient на indy 10, Отправка сообщения с сервара pomkalk Работа с сетью в Delphi 3 01.04.2011 11:52
TCPServer, TCPClient seobot Общие вопросы Delphi 2 03.05.2010 23:56
[TcpClient, TcpServer] или [ServerSocket, ClientSocket] работа через прокси DOLBY Работа с сетью в Delphi 2 17.09.2009 05:46
TcpClient и TcpServer DOLBY Работа с сетью в Delphi 5 17.12.2007 10:43
TCPServer и TCPClient Antoha Работа с сетью в Delphi 19 06.10.2007 12:01