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

Вниз

PByteArray   Найти похожие ветки 

 
R2D2   (2004-08-05 16:33) [0]

Как переслать на др. компьютер (проге-клиенту) массив байт (PByteArray).


 
Rouse_ ©   (2004-08-05 16:34) [1]

Загоняй в Stream и пересылай...


 
R2D2   (2004-08-05 17:43) [2]

Загоняю! Выглядит так (в кратце):

var
p: PByteArray;
...
begin
...
p := bitmap.ScanLine[y];
MyStream := TMemoryStream.Create;
MyStream.WriteBuffer(p,SIZEOF(p)); //загоняю
MyStream.Position:=0;
NMUDP1.SendStream(MyStream);       //отсылаю
...

Как получить этот массив на др. компе?
begin
...    
MyStream := TMemoryStream.Create;    
NMUDP1.ReadStream(MyStream);       //принимаю
MyStream.Position:=0;
MyStream.ReadBuffer(p,NumberBytes);
...
Так выдает ошибку.


 
Kurtevich   (2004-08-05 17:47) [3]

var p: pByteArray;
 len : integer;
 s: SOCKET;

winsock2.send(s,p^[0],len,0);


 
Goorus   (2004-08-06 13:25) [4]

MyStream.WriteBuffer(p,SIZEOF(p));
В p у тебя хранится только ссылка на массив, это величина вроде Integer, и занимает она 4 байта. Делай, как говорит Kurtevich.


 
Digitman ©   (2004-08-06 13:46) [5]

var
p: PByteArray;
...
begin
...
p := bitmap.ScanLine[y];
MyStream := TMemoryStream.Create;
MyStream.WriteBuffer(p^,фактический_размер_буфера_!!!!!);
MyStream.Position:=0;
NMUDP1.SendStream(MyStream);      
...

MyStream := TMemoryStream.Create;    
NMUDP1.ReadStream(MyStream);      
MyStream.Position:=0;
GetMem(p, MyStream.Size);
MyStream.ReadBuffer(p^,MyStream.Size);


> выдает ошибку


кр.всего прочего ошибка (причем грубая, связанная с особенностями UDP и с "кривостью" NMUDP, явно не учитывающего эти особенности) обязательно возникнет, если размер передаваемого потока превышает макс.доп.размер UDP-сообщения


 
R2D2   (2004-08-08 16:16) [6]

Переделал с использованием ClientSocket и ServerSocket. Выглядит так:

var
p: PByteArray;
...
begin
...
p := bitmap.ScanLine[y];
MyStream := TMemoryStream.Create;
MyStream.WriteBuffer(p,SIZEOF(p)); //загоняю
MyStream.Position:=0;
Size := ServerSocket1.Socket.Connections[0].SendBuf(ppp,MyStream.Size);       //отсылаю
...

На другом компе получаю:
begin
...  
oo := bitmap.ScanLine[y];
...    
Socket.ReceiveBuf(ooo,Sizeof(oo));       //принимаю
for x := 0 to b.Width * 3 - 1 do
oo^[x] := round(ooo^[x]);               //возникает ошибка
...

Причем ошибка возникает только тогда, когда "работают" 2 программы (клиент и сервер). А если весь код написан в ондой проге (она клиент и сервер), то все ОК, работает как надо! В чем может быть проблема?


 
R2D2   (2004-08-08 16:55) [7]

Предыдущий код совершенно не такой! А вот такой:
var
pic1, pic2: PByteArray;
...
begin
...
for y := 0 to bitmap.Height - 1 do begin
 pic1:= bitmap.ScanLine[y];
 Size := ServerSocket1.Socket.Connections[0].SendBuf(pic1,SIZEOF(pic1));    //отсылаю
end;

На другом компе получаю:
begin
...  
oo := bitmap.ScanLine[y];
...    
Socket.ReceiveBuf(ooo,Sizeof(oo));       //принимаю
for x := 0 to b.Width * 3 - 1 do
oo^[x] := round(ooo^[x]);               //возникает ошибка
...



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

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

Наверх




Память: 0.46 MB
Время: 0.04 c
4-1095237586
loky
2004-09-15 12:39
2004.10.17
graphiks


3-1095888393
Relaxxx
2004-09-23 01:26
2004.10.17
Как заполнить ComboBox из Дата сета???


3-1095156533
O?O
2004-09-14 14:08
2004.10.17
Инсталирован BDE или нет


6-1091628568
IceClimber
2004-08-04 18:09
2004.10.17
Как узнать объем винта на другой машине (в локал. сети)


3-1095423240
pashaz
2004-09-17 16:14
2004.10.17
DBWARE Для ZEOS





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