PDA

View Full Version : سوال: مشکل این برنامه تحت شبکه چیه؟



one hacker alone
دوشنبه 21 آذر 1390, 11:00 صبح
با یاد خدا
سلام دوستان عزیز
این قطعه کد در تابع ' bind خطا میده میخواستم بدونم مشکل کجاست؟
و در ضمن اگه امکان داره در مورد پارامتره های ارسالی به این تابع یه خورده توضیح بدین( دستورات بکارت رفته)


#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MYPORT 3490
main()
{
int sockfd,state;
struct sockaddr{
unsigned short sa_family;//address Family AF_XXX
char sa_data[14];//14 bytes of rotocol address
};
struct sockaddr_in{
short int sin_family;//address family
unsigned short int sin_port;//port number
struct in_addr sin_addr;//internet affress
unsigned char sin_zero[8];//same size as struct sockaddr
};
struct sockaddr_in my_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
printf("%d",sockfd);
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.s_addr=inet_addr("10.12.110.57");
memset(&(my_addr.sin_zero),'\0',8);

state=bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr));
printf("bind=%d",state);
return 0;
}

اینم پیغام خطا




socket1.c: In function ‘main’:
socket1.c:29:62: warning: passing argument 2 of ‘bind’ from incompatible pointer type [enabled by default]
/usr/include/sys/socket.h:115:12: note: expected ‘const struct sockaddr *’ but argument is of type ‘struct sockaddr *’



از GCC 4.5 تو لینوکس استفاده میکنم

patepate
سه شنبه 22 آذر 1390, 09:46 صبح
اول باید خط 8 را اصلاح کنی.

int main();
دوم باید bind رو به c معرفی کنی . یعنی تعریف کنی که از چه نوع است . مثلا int - void -bool-و غیره.
می تونی ای جوری تعریف کنی

int sockfd,state,bind;
سوم هم فکر کنم دستور printf رو اشتباه نوشتی خودت اصلاحش کن.

one hacker alone
سه شنبه 22 آذر 1390, 11:32 صبح
دوست عزیز مشکل تابع main نیست و اون زیاد مهم نیست من با ارگومان های تابع bind مشکل دارم و در مورد اینکه شما میگی باید bind رو تعریف کنی اینجوری نیست چون توابع قبلا تعریف شدن و من الان دارم از اونا استفاده میکنم اگه به اون بود که باید به sockfd و... هم گیر میداد در صورتی که اینطور نیست
به پارامتر های bind گیر میده اونم نمیدونم چکار کنم