  | 
	
		
	
	
		WinSock recv Delphi - Вопросы и ответы, обсуждения - Ваши вопросы по Pascal/Delphi только в данном разделе | 
	 
	 
	
	
	
	
	
	
	
	
	
	
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            18.02.2011, 16:16
            
            
         | 
        
             
            #1
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Рыцарь-защитник  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 14.06.2010  
                
                
                
                 Сообщений: 584
                   
 Популярность: 6626  
                  
	 Сказал(а) спасибо: 86  
	
		
			
				Поблагодарили 847 раз(а) в 266 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                WinSock recv Delphi
             
             
            
        
        
        
            
               
    Каким образом получить текст пакета из recv так же как в TClientSocket ReceiveText 
 
+ если можно приведите пример где приходят склееные пакеты. 
 
p.s. поиск по recv на форуме ничего не дал, если было ткните плз носом. Только начал работать с винсок апи
     
         
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            19.02.2011, 01:02
            
            
         | 
        
             
            #2
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Разведчик  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 28.11.2010  
                
                
                
                 Сообщений: 8
                   
 Популярность: 14  
                  
	 Сказал(а) спасибо: 7  
	
		
			
				Поблагодарили 2 раз(а) в 1 сообщении
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: WinSock recv Delphi
             
             
            
        
        
        
            
               
    
  
        
        
          
                
                
                  
                        
                          | 
                        
                        Цитата: | 
                        
                          | 
                   
                 
                 | 
                
                 | 
                
                
                
                 | 
                
                
                
                 | 
           
         
        
          
                | 
                 | 
                 | 
                
                 | 
           
          
                | 
                 | 
                
                Каким образом получить текст пакета из recv так же как в TClientSocket ReceiveText 
 
+ если можно приведите пример где приходят склееные пакеты. 
 
p.s. поиск по recv на форуме ничего не дал, если было ткните плз носом. Только начал работать с винсок апи
                 | 
                
                 | 
           
          
                
                  | 
                
                 | 
                
                  | 
           
         
         | 
   
 
	PHP код: 
	
		
			
unit Unit1;
 
 interface
 
 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
   Dialogs, ScktComp, ExtCtrls, StdCtrls;
 
 type
   TForm1 = class(TForm)
     Image1: TImage;
     Image2: TImage;
     ClientSocket1: TClientSocket;
     ServerSocket1: TServerSocket;
     Button1: TButton;
     procedure Image1Click(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
     procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
     procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
   private
     { Private declarations }
     Reciving: boolean;
     DataSize: integer;
     Data: TMemoryStream;
   public
     { Public declarations }
 end;
 
 var
   Form1: TForm1;
 
 implementation
 {$R *.DFM}
 
 procedure TForm1.Image1Click(Sender: TObject);
 begin
   // Это процедура для открытия сокета на ПРИЁМ (RECEIVING).
   // Button1.Click is this procedure as well.
   ClientSocket1.Active:= true;
 end;
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
   // Открытие ОТПРАВЛЯЮЩЕГО (SENDING) сокета.
   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;
       // Добавляем длину данных, чтобы клиент знал,
       // сколько данных будет передано
       // Добавляем #0 , чтобы можно было определить,
       // где заканчивается информация о размере.
       Socket.SendText(IntToStr(ms.Size) + #0);
       // Посылаем его.
       Socket.SendStream(ms);
     except
       // Итак, осталось освободить поток, если что-то не так.
       ms.Free;
     end;
   end;
 end; 
 
		
	 
 
     
         
        
        
        
        
        
        
            
             ________________  
                
  
        
        
          
                
                
                  
                        
                         Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  | 
                        
                        Цитата: | 
                        
                         Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  | 
                   
                 
                 | 
                
                 | 
                
                
                
                  
                        
                        
                          
                                | 
                                 | 
                                
                                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  | 
                           
                         
                         | 
                   
                 
                 | 
           
         
        
          
                | 
                 | 
                 | 
                
                 | 
           
          
                | 
                 | 
                
                Поистине всегда там, где недостает разумных доводов, их заменяет крик.  | 
                
                 | 
           
          
                
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  | 
                
                 | 
                
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  | 
           
         
         | 
   
 
Леонардо да Винчи
              
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
	
	
		
	
	
    
        
            
             
            09.12.2011, 14:54
            
            
         | 
        
             
            #3
            
         | 
    
 
    
    
  
    | 
    
     | 
     
  
    | 
    
     | 
    
    
     | 
   
  
    
        Рыцарь-защитник  
     | 
     
 
    
      
  
            
    
      
    
            
                 Регистрация: 14.06.2010  
                
                
                
                 Сообщений: 584
                   
 Популярность: 6626  
                  
	 Сказал(а) спасибо: 86  
	
		
			
				Поблагодарили 847 раз(а) в 266 сообщениях
			
		
	 
     
 
             
                
               
                
       
                  
     | 
    
    
    
        
        
            
            
                 
                Re: WinSock recv Delphi
             
             
            
        
        
        
            
               
    
	Код: 
	SetString(BufString, PChar(Cardinal(@swapBuffer)), iRecvResult); 
 решение давно найдено)))
     
          
        
        
        
        
        
        
            
             ________________  
                 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
  
 Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). 
             
        
        
        
        
     | 
 
    | 
        
        
        
        
         
     | 
    
    
    
        
        
        
        
             
        
        
        
        
        
        
        
            
        
        
        
     | 
 
 
 
  
	 
	
		 
	 
 
 
	
		
	
	
	
	
	
		
	
		 
		Ваши права в разделе
	 | 
 
	
		
		Вы не можете создавать новые темы 
		Вы не можете отвечать в темах 
		Вы не можете прикреплять вложения 
		Вы не можете редактировать свои сообщения 
		 
		
		
		
		
		HTML код Выкл. 
		 
		
	  | 
 
 
	 | 
	
		
	 | 
 
 
 
Заявление об ответственности / Список мошенников
Часовой пояс GMT +4, время: 10:56. 
		 
	 
 
 | 
  |