OVH Cloud OVH Cloud

probleme de linkage dans winsock.h

4 réponses
Avatar
j ai des problemes aux linkages

les fonctions unix ne sont pas reconnues

je ne connais pas l api win

je fais mon code petit à petit



#include <windows.h>

#include <stdio.h>

#include <winsock2.h>

#include <stdlib.h>

#include <string.h>

#define PARTY_PORT 25

#define PARTY_LINE "193.252.22.74"



int main(int argc, char *argv[])

{

long RetCode = 0;

WSADATA wsaData;

SOCKET sock;

struct sockaddr_in sock_addr;

int new_sock_addr_len;

long bytes;

char *buf;

char *text;

int port = 25;



if (argc<2)

{

exit(1);

}

RetCode = WSAStartup(0x0101, &wsaData);

if (RetCode != 0)

{

printf ("\nError in DLL initialization %d", RetCode);

return (1);

}



// Creating Udp Socket

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)

{

printf ("\nError creating socket - %d", WSAGetLastError());

return (1);

}



if (!port)

port = PARTY_PORT;



sock_addr.sin_family = AF_INET;

sock_addr.sin_addr.s_addr = inet_addr (PARTY_LINE);

sock_addr.sin_port = PARTY_PORT;


WSACleanup();

}

4 réponses

Avatar
Christian ASTOR
wrote:

j ai des problemes aux linkages

les fonctions unix ne sont pas reconnues

je ne connais pas l api win

je fais mon code petit à petit



#include <windows.h>

#include <stdio.h>

#include <winsock2.h>



winsock2.h doit être avant windows.h
Avatar
adebaene
wrote:
j ai des problemes aux linkages

les fonctions unix ne sont pas reconnues



C'est quoi le message d'erreur exactement? Winsock2 se trouve dans la
librairie Ws2_32.dll (il faut se lier à Ws2_32.lib)

Arnaud
MVP - VC
Avatar
Dominique Vaufreydaz
Bonjour,

winsock2.h doit être avant windows.h



Ca marche pas tout le temps (j'ai eu un blem avec une library sur laquelle
je n'avais pas la main).

BRef: on peut aussi faire :
#define _WINSOCKAPI_ /* Prevent inclusion of winsock.h in windows.h */
#include <windows.h>
#include <winsock2.h>

On empeche la premiere version de s'inclure et on inclut la seconde.

Doms.
Avatar
john.swilting
wrote:


wrote:
j ai des problemes aux linkages

les fonctions unix ne sont pas reconnues



C'est quoi le message d'erreur exactement? Winsock2 se trouve dans la
librairie Ws2_32.dll (il faut se lier à Ws2_32.lib)

Arnaud
MVP - VC


est il faut changer quoi dans le code parce ce que le code linux que voici
ne compile pas

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <unistd.h>
#include <string.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <sys/socket.h>

#define DEBUG 0

#define PACKET_SIZE 1024

int to_server_socket;
int main(void){
void appli(void);
char server_name[] = "smtp.wanadoo.fr";
int port = 25;
struct sockaddr_in serverSockAddr;
struct hostent *serverHostEnt;
unsigned long hostAddr;

bzero(&serverSockAddr,sizeof(serverSockAddr));
hostAddr = inet_addr(server_name);
if ((long)hostAddr != (long)-1)
bcopy(&hostAddr,&serverSockAddr.sin_addr,sizeof(hostAddr));
else
{
serverHostEnt = gethostbyname(server_name);

bcopy(serverHostEnt->h_addr,&serverSockAddr.sin_addr,serverHostEnt->h_length);

serverSockAddr.sin_port = htons (port);
serverSockAddr.sin_family = AF_INET;

if ( (to_server_socket = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
;
}
if (connect(to_server_socket,(struct sockaddr
*)&serverSockAddr,sizeof(serverSockAddr)) < 0 )
{
;
}

appli();
shutdown(to_server_socket,2);
close (to_server_socket);
}
}
void appli(void){
char helo[] = "EHLO localhost.localdomainn";
char from[] = "MAIL FROM: n";
char to[] = "RCPT TO: n";
char buf[PACKET_SIZE+1];
read(to_server_socket,buf,PACKET_SIZE);
write(to_server_socket,helo,strlen(helo));
read(to_server_socket,buf,PACKET_SIZE);
write(to_server_socket,from,strlen(from));
write(to_server_socket,to,strlen(to));
read(to_server_socket,buf,PACKET_SIZE);
write(to_server_socket,"DATA n",6);
read(to_server_socket,buf,PACKET_SIZE);
write(to_server_socket,"rn.rn",5);
}