نمایش نتایج 1 تا 4 از 4

نام تاپیک: استفاده از کتابخانه socket.h

  1. #1

    استفاده از کتابخانه socket.h

    سلام
    من یک هدر با سی داشتم که برای ارتباط با سرور از اون استفاده می کردم
    این هدر از کتابخونه 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 چی هست؟

  2. #2

    نقل قول: استفاده از کتابخانه socket.h

    امضای لیست آرگومان های ارسالی به تابع connect با پارامتر های دریافتی در این تابع یکسان نیستند. بهتر بود کد تابع connect را هم ذکر می کردید.

  3. #3

    نقل قول: استفاده از کتابخانه socket.h

    سلام
    خیلی ممنون
    آره میدونم خطا از بارامترهای ورودی هست برا همین هم میگم که عجیب اینه که تابع bind که از نظر امضا عین connect هست رو ایراد نمی گیره
    تابع connect جزی از کتابخونه sys/socket.h باید باشه
    extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
    extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
    __THROW;
    راستی این __THROW که آخر تابع بایند نوشته چیه؟

  4. #4

    نقل قول: استفاده از کتابخانه socket.h

    سلام خسته نباشيد
    كدنويسي وبرنامهSOCKETونخ باتوضيحات كامل كدنويسي بازبان بيسيك وتاريخچه وتوضيح زياد درموردسوكت ونخ براي مقاله ام لازم دارم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •