bastionmancher
Mitglied
Hallo,
ich habe ein Netzwerkprogramm geschrieben, aber beim Linken kommen immer Fehlermeldungen, die ich nicht verstehe. Ich weiß auch nicht wo mein Fehler sein könnte.
Ich hoffe, dass ihr mir helfen könnt.
Hier mein Programm:
Hier die Fehlermeldungen:
ich habe ein Netzwerkprogramm geschrieben, aber beim Linken kommen immer Fehlermeldungen, die ich nicht verstehe. Ich weiß auch nicht wo mein Fehler sein könnte.
Ich hoffe, dass ihr mir helfen könnt.
Hier mein Programm:
Code:
#include<windows.h>
#include<winsock2.h>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
int startWinSock();
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MSG msg;
HWND hWnd;
WNDCLASS wc;
int fehler;
const char szAppName[]="chat 1";
wc.style=CS_HREDRAW|CS_VREDRAW|CS_NOCLOSE;
wc.lpfnWndProc=WndProc;
wc.cbClsExtra=0;
wc.cbWndExtra=0;
wc.hInstance=hInstance;
wc.hIcon=NULL;
wc.hCursor=LoadCursor(NULL, IDI_APPLICATION);
wc.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
wc.lpszMenuName=NULL;
wc.lpszClassName=szAppName;
fehler=RegisterClass(&wc);
if(fehler==0)
{
MessageBox(0, "Fehler bei RegisterClass()!", "Fehler", MB_ICONERROR|MB_OK);
return 1;
}
hWnd=CreateWindow(
szAppName,
szAppName,
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
NULL,
NULL,
hInstance,
NULL);
ShowWindow(hWnd, iCmdShow);
UpdateWindow(hWnd);
while(GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
SOCKET empfangsSocket;
SOCKET verbindungsSocket;
int fehler;
switch(message)
{
case WM_CREATE:
{
fehler=startWinSock();
if(fehler!=0)
{
return 1;
}
MessageBox(0, "WinSock gestartet!", "", MB_ICONASTERISK|MB_OK);
empfangsSocket=socket(AF_INET, SOCK_STREAM, 0);
if(empfangsSocket==INVALID_SOCKET)
{
return 1;
}
MessageBox(0, "Socket erstellt!", "", MB_ICONASTERISK|MB_OK);
SOCKADDR_IN adresse;
memset(&adresse, 0, sizeof(SOCKADDR_IN));
adresse.sin_family=AF_INET;
adresse.sin_port=htons(12345);
adresse.sin_addr.s_addr=ADDR_ANY;
fehler=bind(empfangsSocket, (SOCKADDR*)&adresse, sizeof(SOCKADDR_IN));
if(fehler==SOCKET_ERROR)
{
return 1;
}
MessageBox(0, "Socket an Port 12345 gebunden!", "", MB_ICONASTERISK|MB_OK);
fehler=listen(empfangsSocket, 10);
if(fehler==SOCKET_ERROR)
{
return 1;
}
MessageBox(0, "empfangsSocket ist im listen Modus...", "", MB_ICONASTERISK|MB_OK);
UpdateWindow(hWnd);
verbindungsSocket=accept(empfangsSocket, 0, 0);
if(verbindungsSocket==INVALID_SOCKET)
{
return 1;
}
MessageBox(0, "Neue Verbindung wurde akzeptiert!", "", MB_ICONASTERISK|MB_OK);
char nachricht[1002];
while(fehler!=SOCKET_ERROR)
{
fehler=recv(verbindungsSocket, nachricht, 1000, 0);
if(fehler==0)
break;
if(fehler==SOCKET_ERROR)
break;
if(nachricht=="close.window.now")
break;
nachricht[fehler]='\0';
MessageBox(0, nachricht, "", MB_ICONASTERISK|MB_OK);
}
closesocket(empfangsSocket);
closesocket(verbindungsSocket);
WSACleanup();
return 0;
}
}
return DefWindowProc(hWnd, message, wParam, lParam);
}
int startWinSock()
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2, 0), &wsa);
}
Hier die Fehlermeldungen:
Code:
C:\C++\netzwerk>g++ -c winappserver.cpp -mwindows
C:\C++\netzwerk>g++ -o winappserver c:\c++\mingw\lib\libws2_32.a winappserver.o
-mwindows
winappserver.o:winappserver.cpp:(.text+0x246): undefined reference to `socket@12
'
winappserver.o:winappserver.cpp:(.text+0x2b5): undefined reference to `htons@4'
winappserver.o:winappserver.cpp:(.text+0x2dd): undefined reference to `bind@12'
winappserver.o:winappserver.cpp:(.text+0x332): undefined reference to `listen@8'
winappserver.o:winappserver.cpp:(.text+0x39d): undefined reference to `accept@12
'
winappserver.o:winappserver.cpp:(.text+0x40e): undefined reference to `recv@16'
winappserver.o:winappserver.cpp:(.text+0x47a): undefined reference to `closesock
et@4'
winappserver.o:winappserver.cpp:(.text+0x488): undefined reference to `closesock
et@4'
winappserver.o:winappserver.cpp:(.text+0x490): undefined reference to `WSACleanu
p@0'
winappserver.o:winappserver.cpp:(.text+0x4ef): undefined reference to `WSAStartu
p@8'
collect2: ld returned 1 exit status