My srever software:-
#include<windows.h>
#include<iostream>
#include<winsock2.h>
#include<conio.h>
int main()
{
WSAData wsadata;
if (WSAStartup(MAKEWORD(2,0),&wsadata)!=0)
{std::cout<< "winsock startup failed\n"<< WSAGetLastError();
WSACleanup();
return -1;
}
std::cout<< "winsock startup is succes\n";
SOCKET servsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(servsock ==INVALID_SOCKET)
{std::cout<< "socket init failed\n";
WSACleanup();
return -1;
}
std::cout<< "socket init\n";
sockaddr_in sin;
sin.sin_port=htons(80);
sin.sin_addr.s_addr=INADDR_ANY;
sin.sin_family=AF_INET;
if (bind(servsock,(sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
{std::cout<< "FAILED TO BIND"<< WSAGetLastError();
WSACleanup();
return -1;
}
std::cout<< "Bind successful!\n";
//WSACleanup();
//while (listen(servsock,1)==SOCKET_ERROR);
SOCKET b=listen(servsock,1);
if (b==SOCKET_ERROR)
{
std::cout<< "error"<< WSAGetLastError();
getch();
return 0;
}
else
//int client;
{int len = sizeof(sin);
SOCKET client=accept( servsock,(sockaddr*)&sin,&len);
if (client==SOCKET_ERROR)
{
std::cout<< "error"<< WSAGetLastError();
}
//SOCKET client;
// while(client=accept( servsock,(sockaddr*)&sin,&len)==SOCKET_ERROR)
std::cout<< "Connection established!\n";
closesocket(client);
closesocket(servsock);
WSACleanup();
getch();
return 0;
}
}
One of my IRC friend said that my server software is terminating the accept() function quickly so my client software was giving socket init failed inspite of the fact that server software was giving "connection established ".What i am interpreting from this is that the accept() function of the server software is not returning SOCKET_ERROR otherwise it would not have given "connection established " because my accept function is in "if" statement.But if i keep my Accept function within the while statement (lines 48 and 49)my server software gives bind successful and stops and seems as if goes into an infinite loop or something
.
My client softeware :-
#include<windows.h>
#include<iostream>
#include<winsock2.h>
#include<conio.h>
//#include<stdio.h>
int main()
{
WSAData wsadata;
if(WSAStartup(MAKEWORD(2,0),&wsadata)!=0)
{
std::cout<< "1:(startup failed\n"<< WSAGetLastError();
WSACleanup();
return -1;
}
else
{
std::cout<< "2Socket Init Success\n";
}
SOCKET mysock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(mysock==INVALID_SOCKET )
{
std::cout<< "3:(Socket Init Failed\n";
WSACleanup();
return -1;
}
else
{
std::cout<< "4Socket Init Success\n";
sockaddr_in sin;
sin.sin_port=htons(80);
sin.sin_addr.s_addr=inet_addr("127.0.0.1");
sin.sin_family=AF_INET;
// if (connect(mysock,(sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
//{std::cout<< "5:(Socket Init FAiled\n"<< WSAGetLastError();
// getch();
//WSACleanup();
// getch();
//return -1;
//}
int a=connect(mysock,(sockaddr*)&sin,sizeof(sin));
if(a=SOCKET_ERROR)
{std::cout<< "5Socket Init FAiled\n"<< WSAGetLastError();
//getch();
WSACleanup();
//return -1;
getch();
//return 0;
}
else
std::cout<< "connection sucessful";
closesocket(mysock);
getch();
return 0;
}
}
<b>My client software is giving an output of "Socket Init FAiled"and in place of WSAGetLastError() it is giving error "0".i reffered to msdn there is no such thing as error 0</b>
Edited by WingedPanther, 30 June 2008 - 01:39 PM.
add code tags


Sign In
Create Account


Back to top









