bitmap datein verschicken
-
wie kann ich bitmaps übers internet schicken
des geht bei mir einfach nich
bitte gebt mirn beispielPS: die socketverbindung hab ich schon nur des send will nich so wie ich will
danke schon im voraus
-
Hast du beim Senden Probleme, oder beim Empfangen?
Evlt. behandelst du die Daten nicht binär, sondern als String
-
also bei beiden gibts probleme oder der return wert -1 heißt schon das es ein problem gab
und ich hab send eigentlich immer nur als string benutzt wie kann ichs denn binär verwenden?????
-
du darfst eben keine String-Funktionen auf den char-Buffer anwenden - ala lstrlen. Aber zeig doch einfach mal deinen Code
-
also des programm soll jetzt ne bitmap senden und genau des schaff ich net
naja hier erst mal der code den ich zum größten teil ausm faq hab
HDC hdc2; HBITMAP aBmp; BITMAPINFO bi; HGDIOBJ OldObj; void *dibvalues; HANDLE fileHandle; BITMAPFILEHEADER bmfh; BITMAPINFOHEADER bmih; DWORD bytes_write; DWORD bytes_written; hdc2=CreateCompatibleDC(hdc); ZeroMemory(&bmih,sizeof(BITMAPINFOHEADER)); bmih.biSize=sizeof(BITMAPINFOHEADER); bmih.biHeight=height; bmih.biWidth=width; bmih.biPlanes=1; bmih.biBitCount=16; bmih.biCompression=BI_RGB; bmih.biSizeImage = ((((bmih.biWidth * bmih.biBitCount) + 31) & ~31) >> 3) * bmih.biHeight; bmih.biXPelsPerMeter = 0; bmih.biYPelsPerMeter = 0; bmih.biClrImportant = 0; //bmih.biSizeImage=(3*bmih.biHeight*bmih.biWidth); //bmih.biSizeImage = 0; bi.bmiHeader=bmih; aBmp=CreateDIBSection(hdc,&bi,DIB_RGB_COLORS,(void**)&dibvalues,0,0); if (aBmp==0) { OutputDebugString("CreateDIBSection failed!\n"); return 0; } OldObj=SelectObject(hdc2,aBmp); BitBlt(hdc2,0,0,width,height,hdc,0,0,SRCCOPY); ZeroMemory(&bmfh,sizeof(BITMAPFILEHEADER)); bmfh.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmfh.bfSize=(3*bmih.biHeight*bmih.biWidth)+sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER); bmfh.bfType=0x4d42; bmfh.bfReserved1 = 0; bmfh.bfReserved2 = 0; count++; filename="hallo.bmp"; //memset(filename,'',count); //sprintf(filename,"test%d",count); fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL); if (fileHandle==INVALID_HANDLE_VALUE) { OutputDebugString("CreateFile failed!\n"); return 0; } // Write the BITMAPFILEHEADER bytes_write=sizeof(BITMAPFILEHEADER); if (!WriteFile(fileHandle,(void*)&bmfh,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); return 0; } //Write the BITMAPINFOHEADER bytes_write=sizeof(BITMAPINFOHEADER); if (!WriteFile(fileHandle,(void*)&bmih,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); return 0; } //Write the Color Index Array??? bytes_write=bmih.biSizeImage;//3*bmih.biHeight*bmih.biWidth; if (!WriteFile(fileHandle,(void*)dibvalues,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); return 0; } //VERBINDUNG UM SCREEN ZU SENDEN char buf[256]="hallo"; long rc; int port=5454; SOCKET sockets; SOCKET connection; SOCKADDR_IN addr; makeserversocket(&sockets); //send_to_server(char data[256],SOCKET *sockets,long *rc); connect_from_server_to_client(&addr,&rc,&sockets,0,&port); fprintf(files,"fileHandle=%d\n",sizeof(fileHandle)); fprintf(files,"gesendet=%d\n",send(sockets,(char *)fileHandle,1000,0)); CloseHandle(fileHandle); DeleteObject(SelectObject(hdc2,OldObj)); DeleteDC(hdc2); closesocket(connection); closesocket(sockets);
-
Du kannst natürlich nicht einfach den FileHandle von CreateFile nach (char
casten
Also du musst schon den Inhalt der Datei einlesen bzw. Im Prinzip bräuchtest du nicht einmal unbedingt das Bitmap in die Datei schreiben.Es sollte eigentlich funktionieren, wenn du die entsprechenden Buffer, die bisher in die Datei geschreiben werden an send übergibst
-
noch eine frage wieso macht desn screeshot von meinem desktop??
find des fehler net!!Des was reinkommt stimmt des weiß ichint screendumpver(BITMAPFILEHEADER *bmfh,BITMAPINFOHEADER *bmih,HWND hwnd) { HDC hdc2,hdc; HBITMAP aBmp; BITMAPINFO bi; HGDIOBJ OldObj; void *dibvalues; HANDLE fileHandle; DWORD bytes_write; DWORD bytes_written; hdc=GetDC(hwnd); hdc2=CreateCompatibleDC(hdc); char *filename; fprintf(filees,"HIER!\n"); fprintf(filees,"bmfh bfOffBits=%d, bmfh.bfSize=%d ,send_struct_one.bfType=%d,bmih.biBitCount=%d \n" ,bmfh->bfOffBits,bmfh->bfSize,bmfh->bfType,bmih->biBitCount); bi.bmiHeader=*bmih; aBmp=CreateDIBSection(hdc,&bi,DIB_RGB_COLORS,(void**)&dibvalues,0,0); if (aBmp==0) { OutputDebugString("CreateDIBSection failed!\n"); fprintf(filees,"CreateDIBSection failed!\n"); return 0; } OldObj=SelectObject(hdc2,aBmp); BitBlt(hdc2,0,0, bmih->biWidth,bmih->biHeight,hdc,0,0,SRCCOPY); //count++; filename="derdiedads.bmp"; //memset(filename,'',count); //sprintf(filename,"test%d",count); fileHandle=CreateFile(filename,GENERIC_READ | GENERIC_WRITE,(DWORD)0,NULL, CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL); if (fileHandle==INVALID_HANDLE_VALUE) { OutputDebugString("CreateFile failed!\n"); fprintf(filees,"CreateFile failed!\n"); return 0; } // Write the BITMAPFILEHEADER bytes_write=sizeof(BITMAPFILEHEADER); if (!WriteFile(fileHandle,(void*)bmfh,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); fprintf(filees,"WriteFile failed!\n"); return 0; } //Write the BITMAPINFOHEADER bytes_write=sizeof(BITMAPINFOHEADER); if (!WriteFile(fileHandle,(void*)bmih,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); fprintf(filees,"WriteFile failed!\n"); return 0; } //Write the Color Index Array??? bytes_write=bmih->biSizeImage;//3*bmih.biHeight*bmih.biWidth; if (!WriteFile(fileHandle,(void*)dibvalues,bytes_write,&bytes_written,NULL)) { OutputDebugString("WriteFile failed!\n"); fprintf(filees,"WriteFile failed!\n"); return 0; } fprintf(filees,"erfolgreich geklappt!\n"); }
-
gargamel schrieb:
find des fehler net!!Des was reinkommt stimmt des weiß ich
Könntest du das nochmal in normalem Deutsch wiederholen - ich versteh's nämlich nicht
-
ups ich schreib immer zu schnell
ich find den fehler nich der da drine is der macht nämlichn screenshot von meinem pc und genau des soller nich sonder von 192.168.0.2
ok jetzt verstanden???
-
Also willst du jetzt von einem fremden PC aus deinen Netzwerk einen Screenshot machen
Wenn dem so ist, müsstest du dazu den Screenshot direkt auf dem betreffenden PC erstellen und dann versenden
-
achso
und wieso???
-
wie willst du denn sonst an den Desktop eines fremden PCs kommen