Среда, 21.03.2012, 11:53 Приветствую вас Гость | Группа "Гости" 


[ Главная · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

Страница 1 из 1 1
Модератор форума: gravitas  
delfcode » Delphi » Вопросы по Delphi » ServerSocket и ClientSocket (коннект)
ServerSocket и ClientSocket
Qubert Дата: Понедельник, 12.03.2012, 22:21 | Сообщение # 1
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
Всем привет!
есть небольшая проблемка с этими компонентами!
я спрашивал у муных людей, порылся в литературе, итог: я смог приконектиться к самому себе (тоесть кинул на одну форму эти два компонента, они у меня приконнектились (указывал IP 127.0.0.1))

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

сделал кучу мессаджов при какой-либо операции!
OnConnect,onDisconnect ит.д.....в итоге ни у друга, ни у меня ничего не повляется!
перерыл инет: везде примеры только на одном пк (тоесть с ип 127ит.д.)!

и самое главное в том, что, если они вообще не могут приконнектиться после запуска выдаёт ошибку типа там Assinhorus 10061 и похожие, но, когда коннектился к другу такого не было!

OnConnecting пишет что коннектиться, но ничего не выходит!

подскажите плз, буду очень благодарен (прогу сделал ради интереса САМОГО коннекта)

спасибо!
 
Волк-1024 Дата: Понедельник, 12.03.2012, 22:31 | Сообщение # 2
Продвинутый
Группа: Проверенные
Сообщений: 130
Статус: Offline
Он возможно сидит за NAT'ом. Прямое подключение не получится.





Delphi+Assembler=Сила
 
Qubert Дата: Понедельник, 12.03.2012, 23:10 | Сообщение # 3
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
Доступно только для пользователей
вот клиент:
Code


unit Unit1;

interface

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

type
   TForm1 = class(TForm)
     Button1: TButton;
     Edit1: TEdit;
     ClientSocket1: TClientSocket;
     Button2: TButton;
     Button3: TButton;
     procedure Button2Click(Sender: TObject);
     procedure ClientSocket1Connecting(Sender: TObject;
       Socket: TCustomWinSocket);
     procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket);

     
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
clientSocket1.Host:='его айпи';
ClientSocket1.Open;
ClientSocket1.Socket.SendText('mes');

end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
   Socket: TCustomWinSocket);
begin
showmessage('CONNECT');
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
   Socket: TCustomWinSocket);
begin
showmessage('connecting');
end;

end.


вот сервер:

Code

unit Unit1;

interface

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

type
   Tfrmsrv = class(TForm)
     SrvMain: TServerSocket;
     procedure SrvMainClientRead(Sender: TObject; Socket: TCustomWinSocket);
     procedure FormCreate(Sender: TObject);
     procedure SrvMainClientConnect(Sender: TObject; Socket: TCustomWinSocket);

    
       
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   frmsrv: Tfrmsrv;

implementation

{$R *.dfm}

procedure Tfrmsrv.FormCreate(Sender: TObject);
begin
srvmain.open;
srvmain.Active:=true;
end;

procedure Tfrmsrv.SrvMainClientConnect(Sender: TObject;
   Socket: TCustomWinSocket);
begin
showmessage('CONNECTED1111111!');
end;

procedure Tfrmsrv.SrvMainClientRead(Sender: TObject; Socket: TCustomWinSocket);
var comd:string;

begin
comd:=SrvMain.Socket.Connections[0].Receivetext;

if comd='mes' then
begin
showmessage('Received!!');

end;
    
end;

end.


может быть здесь что-то не совсем точно? посмотрите плз!
 
xXxSh@dowxXx Дата: Вторник, 13.03.2012, 00:20 | Сообщение # 4
Постоянный
Группа: Пользователи
Сообщений: 82
Статус: Offline
Эта ошибка 10061 о многом говорит, ты читал про нее в нете?
возможные причины: Фаерволл, или как уже сказал Волк-1024 невозможность прямого подключения!
 
link993 Дата: Вторник, 13.03.2012, 07:55 | Сообщение # 5
Частый гость
Группа: Пользователи
Сообщений: 69
Статус: Offline
Порты проверь. У меня такая же шняга была раньше. Код на первый взгляд рабочий, но может я ошибаюсь.
 
GReIIIHuK Дата: Вторник, 13.03.2012, 12:11 | Сообщение # 6
Постоянный
Группа: Проверенные
Сообщений: 95
Статус: Offline
В вашем коде не указаны порты подключения. Что на сервере, то и на клиенте.

Code
ServerSocket1.Port:=1234;

ClientSocket1.Port:=1234;

Важно чтобы порт подключения был один и тот же.

На сервер можно сделать проще(OnClientRead):
Code

var
s:String;
begin
s:=Socket.Receivetext;
if s='blablabla' then
showmessage(s+'ble bla blo');

Ты допустил ошибку.

Исправляем твой код:
Code

var
Form1:TForm;
i:integer;
...
...
...
Server(OnClientConnect)
I:=i+1;
Server(OnClientDisconnect)
I:=i-1;

var comd:string;     
      
   begin     
   comd:=SrvMain.Socket.Connections[i].Receivetext;     
      
   if comd='mes' then     
   begin     
   showmessage('Received!!');     
      
   end;     
          
   end;     


Хотя я все равно сомневаюсь в работоспособности данного кода.
biggrin

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©


Сообщение отредактировал GReIIIHuK - Вторник, 13.03.2012, 12:12
 
xXxSh@dowxXx Дата: Вторник, 13.03.2012, 13:19 | Сообщение # 7
Постоянный
Группа: Пользователи
Сообщений: 82
Статус: Offline
Quote (GReIIIHuK)
В вашем коде не указаны порты подключения. Что на сервере, то и на клиенте.

может быть он порты в свойствах компонента указал?..., а вобще да..,согласен с тобой!

Сообщение отредактировал xXxSh@dowxXx - Вторник, 13.03.2012, 13:19
 
Neo Дата: Вторник, 13.03.2012, 15:32 | Сообщение # 8
Постоянный
Группа: Проверенные
Сообщений: 83
Статус: Offline
У меня была такая же проблема,когда я когда-то ещё использовал компаненты.Это скорей всего баг такой.Хотя в С Bildere
эти компоненты работают исправно.Лучше используй компаненты с вкладки инди.
 
Qubert Дата: Вторник, 13.03.2012, 19:21 | Сообщение # 9
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
да уж! и вправду не работает(

первоначально я кидал другу, у которого динамический ип...потом попробовал кинуть другу, у которого он статический!

все безуспешно!

в чем же тогда ошибка в коде? и как тогда быть?)

(порты я непосредственно во вкладке указывал)
точно уверен, что они не под натом (фаирвол все отключали)

спасибо за ответ!
 
GReIIIHuK Дата: Вторник, 13.03.2012, 20:36 | Сообщение # 10
Постоянный
Группа: Проверенные
Сообщений: 95
Статус: Offline
Вот тут можешь посмотреть пример работы на сокетах, чат не доработанный. Точнее полностью не законченный. Написал на скорую руку.
Ссылка
Пароль к архиву:Delfcode.ru

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©


Сообщение отредактировал GReIIIHuK - Вторник, 13.03.2012, 21:01
 
Qubert Дата: Вторник, 13.03.2012, 21:50 | Сообщение # 11
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
Спасибо!
 
dolphin Дата: Четверг, 15.03.2012, 11:28 | Сообщение # 12
Администратор
Группа: Администраторы
Сообщений: 855
Статус: Offline
ИМХО Не проще взять другие компоненты, например ирку, асю, мейл. Вобщем из целей надо исходить.

А что касаемо личного опыта работы с данным компонентом, то сразу говорю что не более тех испытаний что проводил Qubert, так же между 2-мя компами работать отказался на чём и были заброшены все разработки с ним. biggrin



Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
xXxSh@dowxXx Дата: Четверг, 15.03.2012, 12:13 | Сообщение # 13
Постоянный
Группа: Пользователи
Сообщений: 82
Статус: Offline
как мне кажется, что бы эти стандартные компоненты нормально работали, для них нужно писать кучу исключений и возможных событий...
 
Qubert Дата: Четверг, 15.03.2012, 17:13 | Сообщение # 14
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
Доступно только для пользователейу меня цель соединить два компа и осущесвтялть между ними передачу данных, для ИМЕННО мирных целей!

жаль, что так!

связь через мыло я уже осущсвтлял, просто для моей цели нужно в режиме реального времени. dolphin, а что за "ирка" ?)
 
Marra_Kesh Дата: Четверг, 15.03.2012, 18:46 | Сообщение # 15
Продвинутый
Группа: Модераторы
Сообщений: 110
Статус: Offline
Quote (Qubert)
dolphin, а что за "ирка" ?)

Он имел ввиду IRC biggrin

Я не крекер, Я не программист!
Я не профессионал, Я не любитель!
Я не вредитель, Я не теоретик!
Я не преступник-Я ПОВАР 4 разряда!
А кто ТЫ?
 
GReIIIHuK Дата: Четверг, 15.03.2012, 20:48 | Сообщение # 16
Постоянный
Группа: Проверенные
Сообщений: 95
Статус: Offline
IRC (англ. Internet Relay Chat) — протокол прикладного уровня для обмена сообщениями в режиме реального времени.
Разработан в основном для группового общения, также позволяет общаться через личные сообщения и обмениваться данными, в т.ч. файлами.
IRC использует транспортный протокол TCP и криптографический TLS (опционально).
IRC начало завоевывать особенную популярность после операции «Буря в пустыне» (1991), когда сообщения со всего мира собирались в одном месте и в режиме «on-line» транслировались в IRC.[1]
Ввиду технической простоты реализации протокол IRC в последнее время стал использоваться при организации ботнетов в качестве средства передачи управляющих команд компьютерам-участникам ботнета от владельца.

http://ru.wikipedia.org/wiki/IRC

Skype:"greiiihuk."


Да, я преступник. Мое преступление — любопытство.
Быть может умру я, умрут многие, но идея останется жить навсегда.
Я работаю не только за спасибо.(+) ©
 
Qubert Дата: Четверг, 15.03.2012, 20:58 | Сообщение # 17
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
спасибо)
 
Волк-1024 Дата: Четверг, 15.03.2012, 22:56 | Сообщение # 18
Продвинутый
Группа: Проверенные
Сообщений: 130
Статус: Offline
Попробуй на сокетах написать.





Delphi+Assembler=Сила
 
dolphin Дата: Пятница, 16.03.2012, 10:52 | Сообщение # 19
Администратор
Группа: Администраторы
Сообщений: 855
Статус: Offline
Что касаемо передачи файлов -
delfcode.ru/load/iskhodniki_delphi/seti/46-1-0-230
delfcode.ru/load/iskhodniki_delphi/seti/46-1-0-252



Я не профессионал, я всего лишь любитель.
Я не вредитель, я всего лишь теоретик.
 
Qubert Дата: Воскресенье, 18.03.2012, 10:23 | Сообщение # 20
Участник
Группа: Пользователи
Сообщений: 24
Статус: Offline
Спасибо!
 
delfcode » Delphi » Вопросы по Delphi » ServerSocket и ClientSocket (коннект)
Страница 1 из 1 1
Поиск:
delfcode.ru © 2008 - 2012 Хостинг от uCoz