السلام عليكم ورحمة الله وبركاته
عندي مجموعة من الأسئلة وهي خفيفة جدا ولكن محيرة بالنسبة لي:
*************************************
السؤال الأول: مرت علي هذه المكتبات في إحدى البرامج (open source) وحبيت أعرف نبذة عنها:
#include <arpa/inet.h>
#include <fcntl.h>
#include <pthread.h>
ممكن نبذه عنها أو روابط عنها .
السؤال ثاني:
اقتباسvoid send_file(int,int);
واضحة بالنسبة لي. :)
void parsing_request(int,char *);
لماذا النجمة اللتي بجانب char ? :blink:
void *handle(void *);
اشرحوا السطر هذا شرح مفصل الله يخليكم :lol: لإني شايف إنه النجمات عامل قلق بالنسبة لي. :(
void create_socket(int);
ياسلام سلم على البساطة. :D
السؤال الثالث:(ب5000 ريال) :P
port = atoi(argv[1]);
لماذا استعمل هذه الدالة .. ألا يمكنه تعين الargv[1[ من غير دالة atoi?
ملاحظة:
أعتقد أنه حول رقم البورت من "21" (string) إلى رقم int وهو 21
صح؟ ;)
السؤال رابع:
pthread_t thread;
هذه أعتقد إنها تابعة إلى المكتبة (pthread.h) وراح تكرر أسألتي حولها
لإني لا أعلم عنها شيئا
struct sockaddr_in servAddr,clieAddr;
واضحة وضوح الشمس
ولكن
memset(&servAddr,0,sizeof(servAddr)); servAddr.sin_family=AF_INET; servAddr.sin_addr.s_addr=htonl(INADDR_ANY); servAddr.sin_port=htons(port);
أعتقد إنكم لاحظتم أول سطر وهو:
memset(&servAddr,0,sizeof(servAddr));
وش الفايدة منها؟
أنا أظن إنه لتعيين القيمة صفر لكل من servAddr.sin_port و servAddr.sin_addr ووو... صح؟
السؤال الخامس:
if(bind(listenfd,(SA *)&servAddr,sizeof(servAddr))<0)
{
printf("Error : Cannot bind IP and port.\n");
exit(-1);
}
هالحين الموجود في أول البرنامج(خارج الmain) هو السطر هذا:
#define SA struct sockaddr
ولكن لماذا لما كتبناها داخل الmain بالنجمة ؟ ألا يجب علينا كتبابتها مثل:
if(bind(listenfd,(SA )&servAddr,sizeof(servAddr))<0)
{
printf("Error : Cannot bind IP and port.\n");
exit(-1);
}
السؤال السادس:
pthread_create(&thread,NULL,handle,(void *)connfd); pthread_join(thread,NULL);
هذه اللي لا أعلم عنها شيئا(وأريد أن أعرفها)
السؤال السابع:خلونا نفصفص الدالة هذه:
void *handle(void *arg)
{
int sockid=(int)arg;
char *buff=malloc(MAXLINE);
bzero(buff,MAXLINE);
if(recv(sockid,buff,MAXLINE,0)<=0)
{
printf("Recive error In Server.\n");
exit(1);
}
parsing_request(sockid,buff);
return NULL;
}
int sockid=(int)arg;
حاب أستفسر عن int اللي بين القوسين والفرق بينها وبين الint اللي خارج القوس؟ :s
char *buff=malloc(MAXLINE);
معروفة.
bzero(buff,MAXLINE);
ماهي معروفة. وش هي؟ الدالة ذي؟ :lol:
return NULL;
هالحين .. NULL = 0 ولا لأ؟
وليه يكتب NULL الله يهديه بس :rolleyes:
السؤال الثامن:(مادري الثامن ولا السابع مضيع والله)
line=strtok(buff," "); line=strtok(NULL," ");
لا تعليق. :huh: الدالة strok أول مرة اسمع وفيها وحاولت أدور عنها في المنتدى وقوقل ومالقيت شي.
السؤال التاسع:
fp=open(path,O_RDONLY,"r")
مع العلم إنه fp من نوع int
وسؤالي هو:
الدالة open تابعة لأي مكتبة ؟
مافائدتها؟
وماهي هذه الوسائط وبالذات O_RDONLY
وإن كان هناك دروس أو روابط خارجية ياليت تدلونا والله عشان نتعمق ونتعلم ونستفيد
السؤال العاشر:
file_length = lseek (fp,0,SEEK_END);
printf ("Page file size : %d\n",file_length);
كيف قدر يطلع length الملف؟
وكيف شغل مخه؟ هل هي معادلة أو لإنه استعمل الدالة lseek (تابعة لأي مكتبة) ؟
وممكن روابط عشان نستفيد ونتعمق ونتعلم.
السؤال الحادي عشر:
آخر سؤال ماهي الدلة sprintf
تابعة لأي مكتبة؟
ماذا تقوم به؟
لإني دورت عنها في man وفي المنتدى ومالقيت :wacko:
أتمنى أسألتي تكون خفيفة (أعتقد إنه خفيفة لإنها من مبتدأ)
;)
وطبعا ماراح أدعيلكم هنا
الدعاء من ظهر الغيب أفضل :) (أعتقد :lol: )
عالعموم أنا كلمة أعتقد كثيرة عندي مادري ليه يمكن عشاني متردد B)
أتمنى ألاقي جواب يروي ظمأي برمجيا :)
./Hasan