Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Вниз

проблема передачи через сокеты не могу передать больше 8 кб   Найти похожие ветки 

 
Cameron   (2005-09-29 15:54) [0]

Вот программа передачи файлов через сокеты но она передаёт не больше 8 кб помогите сделать так что бы передавать любой обьём.
unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Image1: TImage;
   Image2: TImage;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Memo1: TMemo;
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientConnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure Button2Click(Sender: TObject);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
   procedure Button3Click(Sender: TObject);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
 private
 buffer1:^integer;
 buffer2:^integer;
 Output:TmemoryStream;
 InPut:TmemoryStream;
 Size:Integer;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
serversocket1.Port:=1001;
serversocket1.Active:=true;
serversocket1.Open;
memo1.Lines.Add("Ñåðâåð Àêòèâåí");
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.Port:=1001;
clientsocket1.Address:="192.168.0.2";
clientsocket1.Active:=true;
memo1.Lines.Add("Êëèåíò àêòâåí");
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
clientsocket1.Open;
memo1.Lines.Add("Êëèåíò ïîäêëþ÷èëñÿ");
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
memo1.Lines.Add("Ñåðâåð: êëèåíò ïîäêëþ÷èëñÿ");
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.Socket.SendText("send");
memo1.Lines.Add("Çàïðîñ îòïðàâëåí send");
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
input:=tmemorystream.Create;
input.Position:=0;
size:=socket.ReceiveLength;
getmem(buffer2, size);
socket.ReceiveBuf(buffer2^,size);
input.Write(buffer2^, size);
freemem(buffer2);
begin
input.Position:=0;
memo1.Lines.Add(inttostr(socket.ReceiveLength));
input.SaveToFile("d:\1.jpg");
memo1.Lines.Add("Ôàéë ïðèíÿò");
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
i:integer;
begin

begin
Output:=Tmemorystream.Create;
output.Position:=0;
image1.Picture.Graphic.SaveToStream(output);
i:=output.Size;
memo1.Lines.add(inttostr(i));
getmem(buffer1,i);
output.Position:=0;
begin
output.Read(buffer1^,i);
serversocket1.Socket.Connections[0].SendBuf(buffer1^,i);
freemem(buffer1);
end;
memo1.Lines.Add("Ôàéë îòïðàâëåí");
end;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
memo1.Lines.Add(socket.ReceiveText);
end;

end.


 
Digitman ©   (2005-09-29 16:18) [1]

ты справку-то читал ? прежде чем код лепить ?
ты видел там, что SendBuf() - это  функция ?

так почему же ты игнорируешь результат выполнения этой функции ?
ведь он несет немаловажную смысловую нагрузку !
и от этого результата зависит весь дальнейший алгоритм !


 
Cameron   (2005-09-29 16:52) [2]

попадробней пожалуйста и при чём тут функция?


 
Digitman ©   (2005-09-29 18:01) [3]


> Cameron   (29.09.05 16:52) [2]


> попадробней


причем здесь "попа" ?


> при чём тут функция?


при том что ф-ция на то и есть ф-ция, чтобы возвращать результат ее выполнения

ты вообще-то понимаешь разницу между процедурой и функцией ?


 
Digitman ©   (2005-09-29 18:02) [4]

ты вообще где содрал этот код ? бездумно причем ?


 
SergP.   (2005-09-30 04:24) [5]


> Cameron   (29.09.05 16:52) [2]
> попадробней пожалуйста и при чём тут функция?


Ну не может ClientSocket взять сразу данных больше чем определенное количество...Ему нужно частями их передавать. Когда он захочет взять следующую часть, он тебе "скажет" об  этом соответствующим событием.
А значение возвращаемое функцией как раз и предназначено для того чтобы контролировать сколько данных он забрал


 
SergP.   (2005-09-30 04:26) [6]


> Cameron   (29.09.05 16:52) [2]
> попадробней пожалуйста и при чём тут функция?


Ну не может Client/Server Socket взять сразу данных больше чем определенное количество...Ему нужно частями их передавать. Когда он захочет взять следующую часть, он тебе "скажет" об  этом соответствующим событием.
А значение возвращаемое функцией как раз и предназначено для того чтобы контролировать сколько данных он забрал



Страницы: 1 вся ветка

Форум: "Сети";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.015 c
8-1122288108
Adler
2005-07-25 14:41
2006.01.15
_ Delphi и AVI


5-1121121621
Brack
2005-07-12 02:40
2006.01.15
Как можно ScrollBox`у добавить свойство Canvas?


14-1135167379
syte_ser78
2005-12-21 15:16
2006.01.15
IPB


2-1134741480
Scorpio
2005-12-16 16:58
2006.01.15
Работа с документами WORD


6-1127822981
arhis
2005-09-27 16:09
2006.01.15
Исходящий траффик TServerSocket





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский