dyma82
asked on
Trying to open a connection socket
This is the code I am using to try to open a socket using
win32 APIs :
#include <Winsock2.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char url[14];
SOCKET socket;
SOCKADDR_IN ip_addrs;
int connResult = 0;
//Setting up the IP Address structure
ip_addrs.sin_family = SOCK_STREAM;
ip_addrs.sin_port = 25;
ip_addrs.sin_addr.S_un.S_u n_b.s_b1 = 189;
ip_addrs.sin_addr.S_un.S_u n_b.s_b2 = 136;
ip_addrs.sin_addr.S_un.S_u n_b.s_b3 = 145;
ip_addrs.sin_addr.S_un.S_u n_b.s_b4 = 10;
printf("Starting mail application \n");
printf("Name length = %d\n",sizeof(ip_addrs));
connResult = connect(socket,(sockaddr*) &ip_addrs, sizeof(ip_ addrs));
if(connResult==0) printf("Connection OK...!\n");
else printf("Connection Failed...!!!\n");
return 0;
}
I think everything is ok. However, compilation fails and throws the following error :
Linking...
MainBlock.obj : error LNK2001: unresolved external symbol __imp__connect@12
Debug/MyMail2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
MyMail2.exe - 2 error(s), 2 warning(s)
Any idea what could be happening? If not, please would you
let me know how to open a socket connection using win32 APIs?
NOT MFC PLEASE!
Thanks a lot for your time.
win32 APIs :
#include <Winsock2.h>
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[])
{
char url[14];
SOCKET socket;
SOCKADDR_IN ip_addrs;
int connResult = 0;
//Setting up the IP Address structure
ip_addrs.sin_family = SOCK_STREAM;
ip_addrs.sin_port = 25;
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
printf("Starting mail application \n");
printf("Name length = %d\n",sizeof(ip_addrs));
connResult = connect(socket,(sockaddr*)
if(connResult==0) printf("Connection OK...!\n");
else printf("Connection Failed...!!!\n");
return 0;
}
I think everything is ok. However, compilation fails and throws the following error :
Linking...
MainBlock.obj : error LNK2001: unresolved external symbol __imp__connect@12
Debug/MyMail2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
MyMail2.exe - 2 error(s), 2 warning(s)
Any idea what could be happening? If not, please would you
let me know how to open a socket connection using win32 APIs?
NOT MFC PLEASE!
Thanks a lot for your time.
ASKER
Is not enough to "#include <Winsock2.h>" ?????
Do I still have to include the statement #pragma comment ( lib, "ws2_32.lib") ????
Do I still have to include the statement #pragma comment ( lib, "ws2_32.lib") ????
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Thanks. That was the problem, but I would have understand it better if you would have told me that your solution meant to add the library Ws2_32.lib in the linker's path.
Any way thanks a million again.
p.s. You guys are doing a terrific job!
Any way thanks a million again.
p.s. You guys are doing a terrific job!
#pragma comment ( lib, "ws2_32.lib")
to your code. Furthermore, you need to call 'WSAStartup()' before using sockets, e.g.
#include <Winsock2.h>
#include <string.h>
#include <stdio.h>
#pragma comment ( lib, "ws2_32.lib")
int main(int argc, char* argv[])
{
char url[14];
SOCKET socket;
SOCKADDR_IN ip_addrs;
int connResult = 0;
int nErr = 0;
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 1, 1);
if ( nErr = WSAStartup ( wVersionRequested, &wsaData))
{
printf ( "\nunable to initialize WINSOCK, reason: %d\n",
nErr
);
exit ( 0);
}
//Setting up the IP Address structure
ip_addrs.sin_family = SOCK_STREAM;
ip_addrs.sin_port = 25;
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
ip_addrs.sin_addr.S_un.S_u
printf("Starting mail application \n");
printf("Name length = %d\n",sizeof(ip_addrs));
connResult = connect(socket,(sockaddr*)
if(connResult==0) printf("Connection OK...!\n");
else printf("Connection Failed...!!!\n");
return 0;
}