Lorsque je link ce server TCP/IP avec Visual C++ 6.0 j'ai les erreurs de link suivante :
--------------------Configuration: all - Win32 Debug--------------------
Linking...
all.obj : error LNK2001: unresolved external symbol _recvfrom@24
all.obj : error LNK2001: unresolved external symbol _sendto@24
all.obj : error LNK2001: unresolved external symbol _inet_addr@4
all.obj : error LNK2001: unresolved external symbol _htons@4
all.obj : error LNK2001: unresolved external symbol _WSAGetLastError@0
all.obj : error LNK2001: unresolved external symbol _socket@12
all.obj : error LNK2001: unresolved external symbol _WSAStartup@8
Debug/all.exe : fatal error LNK1120: 7 unresolved externals
Error executing link.exe.
all.exe - 8 error(s), 0 warning(s)
j'ai pourtant ajouté les librairies wsock32.lib et ws2_32.lib pour le link...
Voici le code :
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "ws2_32.lib")
#include "stdafx.h"
#include <sys/types.h>
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <conio.h>
//Prototypen
int startWinsock(void);
int main()
{
long rc;
SOCKET s;
char buf[256];
SOCKADDR_IN addr;
SOCKADDR_IN remoteAddr;
int remoteAddrLen=sizeof(SOCKADDR_IN);
rc=startWinsock();
if(rc!=0)
{
printf("Fehler: startWinsock, fehler code: %d\n",rc);
getch();
return 1;
}
else
{
printf("Winsock gestartet!\n");
} //UDP Socket erstellen
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
getch();
return 1;
}
else
{
printf("UDP Socket erstellt!\n");
} // addr vorbereiten
addr.sin_family=AF_INET;
addr.sin_port=htons(5999);
addr.sin_addr.s_addr=inet_addr("127.0.0.1");
while(true)
{
printf("Text eingeben: ");
gets(buf);
rc=sendto (s,buf,strlen(buf),0,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
if(rc==SOCKET_ERROR)
{
printf("Fehler: sendto, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("%d Bytes gesendet!\n", rc);
}
rc=recvfrom(s,buf,256,0,(SOCKADDR*)&remoteAddr,&remoteAddrLen);
if(rc==SOCKET_ERROR)
{
printf("Fehler: recvfrom, fehler code: %d\n",WSAGetLastError());
getch();
return 1;
}
else
{
printf("%d Bytes empfangen!\n", rc);
buf[rc]='\0';
printf("Empfangene Daten: %s\n",buf);
}
}
}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
Merci pour votre aide !