PDA

View Full Version : خطاي تبديل نوع در اين برنامه سرور؟



one hacker alone
چهارشنبه 02 فروردین 1391, 08:29 صبح
با ياد خدا
عيد همگي مبارك

من قبلا تو لينوكس نوشتم مشكلي نداشتم اما تو ويندوز گيرميده ميشه بگين مشكل از كجاست

// 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));
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,(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;
}



اين خطا رو ميده

F:\a Socket Project\server1\server1.cpp(41) : error C2664: 'bind' : cannot convert parameter 2 from 'struct sockaddr_in *' to 'const struct sockaddr *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
F:\a Socket Project\server1\server1.cpp(56) : error C2664: 'accept' : cannot convert parameter 2 from 'struct sockaddr_in *' to 'struct sockaddr *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast


دو تا تابعي كه گير ميده رو با حالات مختلف پارامتري كردم اما جواب نداد كامپايلر هم MS vc++

one hacker alone
چهارشنبه 02 فروردین 1391, 22:47 عصر
ممنون آقا من اين reinterpret_cast رو تو هيچ كدي نديده بودم ميشه يكم توضيح بدين كه درد اين برنامه چي بود و شما چكار كردين؟