one hacker alone
جمعه 04 فروردین 1391, 02:29 صبح
سلام
من يه كلاينت سرور ساده نوشتم اما برنامه كلاينت تكي اجرا ميشه ولي وقتي سرور اجرا ميشه تابع connect كلاينت خطا ميگيره برنامه كجاش اشكال داره من روي يه سيستم امتحان كردم 127.0.0.1
كلاينت
// client1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <windows.h>
#include <winsock.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"Ws2_32.lib")
#define BUFFLEN 4096
int main(int argc, char* argv[])
{
int result;
SOCKET cntsock=INVALID_SOCKET;
struct sockaddr_in sockin;
char sendbuff[512]="salam";
char recvbuff[BUFFLEN]={0};
WSADATA w_data;
if(argc<2)
{
cout<<"Usage; name <ip address> <port number>";
return 1;
}
result=WSAStartup(MAKEWORD(2,2),&w_data);
if(result!=NO_ERROR)
{
cout<<"error";
return 1;
}
cntsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cntsock==INVALID_SOCKET)
{
cout<<"error";
WSACleanup();
return 1;
}
sockin.sin_addr.s_addr=inet_addr(argv[1]);
sockin.sin_family=AF_INET;
sockin.sin_port=htons(atoi(argv[2]));
result=connect(cntsock,(sockaddr*)&sockin,sizeof(sockin));
if(result==SOCKET_ERROR)
{
cout<<"connect error";
closesocket(cntsock);
WSACleanup();
return 1;
}
result=send(cntsock,sendbuff,(int)strlen(sendbuff) ,0);
if(result==SOCKET_ERROR)
{
cout<<"send error";
closesocket(cntsock);
WSACleanup();
return 1;
}
/*
result=shutdown(cntsock,SD_SEND);
if(result==SOCKET_ERROR)
{
cout<<"shutdown error";
closesocket(cntsock);
WSACleanup();
return 1;
}*/
do{
result=recv(cntsock,recvbuff,BUFFLEN,0);
if(result>0)
{
cout<<endl<<recvbuff;
ZeroMemory(recvbuff,BUFFLEN);
}
else if(result==0)
cout<<"Closed";
else
cout<<"recv Error";
}while(result>0);
closesocket(cntsock);
WSACleanup();
return 0;
}
سرور
// server1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <windows.h>
#include <winsock.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"Ws2_32.lib")
#define BUFFLEN 4096
int main(int argc, char* argv[])
{
int result,intlen;
SOCKET cntsock=INVALID_SOCKET;
struct sockaddr_in addr_clt;
char sendbuff[512]="salam";
char recvbuff[BUFFLEN]={0};
WSADATA w_data;
if(argc<2)
{
cout<<"Usage; name <ip address> <port number>";
return 1;
}
result=WSAStartup(MAKEWORD(2,2),&w_data);
if(result!=NO_ERROR)
{
cout<<"error";
return 1;
}
struct sockaddr_in addr_srv;
addr_srv.sin_addr.S_un.S_addr=INADDR_ANY;
addr_srv.sin_family=AF_INET;
addr_srv.sin_port=htons(atoi(argv[1]));
cntsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cntsock==INVALID_SOCKET)
{
cout<<"error";
WSACleanup();
return 1;
}
//result=bind(cntsock,&addr_srv,sizeof(addr_srv));
result=bind(cntsock,reinterpret_cast<const sockaddr*>(&addr_srv),sizeof(addr_srv));
if(result==SOCKET_ERROR)
{
cout<<"bind error";
WSACleanup();
return 1;
}
result=listen(cntsock,SOMAXCONN);
if(result==SOCKET_ERROR)
{
cout<<"error listen";
WSACleanup();
return 1;
}
intlen=sizeof(addr_clt);
result=accept(cntsock,reinterpret_cast<sockaddr*>( &addr_clt),&intlen);
//result=accept(cntsock,(sockaddr_in*)&addr_clt,&intlen);
if(result==INVALID_SOCKET)
{
cout<<"error accept";
WSACleanup();
return 1;
}
memset(recvbuff,'\0',BUFFLEN);
result=recv(cntsock,recvbuff,BUFFLEN,0);
if(result==SOCKET_ERROR)
{
cout<<"error recv";
WSACleanup();
return 1;
}
cout<<recvbuff;
closesocket(cntsock);
WSACleanup();
return 0;
}
من يه كلاينت سرور ساده نوشتم اما برنامه كلاينت تكي اجرا ميشه ولي وقتي سرور اجرا ميشه تابع connect كلاينت خطا ميگيره برنامه كجاش اشكال داره من روي يه سيستم امتحان كردم 127.0.0.1
كلاينت
// client1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <windows.h>
#include <winsock.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"Ws2_32.lib")
#define BUFFLEN 4096
int main(int argc, char* argv[])
{
int result;
SOCKET cntsock=INVALID_SOCKET;
struct sockaddr_in sockin;
char sendbuff[512]="salam";
char recvbuff[BUFFLEN]={0};
WSADATA w_data;
if(argc<2)
{
cout<<"Usage; name <ip address> <port number>";
return 1;
}
result=WSAStartup(MAKEWORD(2,2),&w_data);
if(result!=NO_ERROR)
{
cout<<"error";
return 1;
}
cntsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cntsock==INVALID_SOCKET)
{
cout<<"error";
WSACleanup();
return 1;
}
sockin.sin_addr.s_addr=inet_addr(argv[1]);
sockin.sin_family=AF_INET;
sockin.sin_port=htons(atoi(argv[2]));
result=connect(cntsock,(sockaddr*)&sockin,sizeof(sockin));
if(result==SOCKET_ERROR)
{
cout<<"connect error";
closesocket(cntsock);
WSACleanup();
return 1;
}
result=send(cntsock,sendbuff,(int)strlen(sendbuff) ,0);
if(result==SOCKET_ERROR)
{
cout<<"send error";
closesocket(cntsock);
WSACleanup();
return 1;
}
/*
result=shutdown(cntsock,SD_SEND);
if(result==SOCKET_ERROR)
{
cout<<"shutdown error";
closesocket(cntsock);
WSACleanup();
return 1;
}*/
do{
result=recv(cntsock,recvbuff,BUFFLEN,0);
if(result>0)
{
cout<<endl<<recvbuff;
ZeroMemory(recvbuff,BUFFLEN);
}
else if(result==0)
cout<<"Closed";
else
cout<<"recv Error";
}while(result>0);
closesocket(cntsock);
WSACleanup();
return 0;
}
سرور
// server1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream.h>
#include <windows.h>
#include <winsock.h>
#include <stdlib.h>
#include <string.h>
#pragma comment(lib,"Ws2_32.lib")
#define BUFFLEN 4096
int main(int argc, char* argv[])
{
int result,intlen;
SOCKET cntsock=INVALID_SOCKET;
struct sockaddr_in addr_clt;
char sendbuff[512]="salam";
char recvbuff[BUFFLEN]={0};
WSADATA w_data;
if(argc<2)
{
cout<<"Usage; name <ip address> <port number>";
return 1;
}
result=WSAStartup(MAKEWORD(2,2),&w_data);
if(result!=NO_ERROR)
{
cout<<"error";
return 1;
}
struct sockaddr_in addr_srv;
addr_srv.sin_addr.S_un.S_addr=INADDR_ANY;
addr_srv.sin_family=AF_INET;
addr_srv.sin_port=htons(atoi(argv[1]));
cntsock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cntsock==INVALID_SOCKET)
{
cout<<"error";
WSACleanup();
return 1;
}
//result=bind(cntsock,&addr_srv,sizeof(addr_srv));
result=bind(cntsock,reinterpret_cast<const sockaddr*>(&addr_srv),sizeof(addr_srv));
if(result==SOCKET_ERROR)
{
cout<<"bind error";
WSACleanup();
return 1;
}
result=listen(cntsock,SOMAXCONN);
if(result==SOCKET_ERROR)
{
cout<<"error listen";
WSACleanup();
return 1;
}
intlen=sizeof(addr_clt);
result=accept(cntsock,reinterpret_cast<sockaddr*>( &addr_clt),&intlen);
//result=accept(cntsock,(sockaddr_in*)&addr_clt,&intlen);
if(result==INVALID_SOCKET)
{
cout<<"error accept";
WSACleanup();
return 1;
}
memset(recvbuff,'\0',BUFFLEN);
result=recv(cntsock,recvbuff,BUFFLEN,0);
if(result==SOCKET_ERROR)
{
cout<<"error recv";
WSACleanup();
return 1;
}
cout<<recvbuff;
closesocket(cntsock);
WSACleanup();
return 0;
}