Здрасти, возникла такая проблема, взял для пробы пример из фака Клиент: | Код | unit uClientMain;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Buttons, ToolWin, ComCtrls, Menus, ScktComp, Sockets, ExtCtrls, ExtDlgs, StdCtrls, jpeg;
type TfrmMainClient = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; ToolBar1: TToolBar; btnConnect: TSpeedButton; btnSend: TSpeedButton; StatusBar1: TStatusBar; ClientSocket1: TClientSocket; imgMainClient: TImage; OpenPictureDialog1: TOpenPictureDialog; edtAdress: TLabeledEdit; edtPort: TLabeledEdit; procedure btnConnectClick(Sender: TObject); procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } Reciving: boolean; DataSize: integer; Data: TMemoryStream; public { Public declarations } end;
var frmMainClient: TfrmMainClient;
implementation
{$R *.dfm}
procedure TfrmMainClient.btnConnectClick(Sender: TObject); begin ClientSocket1.Host := edtAdress.Text; ClientSocket1.Port := StrToInt(edtPort.Text); ClientSocket1.Active := true; end;
procedure TfrmMainClient.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Socket.SendText('send'); end;
procedure TfrmMainClient.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var s, sl: string; begin s:= Socket.ReceiveText; if not Reciving then begin SetLength(sl, StrLen(PChar(s))+1); 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; imgMainClient.Picture.Bitmap.LoadFromStream(Data); Data.Free; Reciving:= false; Socket.Close; Data.SaveToFile('C:\Test.jpeg'); //О байт end; except Data.Free; end; end;
end.
|
Сервер: | Код | unit uServerMain;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, Buttons, ToolWin, ComCtrls, StdCtrls, ExtCtrls, ScktComp, Sockets, jpeg;
type TfrmMainServer = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; edtAdress: TLabeledEdit; edtPort: TLabeledEdit; ToolBar1: TToolBar; btnStartServer: TSpeedButton; StatusBar1: TStatusBar; btnStopServer: TSpeedButton; ServerSocket1: TServerSocket; imgMainServer: TImage; procedure FormCreate(Sender: TObject); procedure btnStopServerClick(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure btnStartServerClick(Sender: TObject); private { Private declarations } public { Public declarations } end;
var frmMainServer: TfrmMainServer;
implementation
{$R *.dfm}
function GetMyLocalIP: String; var Socket: TIpSocket; begin Socket:= TIpSocket.Create(nil); try Result:= Socket.LocalHostAddr; finally Socket.Free; end; end;
procedure TfrmMainServer.btnStartServerClick(Sender: TObject); begin edtAdress.Text := GetMyLocalIP; ServerSocket1.Port := StrToInt(edtPort.Text); ServerSocket1.Active := true; ShowMessage('Go!'); end;
procedure TfrmMainServer.btnStopServerClick(Sender: TObject); begin ServerSocket1.Active := false; end;
procedure TfrmMainServer.FormCreate(Sender: TObject); begin edtAdress.Text := GetMyLocalIP; end;
procedure TfrmMainServer.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var ms : TMemoryStream; begin if Socket.ReceiveText = 'send' then begin ms:= TMemoryStream.Create; try imgMainServer.Picture.Bitmap.SaveToStream(ms); ms.Position:= 0; Socket.SendText(IntToStr(ms.Size) + #0); Socket.SendStream(ms); ms.SaveToFile('C:\serv.jpeg'); //тоже сохраняется 0 байт except ms.Free; end; end; end; end.
|
в чем может быть проблема ? И еще вопросик - получаеться что фаил с сервера отправляеться к клиенту, а можно ли сделать так чтобы от клиента к клиенту можно было кидать картинки ? а Сервер просто так был запущен Это сообщение отредактировал(а) Exai1e - 22.10.2007, 23:17
--------------------
"Решение зависит от выбранного геморроя" © Snowy "у нас как в армии - либо работает, либо так и задумано"
|