D
djtraumwelt
Foren As
Ich habe eine Datei geöffnet mit:
danach versuche ich aus der datei zu lesen mit:
fp ist nicht 0 und auch nicht -1, aber bytes ist immer 0. Warum?
Hier nochmal der komplette Code (ist aber Win):
Code:
fp=fopen(filename,"rb");
Code:
bytes=fread(buffer,1,1000,fp);
Hier nochmal der komplette Code (ist aber Win):
Code:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <winsock2.h>
HINSTANCE hInst;
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);
DWORD WINAPI serverfunc (LPVOID);
WSADATA wsa;
HANDLE Hserver;
HWND glob;
int endsig=0;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR CmdLine, int nCmdShow) {
MSG msg;
BOOL bRet;
hInst=hInstance;
HWND hWnd;
int xwin=0;
int ywin=0;
char winclass[] = "Fensterklasse";
WNDCLASS wc;
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wc.hCursor = LoadCursor (NULL, IDC_ARROW);
wc.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH);
wc.lpszMenuName = NULL;
wc.lpszClassName = winclass;
RegisterClass (&wc);
xwin=GetSystemMetrics(SM_CXSCREEN);
ywin=GetSystemMetrics(SM_CYSCREEN);
xwin /= 2;
xwin -= 200; //400 Breit
ywin /= 2;
ywin -= 50; //100 Hoch
hWnd = CreateWindow (winclass, "WG-Com 1=Alex 2=Ricky 3=Boris", WS_OVERLAPPEDWINDOW, xwin, ywin, 400, 100, NULL, NULL, hInstance, NULL);
glob=hWnd;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
while( (bRet = GetMessage(&msg, NULL, 0, 0)) != 0) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc (HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam) {
HDC hdc;
PAINTSTRUCT ps;
RECT crect, wrect;
int xdiff;
int ydiff;
char rmsg[100];
SOCKET sock;
SOCKADDR_IN addr;
OPENFILENAME ofn;
char filter[100];
char filename[260];
char filetitle[200];
char buffer[1024];
FILE *fp;
size_t bytes;
if (msg == WM_CREATE) {
GetWindowRect(hWnd,&wrect);
GetClientRect(hWnd,&crect);
xdiff=(wrect.right - wrect.left) - crect.right;
ydiff=(wrect.bottom - wrect.top) - crect.bottom;
wrect.left=wrect.left - (xdiff / 2);
wrect.top=wrect.top - (ydiff / 2);
xdiff += 400;
ydiff += 100;
MoveWindow(hWnd,wrect.left,wrect.top,xdiff,ydiff,TRUE);
WSAStartup(MAKEWORD(2,0),&wsa);
Hserver=CreateThread(NULL,0,serverfunc,NULL,0,NULL);
}
if (msg == WM_KEYDOWN) {
if (wParam >= 49 && wParam <= 51) {
ofn.lStructSize=sizeof(OPENFILENAME);
ofn.hwndOwner=hWnd;
filter[0]='*';
filter[1]=0;
filter[2]='*';
filter[3]='.';
filter[4]='*';
filter[5]=0;
filter[6]=0;
ofn.lpstrFilter=filter;
ofn.lpstrCustomFilter=NULL;
ofn.nFilterIndex=0;
filename[0] = 0;
ofn.lpstrFile=filename;
ofn.nMaxFile=260;
ofn.lpstrFileTitle=filetitle;
ofn.nMaxFileTitle=200;
ofn.lpstrInitialDir=NULL;
ofn.lpstrTitle=NULL;
ofn.Flags=OFN_EXPLORER;
ofn.lpstrDefExt=NULL;
GetOpenFileName(&ofn);
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(5800);
if (wParam == 49)
addr.sin_addr.s_addr=inet_addr("192.168.2.101");
if (wParam == 50)
addr.sin_addr.s_addr=inet_addr("192.168.2.102");
if (wParam == 51)
addr.sin_addr.s_addr=inet_addr("192.168.2.100");
sock=socket(AF_INET,SOCK_STREAM,0);
if (connect(sock,(SOCKADDR*)&addr,sizeof(SOCKADDR))==SOCKET_ERROR) {
MessageBox(hWnd,"Konnte nicht connecten.","Error",MB_OK);
closesocket(sock);
return 0;
}
send(sock,filetitle,200,0);
recv(sock,rmsg,3,0);
fp=fopen(filename,"rb");
sprintf(rmsg,"%d",fp);
MessageBox(hWnd,rmsg,"fp",MB_OK);
while(1) {
bytes=fread(buffer,1,1000,fp);
//send(sock,buffer,1000,0);
sprintf(rmsg,"%d bytes read",bytes),
MessageBox(hWnd,rmsg,"Filename",MB_OK);
if (bytes==0)
break;
}
fclose(fp);
closesocket(sock);
}
}
if (msg == WM_PAINT) {
hdc=BeginPaint(hWnd,&ps);
EndPaint(hWnd,&ps);
return 0;
}
if (msg == WM_CLOSE) {
endsig=1;
WSACleanup();
}
if (msg == WM_DESTROY) {
PostQuitMessage(0);
return 0;
}
return DefWindowProc(hWnd,msg,wParam,lParam);
}
DWORD WINAPI serverfunc (LPVOID var) {
SOCKET acceptsock, consock;
SOCKADDR_IN addr;
char buffer[1024];
FILE *fp;
int bytes;
acceptsock=socket(AF_INET,SOCK_STREAM,0);
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(5800);
addr.sin_addr.s_addr=ADDR_ANY;
bind(acceptsock,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
while(endsig==0) {
listen(acceptsock,10);
consock=accept(acceptsock,NULL,NULL);
if (consock >= 1) {
recv(consock,buffer,1023,0);
fp=fopen(buffer,"wb");
sprintf(buffer,"OK");
send(consock,buffer,3,0);
while(bytes=recv(consock,buffer,1023,0) >= 1) {
fwrite(buffer,1,bytes,fp);
}
fclose(fp);
closesocket(consock);
}
}
closesocket(acceptsock);
ExitThread(0);
return 0;
}