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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2010, 10:31   #1
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
Вопрос

Вобщем я писал программу для чтения текстовых файлов на уд компе работающую по принципу клиент сервер. Материал по работе с сокетами брал из статей о том как написать троян на дельфи (плохих целей не было, просто не знал где взять пример использования сокетов). При проверке программы вылезла вот такая ошибка: скрин. Что она значит?

Если важно, то порты были 122 и 123

Последний раз редактировалось Stilet; 19.09.2010 в 12:47.
Mihanches вне форума Ответить с цитированием
Старый 19.09.2010, 12:11   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

хост на сокетах настроен?
вообще на словах сказать трудно, что вы там понаписали, выложите проект
Цитата:
Если важно, то порты были 122 и 123
у сервера и клиента разные чтоли?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 19.09.2010 в 12:14.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 12:47   #3
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

нет не разные. это я так одну проблему решил. вот исходник.
CLIENT:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    cs: TClientSocket;
    ServerSocket1: TServerSocket;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
cs.Host:=Edit1.Text;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
cs.Active:=true; //Коннектимся
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
cs.Socket.SendText(edit2.text);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
s:string;
begin
if copy(s,1,5)='Text:'
then
Memo1.lines.add(s) ;
end;

end.

SERVER:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp, StdCtrls;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    cs: TClientSocket;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=false;
serversocket1.port:=123;//Назначаем порт
serversocket1.active:=true//начинаем слушать порт
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var s:string; d: Tstrings;
sFileName: string;
begin
s:=socket.ReceiveText;
if copy(s,1,2)='80' then
cs.Host:= s; cs.Active:= True ;
if copy(s,1,2)='10' then
cs.Host:= s; cs.Active:= True ;
if copy(s,1,2)='C:' then
sFileName:= s; Memo1.Lines.LoadFromFile(sFileName); cs.Socket.SendText('Text:'+ memo1.lines.Text);
if copy(s,1,3)='D:' then
sFileName:= s; Memo1.Lines.LoadFromFile(sFileName); cs.Socket.SendText('Text:'+ memo1.lines.Text);
end;

end.
From Stilet:Неужели так сложно было код оформить тегом? Или ты так все документы свои оформляешь тяп-ляп?
Mihanches вне форума Ответить с цитированием
Старый 19.09.2010, 12:56   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

стоп стоп стоп, а зачем у вас в каждом приложении и клиент и сервер то?
определитесь уже, у вас отдельно клиент сервер или совместно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 13:23   #5
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

В клиенте:клиент для откравки имени текстового файла,сервер для приема его содержимого. А в сервере наоборот. А как это совместить?
Mihanches вне форума Ответить с цитированием
Старый 19.09.2010, 13:25   #6
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

Ктому же вряд ли ошибка из за этого.
Mihanches вне форума Ответить с цитированием
Старый 19.09.2010, 13:30   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

клиент это тот кто подключается, сервер тот кто принимает подключения.

канал двухсторонний, клиент может принимать данные, так же как и сервер отправлять их.
(например в событии сервера, можно использовать Socket чтоб послать обратно данные(именно тому же), а у клиента это Client.Socket)

вот статейка http://pblog.ru/?p=91

кстати, а адрес какой указан то у клиента?(тест на одном компе)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 13:37   #8
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

В смысле адрес у клиента? Если вы про адрес клиента в сервере , то перед тем как клиент отсылает имя текст файла, он должен отослать IP (для этого есть соответствующие edit и button). а чтоб не путаться я сделал так что бы: если первые 2 символа были 10 или 80 (так нач мой IP (локал и внеш)) S присваиваеться в Client.Host . Вот такие пироги. Ну дак от чего же ошибка?
Mihanches вне форума Ответить с цитированием
Старый 19.09.2010, 13:39   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ну ведь сначало то вы куда то подключаетесь, чтоб отослать данные.
и кстати, если отправка через интернет, то про серый IP помним.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.09.2010, 14:25   #10
Mihanches
Пользователь
 
Регистрация: 14.09.2010
Сообщений: 89
По умолчанию

У клиента указан IP. Тестил с другом через инет.
Он точно запускал сервер, и у него точно был открыт 123 порт.

Последний раз редактировалось Mihanches; 19.09.2010 в 14:30.
Mihanches вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при закрытии программы Crystallon Общие вопросы Delphi 17 23.08.2010 21:07
Ошибка при проверке суммы вода. Djanius Компоненты Delphi 2 16.08.2010 20:35
Ошибка в проверке! JulLy Общие вопросы C/C++ 4 02.12.2009 01:08
программное переключение словаря при проверке орфографии методами MS Word tojhto Общие вопросы Delphi 2 06.09.2008 01:54
Ошибка при инсталляции программы фЁдОр Помощь студентам 5 24.12.2007 11:27