python_85
دوشنبه 12 مرداد 1388, 14:51 عصر
سلام
من یک هدر با سی داشتم که برای ارتباط با سرور از اون استفاده می کردم
این هدر از کتابخونه sys/socket.h
استفاده می کرد
حالا اومدم تما ماین هدر رو وارد یک کلاس کردم
ولی وقتی تابع connect
رو برای برقرار کردن ارتباط صدا می زنم برنامه خطا می ده و اجرا نمی شه
خطا هم اینه:
error: no matching function for call to ‘myclass::connect(int&, sockaddr*, unsigned int)’ولی وقتی تابع bind
رو که از نظر بارامتر ورودی مثل connect هست رو استفاده می کنم هیچ خطایی نمی ده و برنامه اجرا می شه
این هم تابع :
int myclass::OpenPort()
{
// error("Passed step 1");
server = gethostbyname(hostname);
if(server == NULL)
{
error("ERROR, no such host\n");
return 0;
}
else
{
// error("Passed step 2");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
serv_addr.sin_port = htons(portno);
// error("Passed step 3");
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
error("ERROR opening socket");
return 0;
}
// error("Passed step 4");
//socklen_t mm=sizeof(serv_addr);
//if(connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) <0)
//{
//error("ERROR Connection");
//return 0;
//}
int res=0;
try
{
res= bind(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr));//connect(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr));
}
catch(int errnumber)
{
res= 0;
}
return res;
}
}
نمی دونم ایراد از کجاست؟
راستی فرق bind با connect چی هست؟
من یک هدر با سی داشتم که برای ارتباط با سرور از اون استفاده می کردم
این هدر از کتابخونه sys/socket.h
استفاده می کرد
حالا اومدم تما ماین هدر رو وارد یک کلاس کردم
ولی وقتی تابع connect
رو برای برقرار کردن ارتباط صدا می زنم برنامه خطا می ده و اجرا نمی شه
خطا هم اینه:
error: no matching function for call to ‘myclass::connect(int&, sockaddr*, unsigned int)’ولی وقتی تابع bind
رو که از نظر بارامتر ورودی مثل connect هست رو استفاده می کنم هیچ خطایی نمی ده و برنامه اجرا می شه
این هم تابع :
int myclass::OpenPort()
{
// error("Passed step 1");
server = gethostbyname(hostname);
if(server == NULL)
{
error("ERROR, no such host\n");
return 0;
}
else
{
// error("Passed step 2");
bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *)server->h_addr,(char *)&serv_addr.sin_addr.s_addr,server->h_length);
serv_addr.sin_port = htons(portno);
// error("Passed step 3");
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
error("ERROR opening socket");
return 0;
}
// error("Passed step 4");
//socklen_t mm=sizeof(serv_addr);
//if(connect(sockfd,(struct sockaddr *) &serv_addr,sizeof(serv_addr)) <0)
//{
//error("ERROR Connection");
//return 0;
//}
int res=0;
try
{
res= bind(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr));//connect(sockfd, (struct sockaddr *) &serv_addr,sizeof(serv_addr));
}
catch(int errnumber)
{
res= 0;
}
return res;
}
}
نمی دونم ایراد از کجاست؟
راستی فرق bind با connect چی هست؟