Форум: "Сети";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
ВнизСоединение TClientSocet и TServerSocet Найти похожие ветки
← →
DelphiN! (2003-11-14 19:09) [0]Хочу понять технологию Client Server, но как всегда много загвоздок, вот откопал инфу:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ScktComp;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Image1: TImage;
Image2: TImage;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure FormCreate(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
Reciving: boolean;
DataSize: integer;
Data: TMemoryStream;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Image1Click(Sender: TObject);
begin
ClientSocket1.Active:= true;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Active:= true;
end;
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket.SendText("send");
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s, sl: string;
begin
s:= Socket.ReceiveText;
if not Reciving then
begin
SetLength(sl, StrLen(PChar(s))+1); // +1 for the null terminator
StrLCopy(@sl[1], PChar(s), Length(sl)-1);
DataSize:= StrToInt(sl);
Data:= TMemoryStream.Create;
Delete(s, 1, Length(sl));
Reciving:= true;
end;
try
Data.Write(s[1], length(s));
if Data.Size = DataSize then
begin
Data.Position:= 0;
Image2.Picture.Bitmap.LoadFromStream(Data);
Data.Free;
Reciving:= false;
Socket.Close;
end;
except
Data.Free;
end;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ms: TMemoryStream;
begin
if Socket.ReceiveText = "send" then
begin
ms:= TMemoryStream.Create;
try
Image1.Picture.Bitmap.SaveToStream(ms);
ms.Position:= 0;
Socket.SendText(IntToStr(ms.Size) + #0);
Socket.SendStream(ms);
except
ms.Free;
end;
end;
end;
При выполнении image1click вылетает динамическая ошибка "No adress specified", при установке свойств компонента
ClienSocket1.adress := "localhost";
ClientSocet1.host := "localhost";
Вылетает новая ошибка: "Asynchronous socket error 10049"
Что я делаю не так?
Цель программы вроде такая: при выполнении image1.click, image1.picture должно переслаться в image2.picture
← →
Kotka (2003-11-14 19:59) [1]Нельзя писать ClienSocket1.adress := "localhost"; оно только для ип.
Попробуй указать вместо localhost свой ип.
← →
DelphiN! (2003-11-14 20:40) [2]Тогда какой компонент лучше альтернативно использовать, для выполнения вышеуказанной задачи?
← →
DelphiN! (2003-11-14 20:59) [3]Вобщем как мне любым альтернативным способом сделать вышеописанное
← →
Silver Alex (2003-11-14 21:29) [4]Если хочешь могу на мыло скинуть пару примеров
← →
DelphiN! (2003-11-15 12:24) [5]Удалено модератором
Примечание: Личная переписка
← →
RoLeX (2003-11-16 01:51) [6]
> Silver Alex © (14.11.03 21:29) [4]
> Если хочешь могу на мыло скинуть пару примеров
Скинь мне тоже - rolex5@yandex.ru
← →
RoLeX (2003-11-16 01:51) [7]
> Silver Alex © (14.11.03 21:29) [4]
> Если хочешь могу на мыло скинуть пару примеров
Скинь мне тоже - rolex5@yandex.ru
← →
агличанен (2003-11-16 05:37) [8]Соединение ТКлиентСосет и ТСерверСосет.. "Классный" заголовок.
← →
DelphiN! (2003-11-16 20:18) [9]Спасибо, я уже разобрался, я просто не указывал порт! его нужно ставить больше 1000, а свойство хост должно быть равно имени хоста, а если локальный хост - localhost
RoLeX © (16.11.03 01:51) [7]>
www.DelphiNsWorld.Narod.ru/Articles/Articles3/send_file_with_TCLIENTSOCKET_TSERVERSOCKET.htm
www.DelphiNsWorld.Narod.ru/Articles/Articles3/Send_file_with_socet_connect.htm
www.DelphiNsWorld.Narod.ru/Articles/chat_exemble_in_delphi_na_osnove_socetov_.htm
вот тебе примеры, но перед этим не забудь указать:
clientsocket1.host := "localhost";
clientsocket1.port := 1001; {именно в этом была моя загвоздка!!!}
ServerSocket.port := 1001; {и в этом тоже соответственно!}
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c