Your SlideShare is downloading. ×
0
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Socket Programming in C++
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Socket Programming in C++

153

Published on

Quick Learning Socket Programming in C++

Quick Learning Socket Programming in C++

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
153
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ‫سوکت‬ ‫نویسی‬ ‫برنامه‬ ‫نژاد‬ ‫یوسفی‬ ‫احمد‬ 1
  • 2. ‫ها‬ ‫سرفصل‬ •‫سوکت‬ ‫نویسی‬ ‫برنامه‬ ‫و‬ ‫سوکت‬ ‫معرفی‬ •‫ها‬ ‫سوکت‬ ‫از‬ ‫اساسی‬ ‫مدل‬ ‫دو‬ •‫تابع‬socket–‫سوکت‬ ‫یک‬ ‫کردن‬ ‫ایجاد‬ •‫سوکت‬ ‫ساختارهای‬ •‫ها‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫های‬ ‫روش‬ •‫های‬ ‫آدرس‬IP‫آنها‬ ‫با‬ ‫کار‬ ‫طریقه‬ ‫و‬ 2
  • 3. ‫ها‬ ‫سرفصل‬ •‫تابع‬bind–‫هستم؟‬ ‫پرتی‬ ‫چه‬ ‫روی‬ •‫تابع‬connect–‫سالم‬! •‫تابع‬listen–‫بگیرید‬ ‫تماس‬ ‫من‬ ‫با‬ ‫لطفا‬! •‫تابع‬accept–‫شما‬ ‫تماس‬ ‫از‬ ‫سپاس‬! •‫توابع‬send‫و‬recv–‫داده‬ ‫انتقال‬ •‫تابع‬close–‫بای‬ ‫بای‬ •‫پروتکل‬ ‫در‬ ‫توابع‬ ‫استفاده‬ ‫ترتیب‬TCP •‫پروتکل‬ ‫در‬ ‫توابع‬ ‫خالصه‬TCP‫و‬UDP •‫منابع‬ 3
  • 4. ‫سوکت‬ ‫نویسی‬ ‫برنامه‬ ‫و‬ ‫سوکت‬ ‫معرفی‬ •‫است‬ ‫کامپیوتری‬ ‫شبکه‬ ‫های‬ ‫تکنولوژی‬ ‫ترین‬ ‫اساسی‬ ‫از‬ ‫یکی‬ ‫سوکت‬. •‫یک‬‫رابط‬‫شبکه‬ ‫افزار‬ ‫سخت‬ ‫و‬ ‫افزار‬ ‫نرم‬ ‫بین‬(‫انتقال‬ ‫الیه‬.) •‫توانند‬ ‫می‬ ‫سوکت‬ ‫طریق‬ ‫از‬ ‫ها‬ ‫برنامه‬‫ارسال‬ ‫پیام‬/‫کنند‬ ‫دریافت‬‫به‬/‫های‬ ‫برنامه‬ ‫دیگر‬ ‫از‬(‫یا‬ ‫محلی‬ ‫دور‬) •‫شبکه‬ ‫محبوب‬ ‫افزارهای‬ ‫نرم‬ ‫از‬ ‫خیلی‬(‫سیستم‬ ‫و‬ ‫رسانی‬ ‫پیام‬ ‫های‬ ‫برنامه‬ ،‫وب‬ ‫های‬ ‫مرورگر‬‫های‬ ‫نقطه‬ ‫به‬ ‫نقطه‬ ‫فایل‬ ‫اشتراک‬)‫سوکت‬ ‫به‬ ‫وابسته‬‫هستند‬. 4
  • 5. ‫ها‬ ‫سوکت‬ ‫از‬ ‫اساسی‬ ‫مدل‬ ‫دو‬ Stream Sockets (SOCK_STREAM) ‫پروتکل‬ ‫بر‬ ‫مبنی‬TCP ‫اعتماد‬ ‫قابل‬ ‫ی‬ ‫طرفه‬ ‫دو‬ ‫ارتباطات‬ ‫باشد‬ ‫برقرار‬ ‫اتصال‬ ‫باید‬ ‫ارتباط‬ ‫برای‬ ‫شود‬ ‫می‬ ‫تضمین‬ ‫ترتیب‬ Datagram Sockets(SOCK_DGRAM) ‫پروتکل‬ ‫بر‬ ‫منبی‬UDP ‫اعتماد‬ ‫قابل‬ ‫غیر‬ ‫اتصال‬ ‫نیست‬ ‫تضمین‬ ‫ترتیب‬ ‫اتصال‬ ‫بدون‬ ‫ارتباط‬ 5 App socket 3 2 1 Dest. App socket 3 2 1 D1 D3 D2
  • 6. ‫تابع‬socket–‫سوکت‬ ‫یک‬ ‫کردن‬ ‫ایجاد‬ • int s = socket(int domain, int type, int protocol); •S:‫نوع‬ ‫از‬ ،‫سوکت‬ ‫گر‬ ‫توصیف‬int(‫فایل‬ ‫با‬ ‫کار‬ ‫مانند‬) •Domain:‫پارامتر‬ ‫با‬ ‫باید‬ ‫دامنه‬PF_INET‫شود‬ ‫مقداردهی‬. •Type:‫ثابت‬ ،‫ارتباط‬ ‫نوع‬SOCK_STREAM‫یا‬SOCK_DGRAM •Protocol:‫شود‬ ‫انتخاب‬ ‫ارتباط‬ ‫نوع‬ ‫براساس‬ ‫تا‬ ‫دهید‬ ‫قرار‬ ‫صفر‬ ‫را‬ ‫پروتکل‬. •‫اند‬ ‫ثابت‬ ‫همیشه‬ ‫اینترنت‬ ‫شبکه‬ ‫تحت‬ ‫نویسی‬ ‫برنامه‬ ‫در‬ ‫سوم‬ ‫و‬ ‫اول‬ ‫فیلد‬. •‫مثال‬: • int sockfd; • sockfd = socket (PF_INET, SOCK_STREAM, 0); 6
  • 7. ‫سوکت‬ ‫ساختارهای‬ •‫ساختار‬sockaddr:‫میکند‬ ‫داری‬ ‫نگه‬ ‫ها‬ ‫سوکت‬ ‫از‬ ‫زیادی‬ ‫انواع‬ ‫آدرس‬ ‫اطالعات‬. struct sockaddr { unsigned shot sa_family; // address family, AF_XXX char sa_data[14]; //14 bytes of protocol address }; •‫ساختار‬:sockaddr_in‫کند‬ ‫می‬ ‫ساده‬ ‫را‬ ‫سوکت‬ ‫آدرس‬ ‫های‬ ‫المان‬ ‫با‬ ‫کار‬ ‫که‬ ‫قبلی‬ ‫همتا‬ ‫ساختار‬ ‫یک‬. struct sockaddr_in { short int sin_family; //Address family unsigned short int sin_port; // Port number struct in_addr sin_addr; //Internet address unsigned char sin_zero[8]; //Same size as struct sockaddr }; 7
  • 8. ‫سوکت‬ ‫ساختارهای‬ •‫نام‬ ‫به‬ ‫دیگر‬ ‫ساختار‬ ‫یک‬ ‫دوم‬ ‫ساختار‬ ‫تعریف‬ ‫در‬in_addr‫است‬ ‫زیر‬ ‫بصورت‬ ‫که‬ ‫شده‬ ‫تعریف‬ /* Internet IP address */ struct in_addr { unsigned long s_addr; }; •‫نکته‬:sin_port‫و‬sin_adr‫صورت‬ ‫به‬ ‫باید‬Network Byte Order •‫همان‬ ‫یا‬Big Endian(‫ماند‬ ‫می‬ ‫باقی‬ ‫ابتدا‬ ‫همان‬ ‫در‬ ‫ارزش‬ ‫با‬ ‫بایت‬)‫باشند‬. 8
  • 9. ‫ها‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫های‬ ‫روش‬ •Network Byte Order(‫ابتدا‬ ‫در‬ ‫اهمیت‬ ‫پر‬ ‫بایت‬(‫یا‬Big Endian •Host Byte Order(‫ابتدا‬ ‫در‬ ‫اهمیت‬ ‫کم‬ ‫بایت‬(‫یا‬Little Endian •‫پروتکل‬ ‫در‬TCP/IP‫بصورت‬ ‫بایتها‬ ‫ترتیب‬BE‫است‬ ‫شده‬ ‫توافق‬. •‫ساختار‬ ‫با‬ ‫ماشینی‬ ‫روی‬ ‫شما‬ ‫برنامه‬LE‫خورد‬ ‫خواهد‬ ‫بهم‬ ‫ارسالی‬ ‫های‬ ‫بایت‬ ‫ترتیب‬ ،. •‫نمونه‬: • 2500$ (BE) -> 0025$ (LE) 9
  • 10. ‫ها‬ ‫داده‬ ‫سازی‬ ‫ذخیره‬ ‫های‬ ‫روش‬ •‫محلی‬ ‫های‬ ‫داده‬ ‫تبدیل‬: • htons() : BE ‫کلمات‬ ‫تبدیل‬ ‫تابع‬‫بایتی‬ ‫دو‬‫حالت‬ ‫به‬ • htonl() : BE ‫کلمات‬ ‫تبدیل‬ ‫تابع‬‫بایتی‬ ‫چهار‬‫حالت‬ ‫به‬ • ntohs() : ‫ماشین‬ ‫فعلی‬ ‫حالت‬ ‫به‬ BE ‫از‬ ‫دوبایتی‬ ‫کلمات‬ ‫تبدیل‬ ‫تابع‬ • ntohl() : ‫به‬‫ماشین‬ ‫فعلی‬ ‫حالت‬ BE ‫از‬ ‫چهاربایتی‬ ‫کلمات‬ ‫تبدیل‬ ‫تابع‬ 10
  • 11. ‫های‬ ‫آدرس‬IP‫آنها‬ ‫با‬ ‫کار‬ ‫طریقه‬ ‫و‬ • int inet_aton(const char *cp, struct in_addr *inp); •‫آدرس‬ ‫برای‬ ‫رشته‬IP‫کند‬ ‫می‬ ‫تبدیل‬ ‫آدرس‬ ‫ساختار‬ ‫یک‬ ‫به‬ ‫را‬ ‫آن‬ ‫و‬ ‫میگیرد‬. •‫به‬ ‫تبدیل‬ ‫برای‬ ‫نیازی‬BE‫ندارید‬. struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYPORT); inet_aton(“10.0.0.5”,&(my_addr.sin_addr)); memset(&(my_addr.sin_zero),'0',8); •‫شکست‬ ‫برای‬ ‫صفر‬ ‫و‬ ،‫صفر‬ ‫غیر‬ ‫عددی‬ ‫موفقیت‬ ‫برای‬ ‫بازگشتی‬ ‫مقدار‬ 11
  • 12. ‫های‬ ‫آدرس‬IP‫آنها‬ ‫با‬ ‫کار‬ ‫طریقه‬ ‫و‬ •‫تبدیل‬ ‫برای‬IP‫رشته‬ ‫به‬:‫تابع‬inet_ntoa • printf("%s",inet_ntoa(ina.sin_addr)); 12
  • 13. ‫تابع‬bind–‫هستم؟‬ ‫پرتی‬ ‫چه‬ ‫روی‬ •‫سوکت‬ ‫با‬ ‫پورت‬ ‫یک‬ ‫دادن‬ ‫پیوند‬ ‫برای‬ • int status = bind(sockid, &addrport, size); •sockfd:‫سوکتی‬ ‫مشخصه‬ ‫همان‬‫که‬‫تابع‬ ‫از‬ ‫استفاده‬ ‫با‬ ً‫ال‬‫قب‬socket‫باز‬‫اید‬ ‫کرده‬. •my_addr:‫آدرس‬ ‫و‬ ‫پورت‬ ‫آدرس‬ ،‫سوکت‬ ‫خانواده‬ ‫که‬ ‫ساختار‬ ‫یک‬IP‫ماشین‬‫خود‬ ‫در‬ ‫را‬ ‫محلی‬ ‫دارد‬. •addr_len:‫طول‬‫ساختار‬my_addr‫بر‬‫بایت‬ ‫حسب‬ •‫مقدار‬‫بازگشتی‬-1‫است‬ ‫خطا‬ ‫بروز‬ ‫معنی‬ ‫به‬. 13
  • 14. ‫تابع‬bind–‫هستم؟‬ ‫پرتی‬ ‫چه‬ ‫روی‬ •‫مرحله‬ ‫این‬ ‫تا‬ ‫کامل‬ ‫نمونه‬ ‫یک‬ Int sockfd; struct sockaddr_in my_addr; sockfd = socket(PF_INET, SOCK_STREAM, 0); my_addr.sin_family = AF_INET; // host byte order my_addr.sin_port = htons(MYPORT); // short, network byte order my_addr.sin_addr.s_addr = inet_addr ("172.28.44.57"); memset(&(my_addr.sin_zero), '0', 8); // zero the rest of the struct bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); // ‫احتمالی‬ ‫خطاهای‬ ‫بررسی‬ 14
  • 15. ‫تابع‬connect–‫سالم‬! •‫دهنده‬ ‫سرویس‬ ‫یک‬ ‫به‬ ‫اتصال‬ ‫برای‬ • int connect(int sockfd, struct sockaddr *serv_addr, int addrlen); •sockfd:‫تابع‬ ‫فراخوانی‬ ‫با‬ ‫که‬ ‫است‬ ‫سوکتی‬ ‫مشخصه‬socket‫بدست‬‫است‬ ‫آمده‬. •serv_addr:‫نوع‬ ‫از‬ ‫ساختاری‬sockaddr‫معرفی‬ ‫قبال‬ ‫که‬ ‫است‬‫شد‬. •addrlen:‫قبلی‬ ‫ساختار‬ ‫اندازه‬‫بر‬‫حسب‬‫بایت‬.‫مقدار‬sizeof(struct sockaddr)‫دهید‬ ‫قرار‬. •‫ارتباط‬ ‫یک‬ ‫برقراری‬ ‫در‬ ‫موفقیت‬ ‫عدم‬ ‫صورت‬ ‫در‬TCP‫مقدار‬‫تابع‬ ‫این‬ ‫برگشتی‬1-‫خواهد‬‫بود‬. •‫تابع‬ ‫به‬ ‫نیازی‬bind‫نیست‬.‫کند‬ ‫می‬ ‫انتخاب‬ ‫را‬ ‫پورت‬ ‫عامل‬ ‫سیستم‬ ‫چون‬. 15
  • 16. ‫تابع‬connect–‫سالم‬! •‫مثال‬ #define DEST_IP "172.28.44.57" #define DEST_PORT 5000 main(){ Int sockfd; struct sockaddr_in dest_addr; // will hold the destination addr Sockfd = socket(PF_INET, SOCK_STREAM, 0); dest_addr.sin_family = AF_INET; // host byte order dest_addr.sin_port = htons(DEST_PORT); // network byte order dest_addr.sin_addr.s_addr = inet_addr(DEST_IP); memset(&(dest_addr.sin_zero), '0', 8); // zero the rest of the struct connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)); // ‫احتمالی‬ ‫خطاهای‬ ‫بررسی‬ 16
  • 17. ‫تابع‬listen–‫بگیرید‬ ‫تماس‬ ‫من‬ ‫با‬ ‫لطفا‬! •‫ها‬ ‫کالینت‬ ‫طرف‬ ‫از‬ ‫وارده‬ ‫های‬ ‫اتصال‬ ‫برای‬ ‫دهنده‬ ‫سرویس‬ ‫انتظار‬ • int listen(int sockfd, int backlog); •sockfd:‫ابتدا‬ ‫در‬ ‫که‬ ‫است‬ ‫سوکت‬ ‫مشخصه‬ ‫همان‬‫را‬ ‫آن‬‫اید‬ ‫کرده‬ ‫ایجاد‬. •backlog:‫منتظر‬ ‫شدۀ‬ ‫صف‬ ‫به‬ ‫و‬ ‫ّق‬‫ل‬‫مع‬ ‫ارتباطات‬ ‫تعداد‬ ‫حداکثر‬. •‫تابع‬ ‫این‬ ‫برگشتی‬ ‫مقدار‬ ‫خطا‬ ‫بروز‬ ‫صورت‬ ‫در‬1-‫بود‬ ‫خواهد‬. •‫اینکه‬ ‫از‬ ‫قبل‬‫را‬ ‫تابع‬ ‫این‬‫تابع‬ ‫به‬ ‫کنید‬ ‫فرخوانی‬bind‫نیاز‬‫دارید‬. • socket)( • bind)( • listen)( • accept)( 17
  • 18. ‫تابع‬accept–‫شما‬ ‫تماس‬ ‫از‬ ‫سپاس‬! •‫پذیرد‬ ‫می‬ ‫را‬ ‫انتظار‬ ‫حال‬ ‫در‬ ‫معلق‬ ‫های‬ ‫اتصال‬ ‫تابع‬ ‫این‬. •‫ا‬ ‫جدید‬ ‫ارتباط‬ ‫این‬ ‫به‬ ‫تا‬ ‫گرداند‬ ‫می‬ ‫باز‬ ‫شما‬ ‫برای‬ ‫را‬ ‫جدید‬ ‫سوکت‬ ‫کننده‬ ‫توصیف‬ ‫یک‬‫آن‬ ‫طریق‬ ‫ز‬ ‫نمایید‬ ‫رسیدگی‬. • int accept(int sockfd, void *addr, int *addrlen); •sockfd:‫تابع‬ ‫با‬ ‫ابتدا‬ ‫در‬ ‫که‬ ‫است‬ ‫سوکت‬ ‫مشخصه‬socket‫است‬ ‫آمده‬ ‫بدست‬. •addr:‫در‬ ‫شده‬ ‫پذیرفته‬ ‫اتصال‬ ‫درباره‬ ‫اطالعات‬addr‫به‬ ‫گر‬ ‫اشاره‬ ‫یک‬ ‫که‬ ‫میشود‬ ‫ذخیره‬ ‫ساختار‬sockaddr_in‫است‬. •addrlen:‫ساختار‬ ‫طول‬addr‫بایت‬ ‫حسب‬ ‫بر‬ 18
  • 19. ‫تابع‬accept–‫شما‬ ‫تماس‬ ‫از‬ ‫سپاس‬! ‫مثال‬: #define MYPORT 3490 // the port users will be connecting to #define BACKLOG 10 // pending connections queue will hold main(){ int sockfd, new_fd; // listen on sock_fd, new connection on new_fd struct sockaddr_in my_addr; // my address information struct sockaddr_in their_addr; // connector's address information int sin_size; sockfd = socket(PF_INET, SOCK_STREAM, 0); my_addr.sin_family = AF_INET; // host byte order my_addr.sin_port = htons(MYPORT); // short, network byte order my_addr.sin_addr.s_addr = INADDR_ANY; // auto-fill with my IP memset(&(my_addr.sin_zero), '0', 8); // zero the rest of the struct 19
  • 20. ‫تابع‬accept–‫شما‬ ‫تماس‬ ‫از‬ ‫سپاس‬! ‫ادامه‬: bind(sockfd, (struct sockaddr *)&my_addr, sizeof(struct sockaddr)); listen(sockfd, BACKLOG); sin_size = sizeof(struct sockaddr_in); new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size); •‫از‬ ‫بایستی‬ ‫ها‬ ‫داده‬ ‫دریافت‬ ‫یا‬ ‫ارسال‬ ‫برای‬‫جدیدی‬ ‫سوکت‬‫تابع‬ ‫توسط‬ ‫آن‬ ‫مشخصه‬ ‫که‬accept ‫کنید‬ ‫استفاده‬ ، ‫برمیگردد‬. 20
  • 21. ‫توابع‬send‫و‬recv–‫داده‬ ‫انتقال‬ •‫بوده‬ ‫استفاده‬ ‫قابل‬ ‫مشتری‬ ‫سمت‬ ‫برنامه‬ ‫و‬ ‫دهنده‬ ‫سرویس‬ ‫سمت‬ ‫برنامه‬ ‫در‬ ‫تابع‬ ‫دو‬ ‫این‬. •‫دارند‬ ‫کاربرد‬ ‫ها‬ ‫داده‬ ‫مبادله‬ ‫برای‬. • int send(int sockfd, const void *msg, int len, int flags); • int recv(int sockfd, void *buf, int len, unsigned int flags); •sockfd:‫تابع‬ ‫از‬ ‫که‬ ‫سوکتی‬ ‫مشخصه‬accept‫است‬ ‫آمده‬ ‫بدست‬. •msg:‫تایع‬ ‫در‬ ‫پارامتر‬ ‫این‬send‫محلی‬‫حافظه‬ ‫در‬(‫ساختار‬ ‫یا‬ ‫آرایه‬ ‫مثل‬)‫آنجا‬ ‫از‬ ‫ارسالی‬ ‫های‬ ‫داده‬ ‫که‬ ‫داده‬ ‫فیلد‬ ‫درون‬ ‫و‬ ‫شده‬ ‫استخراج‬‫قرار‬‫شوند‬ ‫می‬ ‫ارسال‬ ‫و‬ ‫گرفته‬. •len:‫طول‬‫های‬ ‫داده‬‫حسب‬ ‫بر‬ ‫دریافتی‬ ‫یا‬ ‫ارسالی‬‫بایت‬. •flags:‫بگذارید‬ ‫صفر‬ ‫آن‬ ‫در‬ ‫فقط‬ ‫پیچیدگی‬ ‫از‬ ‫پرهیز‬ ‫برای‬. •buf:‫تابع‬ ‫در‬ ‫پارامتر‬ ‫این‬recv‫گرفته‬ ‫قرار‬ ‫آنجا‬ ‫در‬ ‫دریافتی‬ ‫های‬ ‫داده‬ ‫که‬ ‫است‬ ‫حافظه‬ ‫در‬ ‫محلی‬ ‫آدرس‬ ‫شود‬ ‫می‬ ‫گردانده‬ ‫باز‬ ‫برنامه‬ ‫به‬ ‫و‬. 21
  • 22. ‫تابع‬close–‫بای‬ ‫بای‬ •‫تابع‬ ‫با‬ ‫میتوانید‬ ،‫کنید‬ ‫قطع‬ ‫را‬ ‫ارتباط‬ ‫میخواهید‬ ‫و‬ ‫شد‬ ‫تمام‬ ‫داده‬ ‫انتقال‬ ‫کار‬ ‫وقتی‬close‫این‬ ‫دهید‬ ‫انجام‬ ‫را‬ ‫کار‬. • close(int sockfd); •sockfd:‫نظر‬ ‫مورد‬ ‫سوکت‬ ‫مشخصه‬. •‫تابع‬ ‫توسط‬ ‫که‬ ‫ارتباطی‬close‫بسته‬‫نخو‬ ‫استفاده‬ ‫قابل‬ ‫دریافت‬ ‫و‬ ‫ارسال‬ ‫برای‬ ‫دیگر‬ ‫میشود‬‫اهد‬ ‫بود‬. 22
  • 23. ‫دهنده‬ ‫سرویس‬ ‫برنامۀ‬ ‫در‬ ‫استفاده‬ ‫مورد‬ ‫توابع‬(‫بر‬ ‫مبتنی‬TCP) •‫تابع‬socket‫سوکت‬ ‫ایجاد‬ ‫برای‬ •‫تابع‬bind‫سوکت‬ ‫روی‬ ‫پورت‬ ‫کردن‬ ‫تنظیم‬ ‫برای‬ •‫تابع‬listen‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫مشتری‬ ‫تقاضای‬ ‫به‬ ‫دادن‬ ‫گوش‬ ‫برای‬ •‫تابع‬accept‫ارتباط‬ ‫برقراری‬ ‫برای‬ ‫مشتری‬ ‫تقاضای‬ ‫پذیرفتن‬ ‫برای‬ •‫توابع‬send‫و‬recv‫داده‬ ‫انتقال‬ ‫برای‬ •‫تابع‬close‫ارتباط‬ ‫بستن‬ ‫برای‬ 23
  • 24. ‫مشتری‬ ‫برنامۀ‬ ‫در‬ ‫استفاده‬ ‫مورد‬ ‫توابع‬(‫بر‬ ‫مبتنی‬TCP) •‫تابع‬socket‫سوکت‬ ‫ایجاد‬ ‫برای‬ •‫تابع‬connect‫ارتباط‬ ‫برقراری‬ ‫تقاضای‬ ‫فرستادن‬ ‫برای‬(‫شدن‬ ‫پذیرفته‬ ‫تا‬ ‫انتظار‬) •‫توابع‬send‫و‬recv‫داده‬ ‫انتقال‬ ‫برای‬ •‫تابع‬close‫ارتباط‬ ‫بستن‬ ‫برای‬ 24
  • 25. ‫در‬ ‫استفاده‬ ‫مورد‬ ‫توابع‬ ‫خالصه‬TCP 25
  • 26. ‫در‬ ‫استفاده‬ ‫مورد‬ ‫توابع‬ ‫خالصه‬UDP 26
  • 27. ‫منابع‬ 27 •Unix Network Programming(Richard Stevens) •TCP/IP Illustrated(Stevens and Gary R. Wright) •‫اینترنت‬ ‫مهندسی‬ ‫اصول‬(‫ملکیان‬ ‫احسان‬ ‫مهندس‬)

×