פורסם 2006 באוקטובר 2219 שנים אני מנסה לכתוב תוכנת לקוח המדברת עם שרת באמצעות socket. הנה הקוד של תחילת התוכנית:#include <stdio.h>#include <winsock.h>int main(){ int sockfd; WSAData wsaData; printf("starting WSA..."); if (WSAStartup(MAKEWORD(1,1),&wsaData) != 0) { printf("failed.\n"); exit(1); } printf("Done!\n"); printf("Creating Socket..."); if ( sockfd = socket(AF_INET,SOCK_STREAM,0) == INVALID_SOCKET ){ printf("failed.\n"); exit(1); } printf("Done!\n");}הבעיה היא שהמשתנה sockfd מקבל תמיד 0 אחרי שאני מפעיל את הפונקציה socket.ואז אם אני מנסה לעשות לו למשל connect אני מקבל את שגיאה 10038, שאומרת שאני מנסה לעשות פעולה שצריכה משתנה שהוא socket, על משתנה שהוא לא socket, מה שיכול להגרם או מטעות במשתנה או מכך שהפונקציה socket לא החזירה ערך נורמלי.יש למישהו רעיונות?
פורסם 2006 באוקטובר 2219 שנים ניסית להגדיר את SOCKET עם ה"קדם מעבד" (סליחה אם אני טועה בשם, לא עברתי על זה די הרבה זמן)?
פורסם 2006 באוקטובר 2219 שנים מחבר אתה מתכוון לפונקציה socket? כי אם כן היא מוגדרת בwinsock.h ואני לא צריך להתעסק איתה חוץ מלשלוח אליה את הפרמטרים (הנכונים) האלה.
פורסם 2006 באוקטובר 2219 שנים אם אתה לא מגדיר למשתנה מסוים ערך התחלתי אז הוא אוטומטית מקבל את הערך 0 לפי מה שאני זוכר.תגדיר לו את הערך שמתאים לך
פורסם 2006 באוקטובר 2219 שנים מחבר א. משתנים בC לא מקבלים שום ערך כשמגדירים אותם . כלומר הם מקבלים ערך רנדומלי, שהיה כבר מקודם בתאי הזיכרון שהוקצו בשבילם ב. אני רוצה שהמשתנה יקבל את ערך החזרה של הפונקציה, כך שאין כל חשיבות לערך שהיה לו לפני הקריאה לפונקציה סוקט.
פורסם 2006 באוקטובר 2319 שנים מחבר דיי, אל תגיד לי שאני כזה טיפש... אני עכשיו הולך לנסות את זה :'( איך יכול להיות שאין קדימות ל= לפני ה==? :-(
פורסם 2006 באוקטובר 2319 שנים גם אם זה היה נכון של= היתה קדימות על == (וטוב שלא אחרת קוד הרבה יותר נפוץ וחשוב לא היה פועל) מגיעות לך מכות על שהסתמכת על קדימיות בקוד שהוא גם ככה מלא רעש ויזואלי. זה בסדר בביטויים פשוטים כמו X == I + 2 אבל במקרה שלנו יש לא מעט סוגריים, פסיקים ופרמטרים. עובדה - טעית.חוץ מזה בפורום אתה יכול להכניס קטע קוד לתוך שדה שמציין שהוא קוד והוא מוצג בפונט מתאים. פשוט תסמן את קטע הקוד ותלחץ על הכפתור שנראה כמו #.
פורסם 2006 באוקטובר 2319 שנים הכל כמובן בצחוק. אני כמעט אף פעם לא מרביץ לאנשים בגלל קוד (והנשיכה היתה מקרה חד פעמי!!).
פורסם 2006 באוקטובר 2319 שנים מחבר דווקא מגיעות לי מכות. אתה כל כך צודק.באמת לא מעט ביטויים נורמלים לא היו עובדים אם מה שאמרתי לגבי הקדימויות היה מתממש. ברור שזה אמור להיות עם סוגריים.אבל למה התכוונת מבחינת הרעש הויזואלי? שאני קורא לפונקציה ועושה השמה של ערך ההחזרה שלה בתוך if?
פורסם 2006 באוקטובר 2319 שנים כן. רעש ויזואלי. יש כל כך הרבה דברים בשורה הזו, שגם עם סוגריים לוקח עוד שבריר שניה להבין מה קורה, אפילו היא לא מסובכת במיוחד.לכן עדיף לבצע את ההשמה בשורה נפרדת, ואת התנאי בהמשך.מדובר בדקויות, אבל לאורך זמן זה דקויות כאלה מוכיחות את עצמן בקוד יותר קריא ויותר רובוסטי, שקל יותר לתחזק.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.