Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
1-49612
Angel_Forever
2004-01-05 07:04
2004.01.16
Импорт таблица StringGrid в док. Excel


1-49636
alless
2004-01-04 14:28
2004.01.16
Directoria!


14-49747
Denis
2003-12-24 16:49
2004.01.16
Как определить номер недели в году?


1-49628
Крутыш
2004-01-04 20:49
2004.01.16
Хочу обработать!!!


7-49787
MakNik
2003-11-03 12:38
2004.01.16
Панель задач





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский