|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | |||
| 
 | |||
|  Помогите, пожалуйста исправить прогу(чат) для интернета Есть код: Код: unit UnitInternet1;
interface
uses
   Winsock,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ExtCtrls, AppEvnts, Menus;
type
  TForm1 = class(TForm)
    ClientSocket2: TClientSocket;
    ServerSocket2: TServerSocket;
    PanelServer: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    RemIP: TEdit;
    PanelClient: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    RemIP2: TEdit;
    OutServer: TButton;
    Memo1: TMemo;
    Str2: TMemo;
    OutClient: TButton;
    Str: TMemo;
    MainMenu1: TMainMenu;
    Options: TMenuItem;
    SOptions: TMenuItem;
    GetIP: TMenuItem;
    SGetIP: TMenuItem;
    procedure ServerSocket2ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket2Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure OutServerClick(Sender: TObject);
    procedure ClientSocket2Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure OutClientClick(Sender: TObject);
    procedure SOptionsClick(Sender: TObject);
    procedure SGetIPClick(Sender: TObject);
    procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure NOTTT(Sender: TObject);
    procedure NOTTT2(Sender: TObject; var CanClose: Boolean);
    procedure NOTTTT3(Sender: TObject);
    procedure NOTTT4(Sender: TObject; DockClient: TControl;
      var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
  private
    { Private declarations }
  public
  procedure SendMes(Text: String);
  end;
var
  Form1: TForm1;
implementation
uses UnitInternet1VS, Unit1InternetVIP;
{$R *.dfm}
procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin // сервер получает информацию
RemIP.Text := Socket.RemoteAddress;
Str.Text   := Socket.ReceiveText  ;
end;
procedure TForm1.ClientSocket2Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin   // клиент получает информацию
RemIP2.Text := Socket.RemoteAddress;
Str2.Text   := Socket.ReceiveText  ;
end;
procedure TForm1.SendMes(Text: String);
var
  i: byte;
begin
  with ServerSocket2.Socket do
  begin
      for i := 0 to ActiveConnections - 1 do begin
      try
        Connections[i].SendText(Text);
        Application.ProcessMessages;
      except
      ShowMessage('Error при попытке отправить сообщение: '+Memo1.Text);
     end;
  end;
end;
end;
procedure TForm1.OutServerClick(Sender: TObject);
begin
Form1.SendMes(Memo1.Text);
end;
procedure TForm1.ClientSocket2Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Canvas.Pen.Mode    := pmBlack;
Canvas.Ellipse(0,0,40,30);
end;
procedure TForm1.OutClientClick(Sender: TObject);
begin
if ClientSocket2.Active = False then begin ShowMessage('Клиент не включён'); exit; end;
 try
  ClientSocket2.Socket.SendText(Memo1.Text);
 except
  ShowMessage('Error при попытке отправить сообщение: '+Memo1.Text);
 end;
end;
procedure TForm1.SOptionsClick(Sender: TObject);
begin
Form1.Enabled := False;
Form2.Left := Form1.Left-10;  
Form2.Show;
end;
procedure TForm1.SGetIPClick(Sender: TObject);
const
  WINSOCK_VERSION=$0101;
var
 WSAData: TWSAData;
 p: PHostEnt;
begin
 GetIPForm.Show;
 WSAStartup(WINSOCK_VERSION, WSAData);
 p:=GetHostByName(PChar(GetIPForm.Edit1.Text));
 GetIPForm.IP.TEXT:='IP: '+inet_ntoa(PInAddr(p.h_addr_list^)^);
 WSACleanup;
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Application.Terminate;
end;
procedure TForm1.NOTTT(Sender: TObject);
begin
//Нето
end;
procedure TForm1.NOTTT2(Sender: TObject; var CanClose: Boolean);
begin
//
end;
procedure TForm1.NOTTTT3(Sender: TObject);
begin
//
end;
procedure TForm1.NOTTT4(Sender: TObject; DockClient: TControl;
  var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
begin
//Application.Terminate;
end;
end. | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   надо пользоваться тегом [code] и запустив сервер, подключиться к нему. | 
| 
			 
			#3  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 А тэгом это как? И ещё, когда тестируешь на 1 компе всё - ок, а на 2 не работает! | 
| 
			 
			#4  
			
			
			
			
		 | |||
| 
 | |||
|   Тэгом - это значит заключать код в эти теги (админа на тебя нету...). А порты на файерволе открыть? А указывать IP компьютера-сервера, а не localhost? | 
| 
			 
			#5  
			
			
			
			
		 | |||
| 
 | |||
|   Серавно не понял! Кто-нибудь может доходчего объяснить, что значит теги? | 
| 
			 
			#7  
			
			
			
			
		 | |||
| 
 | |||
|   А вроде и так понятно, где код, а где его нет! | 
| 
			 
			#8  
			
			
			
			
		 | |||
| 
 | |||
|   Вобщем, давайте с начала. У меня Delphi 7 и я создал приложение(чат) для интернета на основе компонентов TClientSocket и TServerSocket.  В код не включены 2 унита(UNIT) один из них показывает IP, а другой настраивает свойства клиента(Host;Adress;Port) и сервера(Port). И вопрос, как запустить прогу, чтобы работало на 2 машинах? Код:  
unit UnitInternet1;
interface
uses
   Winsock,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp, ExtCtrls, AppEvnts, Menus;
type
  TForm1 = class(TForm)
    ClientSocket2: TClientSocket;
    ServerSocket2: TServerSocket;
    PanelServer: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    RemIP: TEdit;
    PanelClient: TPanel;
    Label3: TLabel;
    Label4: TLabel;
    RemIP2: TEdit;
    OutServer: TButton;
    Memo1: TMemo;
    Str2: TMemo;
    OutClient: TButton;
    Str: TMemo;
    MainMenu1: TMainMenu;
    Options: TMenuItem;
    SOptions: TMenuItem;
    GetIP: TMenuItem;
    SGetIP: TMenuItem;
    procedure ServerSocket2ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket2Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure OutServerClick(Sender: TObject);
    procedure ClientSocket2Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure OutClientClick(Sender: TObject);
    procedure SOptionsClick(Sender: TObject);
    procedure SGetIPClick(Sender: TObject);
    procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure NOTTT(Sender: TObject);
    procedure NOTTT2(Sender: TObject; var CanClose: Boolean);
    procedure NOTTTT3(Sender: TObject);
    procedure NOTTT4(Sender: TObject; DockClient: TControl;
      var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
  private
    { Private declarations }
  public
  procedure SendMes(Text: String);
  end;
var
  Form1: TForm1;
implementation
uses UnitInternet1VS, Unit1InternetVIP;
{$R *.dfm}
procedure TForm1.ServerSocket2ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin // сервер получает информацию
RemIP.Text := Socket.RemoteAddress;
Str.Text   := Socket.ReceiveText  ;
end;
procedure TForm1.ClientSocket2Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin   // клиент получает информацию
RemIP2.Text := Socket.RemoteAddress;
Str2.Text   := Socket.ReceiveText  ;
end;
procedure TForm1.SendMes(Text: String);
var
  i: byte;
begin
  with ServerSocket2.Socket do
  begin
      for i := 0 to ActiveConnections - 1 do begin
      try
        Connections[i].SendText(Text);
        Application.ProcessMessages;
      except
      ShowMessage('Error при попытке отправить сообщение: '+Memo1.Text);
     end;
  end;
end;
end;
procedure TForm1.OutServerClick(Sender: TObject);
begin
Form1.SendMes(Memo1.Text);
end;
procedure TForm1.ClientSocket2Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Canvas.Pen.Mode    := pmBlack;
Canvas.Ellipse(0,0,40,30);
end;
procedure TForm1.OutClientClick(Sender: TObject);
begin
if ClientSocket2.Active = False then begin ShowMessage('Клиент не включён'); exit; end;
 try
  ClientSocket2.Socket.SendText(Memo1.Text);
 except
  ShowMessage('Error при попытке отправить сообщение: '+Memo1.Text);
 end;
end;
procedure TForm1.SOptionsClick(Sender: TObject);
begin
Form1.Enabled := False;
Form2.Left := Form1.Left-10;  
Form2.Show;
end;
procedure TForm1.SGetIPClick(Sender: TObject);
const
  WINSOCK_VERSION=$0101;
var
 WSAData: TWSAData;
 p: PHostEnt;
begin
 GetIPForm.Show;
 WSAStartup(WINSOCK_VERSION, WSAData);
 p:=GetHostByName(PChar(GetIPForm.Edit1.Text));
 GetIPForm.IP.TEXT:='IP: '+inet_ntoa(PInAddr(p.h_addr_list^)^);
 WSACleanup;
end;
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Application.Terminate;
end;
procedure TForm1.NOTTT(Sender: TObject);
begin
//Нето
end;
procedure TForm1.NOTTT2(Sender: TObject; var CanClose: Boolean);
begin
//
end;
procedure TForm1.NOTTTT3(Sender: TObject);
begin
//
end;
procedure TForm1.NOTTT4(Sender: TObject; DockClient: TControl;
  var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);
begin
//Application.Terminate;
end;
end. | 
| 
			 
			#9  
			
			
			
			
		 | ||||
| 
 | ||||
|   DungeonLords, ага, с тэгами начинает получаться (хотя слабо еще пока), так что еще раз внимательно перечитываем тут. А вот это: Цитата: 
 По совокупности - выношу предупреждение, при рецидиве - бан | 
| 
			 
			#10  
			
			
			
			
		 | |||
| 
 | |||
|   Цитата: 
 Почему слабо? Последний раз редактировалось DungeonLords, 05.09.2008 в 15:05. | 
| 
			 
			#11  
			
			
			
			
		 | |||
| 
 | |||
|  SLY Ну делай так: -------SERVER------- 1. ServerSocket.Port:=123; так для наглядности 2. ServerSocket.Activate:=true; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var S:String; begin s:=Socket.ReceiveText(); Showmessage(S); end; ------Client------- 1. ClientSocket1.Address:='1.1.1.1'; 2. ClientSocket1.Port:=123; 3. ClientSocket1.Active:=true; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Showmessage('Connect...Ok'); ClientSocket1.Socket.SendText('HELLO'); end; Простейшое соиденение которое передает строку HELLO! Надеюсь чемто помог | 
| 
			 
			#12  
			
			
			
			
		 | |||
| 
 | |||
|   Подклюси юниты где определяется IP и вместо localhost напиши полученнный IP | 
| 
			 
			#13  
			
			
			
			
		 | |||
| 
 | |||
|  Уже все готово смотри тему я там все подробно описал  ПРИШЕМ ЧАТ ClientSocket-ServerSocket | 
| 
			 
			#14  
			
			
			
			
		 | |||
| 
 | |||
|   (Sly), Ты вообще смотрел, что я написал!!! Я по смыслу тоже самое написал!!! И ещё почему Adress='1.1.1.1', и что это вообще такое! | 
| 
			 
			#15  
			
			
			
			
		 | |||
| 
 | |||
|   (mskvkin), Твоё ПРИШЕМ ЧАТ ClientSocket-ServerSocket гавно(это цензурно!) страшное! Ерунда какая - то! |