PDA

View Full Version : مشکل در ارسال داده با تابع send در سوکت



abol_fa
چهارشنبه 07 مرداد 1394, 17:38 عصر
من یه برنامه کوچیک نوشتم که بعد از قبول کردن یه کانکشن باید یه متن رو برای طرف مقابل بفرسته
اما برنامه بعد از قبول کردن کانکشن هیچوقت چیزی نمیفرسته
اینم کدش:int main(int argc, char **argv){ int sockd,newsockd,status=0;
WSADATA ws;
WSAStartup(MAKEWORD(2, 2),&ws);
struct addrinfo hints, *res;
ZeroMemory(&hints, sizeof(hints));
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
cout<<getaddrinfo("127.0.0.1", "6164", &hints, &res)<<endl;
sockd = socket(res->ai_family, res->ai_socktype, res->ai_protocol);
cout<<"SOCKET NUMBER="<<sockd<<endl;
cout << "BIND STATUS=" << bind(sockd,res->ai_addr, res->ai_addrlen)<<endl;
status = listen(sockd, 16);
if (status >= 0){
cout << "Now Listening On Port 6164 TCP!"<<endl;
}
else{
return WSAGetLastError();
}
struct sockaddr_storage theirs;
newsockd=accept(sockd, (struct sockaddr*)&theirs,(socklen_t*) sizeof(theirs));
send(newsockd, "Hello!", 18, 0);
getchar();
return 0;
}

negative60
چهارشنبه 07 مرداد 1394, 19:56 عصر
تو اين کد اصلاً بروز خطا های احتمالی رو در نظر نگرفتيد
دوماً در تابع send پارامتر اول مربوط به شماره سوکت هست پارامتر دوم رشته مورد نظر پارامتر سوم اندازه طول رشته مورد نظر پارامتر چهارم هم مربوط به فلگ هست, پارامتر سوم رو شما 18 مشخص کرديد در صورتی که 6 بايد باشه.



char *strMessage = "Hello";
int isSend = send(newsockd, strMessage, strlen(strMessage), 0);
if(isSend > 0)
{
printf("ersal shod \n");
}else{
printf("ersal nashod! \n");
}