{"id":722,"date":"2008-05-23T06:13:08","date_gmt":"2008-05-23T06:13:08","guid":{"rendered":"http:\/\/6teen.ru\/?p=648"},"modified":"2008-05-23T06:13:08","modified_gmt":"2008-05-23T06:13:08","slug":"6314","status":"publish","type":"post","link":"http:\/\/pblog.ru\/lab\/?p=722","title":{"rendered":"\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TClientSocket &#038; TServerSocket"},"content":{"rendered":"<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TClientSocket &#038; TServerSocket<br \/>\n<!--more--><\/p>\n<pre class=\"alt2\" style=\"margin:0px; padding:6px; border:1px inset; width:580px; height:320px; overflow:auto\"><div>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TClientSocket & TServerSocket\n\nunit Unit1;\n\ninterface\n\nuses\nWindows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\nScktComp, ExtCtrls, StdCtrls;\n\ntype\nTForm1 = class(TForm)\nImage1: TImage;\nImage2: TImage;\nClientSocket1: TClientSocket;\nServerSocket1: TServerSocket;\nButton1: TButton;\nprocedure Image1Click(Sender: TObject);\nprocedure FormCreate(Sender: TObject);\nprocedure ClientSocket1Connect(Sender: TObject;\nSocket: TCustomWinSocket);\nprocedure ServerSocket1ClientRead(Sender: TObject;\nSocket: TCustomWinSocket);\nprocedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);\nprivate\n{ Private declarations }\nReciving: boolean;\nDataSize: integer;\nData: TMemoryStream;\npublic\n{ Public declarations }\nend;\n\nvar\nForm1: TForm1;\n\nimplementation\n\n{$R *.DFM}\n\nprocedure TForm1.Image1Click(Sender: TObject);\nbegin\n\/\/ \u042d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u0434\u043b\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u044f \u0441\u043e\u043a\u0435\u0442\u0430 \u043d\u0430 \u041f\u0420\u0418\u0401\u041c (RECEIVING).\n\/\/ Button1.Click is this procedure as well.\nClientSocket1.Active:= true;\nend;\n\nprocedure TForm1.FormCreate(Sender: TObject);\nbegin\n\/\/ \u041e\u0442\u043a\u0440\u044b\u0442\u0438\u0435 \u041e\u0422\u041f\u0420\u0410\u0412\u041b\u042f\u042e\u0429\u0415\u0413\u041e (SENDING) \u0441\u043e\u043a\u0435\u0442\u0430.\nServerSocket1.Active:= true;\nend;\n\nprocedure TForm1.ClientSocket1Connect(Sender: TObject;\nSocket: TCustomWinSocket);\nbegin\n\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0444\u0430\u0439\u043b\u0430.\nSocket.SendText('send');\nend;\n\nprocedure TForm1.ClientSocket1Read(Sender: TObject;\nSocket: TCustomWinSocket);\nvar\ns, sl: string;\nbegin\ns:= Socket.ReceiveText;\n\/\/ \u0415\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u0440\u0438\u0451\u043c\u0430:\nif not Reciving then\nbegin\n\/\/ \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u0443 \u043f\u043e\u0442\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u044b\u0445.\nSetLength(sl, StrLen(PChar(s))+1); \/\/ +1 for the null terminator\nStrLCopy(@sl[1], PChar(s), Length(sl)-1);\nDataSize:= StrToInt(sl);\nData:= TMemoryStream.Create;\n\/\/ \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435 \u0438\u0437 \u0434\u0430\u043d\u043d\u044b\u0445.\nDelete(s, 1, Length(sl));\nReciving:= true;\nend;\n\/\/ \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u0430\u0439\u043b, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0432\u0441\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.\ntry\nData.Write(s[1], length(s));\nif Data.Size = DataSize then\nbegin\nData.Position:= 0;\nImage2.Picture.Bitmap.LoadFromStream(Data);\nData.Free;\nReciving:= false;\nSocket.Close;\nend;\nexcept\nData.Free;\nend;\n\nprocedure TForm1.ServerSocket1ClientRead(Sender: TObject;\nSocket: TCustomWinSocket);\nvar\nms: TMemoryStream;\nbegin\n\/\/ \u041a\u043b\u0438\u0435\u043d\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u0444\u0430\u0439\u043b\u0430.\nif Socket.ReceiveText = 'send' then\nbegin\nms:= TMemoryStream.Create;\ntry\n\/\/ \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443.\nImage1.Picture.Bitmap.SaveToStream(ms);\nms.Position:= 0;\n\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0434\u043b\u0438\u043d\u0443 \u0434\u0430\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043a\u043b\u0438\u0435\u043d\u0442 \u0437\u043d\u0430\u043b, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0430\u043d\u043d\u044b\u0445 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043e\n\/\/ \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c #0 , \u0447\u0442\u043e\u0431\u044b \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0433\u0434\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0435.\nSocket.SendText(IntToStr(ms.Size) + #0);\n\/\/ \u041f\u043e\u0441\u044b\u043b\u0430\u0435\u043c \u0435\u0433\u043e.\nSocket.SendStream(ms);\nexcept\n\/\/ \u0418\u0442\u0430\u043a, \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u043f\u043e\u0442\u043e\u043a, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e-\u0442\u043e \u043d\u0435 \u0442\u0430\u043a.\nms.Free;\nend;\n\nend.\n\n\u0410\u0432\u0442\u043e\u0440 \u041c.\u041a.\n\n\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b: http:\/\/www.delphimaster.ru\/cgi-bin\/faq.pl?...=991237103&n=20\n<\/div><\/pre>\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0438 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e TClientSocket &#038; TServerSocket<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[448,457],"tags":[570,587,1525,1642,995,345],"_links":{"self":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/722"}],"collection":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=722"}],"version-history":[{"count":0,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=\/wp\/v2\/posts\/722\/revisions"}],"wp:attachment":[{"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=722"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/pblog.ru\/lab\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}