انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: مشکل با دستور bind در برنامه نویسی سوکت ( حل شد )  (دفعات بازدید: 3630 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین farsijava

  • Jr. Member
  • *
  • ارسال: 68
سلام
من می خوام برنامه نویسی شبکه رو یادبگیرم با سی. یه کد نوشتم ولی یه دستور bind که میرسه خطا می گیره. این دستور bind :
int result=bind(fd,(sockaddr *) &my_addr,sizeof(sockaddr));
این هم اروری که میده:
bind: Cannot assign requested address
پورتی هم که انتخاب کردم پورت 6000 هست
« آخرین ویرایش: 29 آبان 1387، 09:51 ق‌ظ توسط farsijava »

آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #1 : 27 آبان 1387، 09:50 ب‌ظ »
این لینک به کار ات می یاد؟
http://forum.ubuntu.ir/index.php/topic,5667.0.html
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین farsijava

  • Jr. Member
  • *
  • ارسال: 68
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #2 : 28 آبان 1387، 02:36 ب‌ظ »
ممنون
برنامه شما بدون ایراد اجرا شد ولی من از اول اومدم بنویسم اینجوری شده:
#include <sys/socket.h>
#include <sys/types.h>
#include <iostream>
#include <netint/in>
#include <string>

#define MYPORT 6000

using namespace std;

int main() {
//sockaddr_in my_addr;
int fd;
sockaddr_in my_addr;
if ((fd=socket(AF_INET,SOCK_DGRAM,0))==-1){
perror("socket");
return 0;
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.s_addr=htons(INADDR_ANY);
memset(&(my_addr.sin_zero),'\0',8);



return 0;
}
تو خط تعریف my_addr ایراد می گیره و خطا میده.
میگه اینجا جاش نیست ](*,)

آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #3 : 28 آبان 1387، 03:48 ب‌ظ »
لطفا خروجی ها ی ارور رو کامل بده
و قبل ش هدر ها تو بررسی کن. وقتی اشکال در تعریف یک متغیر باشه! یعنی نوع داده ایش تعریف نشده است.
برای سوکت هم نیازی ب  نصب کتابخانه ی خاصی نبود (اگر درست یادم باشه!! )
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین farsijava

  • Jr. Member
  • *
  • ارسال: 68
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #4 : 28 آبان 1387، 06:09 ب‌ظ »
هدر ها رو فکر می کنم همین ها هست و چیز دیگری نباید باشه حالا بعدا دورباره نگاه می کنم ولی خروجی این هست:
main.cpp:4:21: error: netint/in: No such file or directory
main.cpp: In function ‘int main()’:
main.cpp:13: error: ‘sockaddr_in’ was not declared in this scope
main.cpp:13: error: expected `;' before ‘my_addr’
main.cpp:18: error: ‘my_addr’ was not declared in this scope
main.cpp:19: error: ‘htons’ was not declared in this scope
main.cpp:20: error: ‘INADDR_ANY’ was not declared in this scope
main.cpp:21: error: ‘memset’ was not declared in this scope


آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #5 : 28 آبان 1387، 06:53 ب‌ظ »
خب ببین!‌الان ی هدر داری با ایم اسم #include <netint/in> که ظاهر ش هم یکمی مشکوک میزنه! هدر مروبط به چی هستش؟ پیشنهاد می کنم برای تست هم که شده کل هدر هات رو حذف و اونایی رو که روی پستم بود رو جایگزین کن. چون مشکل باید هدر ای باشه!
ثابت هایی مثل INADDR_ANY هم روی همین هدر هاست.
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین farsijava

  • Jr. Member
  • *
  • ارسال: 68
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #6 : 28 آبان 1387، 11:27 ب‌ظ »
سلام
بله با عوض کردن هدر ها با مال شما درست شد.
ولی هدرهای sockaddr_in مگه همین sys/sock و sys/types نیست؟
این هدر netinet/in هم اگر اشتباه نکنم مال inet_addr هست.
ممنون

آفلاین علیرضا طالقانی

  • High Hero Member
  • *
  • ارسال: 2373
  • جنسیت : پسر
  • القدس لنا، والنصر لنا!
    • Take it easy
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #7 : 29 آبان 1387، 06:56 ق‌ظ »
این یکی رو ارجاع میدم ات به رفرنس کدنویسی سوکت در لینوکس! ;) راستش زیاد یادم نمی مونه این نکات...
پوزش می طلب ام @};-
.ShayneIsTheOneWhoIsAlwaysAlone
terminal@world-server:~$ sudo aptitude remove --purge Israel

آفلاین farsijava

  • Jr. Member
  • *
  • ارسال: 68
پاسخ به: مشکل با دستور bind در برنامه نویسی سوکت
« پاسخ #8 : 29 آبان 1387، 09:51 ق‌ظ »
بازم ممنون
به هر حال کار ما که راه افتاد =;