tìm hiểu về lập trình socket với tcp udp

21 457 0
tìm hiểu về lập trình socket với tcp udp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG KĨ THUẬT CAO THẮNG KHOA: ĐIỆN TỬ – TIN HỌC ĐỒ ÁN: HỆ THỐNG MẠNG TÌM HIỂU VỀ LẬP TRÌNH SOCKET VỚI TCP/UDP MỞ ĐẦU Socket cổng logic mà chương trình sử dụng để kết nối với chương trình khác chạy máy tính khác Internet Chương trình mạng sử dụng nhiều Socket lúc, nhờ nhiều chương trình sử dụng Internet lúc Có loại Socket: • Stream Socket • Datagram Socket LỜI CẢM ƠN Trong suốt ngày vừa qua, từ nhóm chúng em đựoc giao đề tài,nhóm chúng em học đựơc nhiều kiến thức thấy cô khoa Điện Tử - Tin Học nói riêng tồn thể thấy giáo trường nói chung tận tình bảo giúp đỡ chúng em nói chung nhóm em nói riêng Đặc biệt nhóm chúng em xin bày tỏ lòng biết ơn sâu sắc đến thầy giáo Lương Minh Huấn chủ nhiệm mơn “Dich Vụ Mạng” hết lòng bảo hướng dẫn tạo điều kiện cho chúng em tìm tòi học hỏi với đề t “tìm hiểu lập trình socket với tcp/udp”có thể nói nhịp cầu nối trình học tập rèn luyện thực tế nhóm em tồn thể bạn sinh viên nói chung Nhưng kiến thức hạn hẹp nhóm sinh viên bước vào ngưỡng cửa kiến thức CNTT, báo cáo khơng thể tránh sai sót khuyết điểm Em mong nhận ý kiến quý báu thầy cô đặc biệt thầy giáo mơn, để chúng em hồn thành báo cáo Một lần em muốn gửi đến thầy giáo chủ nhiệm môn Hệ Thống Mạng lời cảm ơn chân thành NHẬN XÉT (Của giáo viên, có) MỤC LỤC Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN PHẦN I: KHÁI NIỆM VỀ SOCKET Trước vào lập trình socket cần quen với khái niệm lập trình socket Socket Socket cổng logic mà chương trình sử dụng để kết nối với chương trình khác chạy máy tính khác Internet Chương trình mạng sử dụng nhiều Socket lúc, nhờ nhiều chương trình sử dụng Internet lúc  Có loại Socket: • Stream Socket: Dựa giao thức TCP( Tranmission Control Protocol) việc truyền liệu thực trình thiết lập kết nối Giao thức đảm bảo liệu truyền đến nơi nhận cách đáng tin cậy, thứ tự nhờ vào chế quản lý luồng lưu thông mạng chế chống tắc nghẽn • Datagram Socket: Dựa giao thức UDP( User Datagram Protocol) việc truyền liệu khơng u cầu có thiết lập kết nối trình Ngược lại với giao thức TCP liệu truyền theo giao thức UDP khơng tin cậy, khơng trình tự lặp lại Tuy nhiên khơng u cầu thiết lập kết nối khơng phải có chế phức tạp nên tốc độ nhanh…ứng dụng cho ứng dụng truyền liệu nhanh chat, game… Port Port xách định trình (process) máy mạng Hay nói cách khác cách mà phân biệt ứng dụng VD: Khi máy bạn chạy nhiều ứng dụng mạng Yahoo,Firefox, game online Ví dụ chương Yahoo sử dụng ( port 5150 hay 5050) gửi tin nhắn đến cho bạn, lúc tin nhắn đến máy bạn dựa vào port để nhận biết chương trình Yahoo ( port 5150) ko pải chương trình khác Sau thơng tin đc xử lý hiễn thị tin nhắn lên Một TCP/IP Socket gồm địa IP kết hợp với port ? Xác định tiến trình (process ) mạng.Hay nói cách khác Luồng thơng tin SVTH: PHẠM VĂN THÀNH Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN mạng dựa vảo IP để xác định máy máy mạng port xác định tiến trình máy Ứng dụng client – server Trước tới giờ, bạn lập trình với mục đích tạo ứng dụng Nhưng ứng dụng hoạt động độc lập riêng lẽ Mục tiêu lập trình mạng đưa ứng dụng dạng Client – Server Tức có loại ứng dụng Client Server Quy trình hoạt động ứng dụng Server – Client sau: Server có nhiệm vụ lắng nghe, chờ đợi kết nối từ Client địa IP với PORT quy định sẵn Khi client gởi liệu tới Server phải giải cơng việc nhận liệu -> xử lý -> trả kết lại cho Client Client ứng dụng phục vụ, gởi truy vấn chờ đợi kết từ Server PHẦN II LẬP TRÌNH SOCKET Cơ chế gọi hàm lập trình Socket a TCP SVTH: PHẠM VĂN THÀNH Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN Lập trình Socket với TCP b UDP SVTH: PHẠM VĂN THÀNH Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN Lập trình Socket với UDP Thư viện lập trình Winsock WinSock API (Windows Sockets Application Programming Interface) thư viện hàm giao diện lập trình mạng cho Microsoft Windows WinSock tương thích với họ nghi thức mạng TCP/IP.Ở phần làm quen với hàm để lập trình socket a Khởi động đóng thư viện  Khởi động Winsock int WSAStartup(WORD lpWSAData); wVersionRequested, LPWSADATA Các tham số: • wVersionRequested phiên thư viện mà sử dụng Ở giá trị 0×0202 có nghĩa phiên 2.2 SVTH: PHẠM VĂN THÀNH Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN • lpWSData số thông tin bổ sung trả sau gọi khởi tạo Winsock  Đóng thư viện Winsock WSACleanup (void); b Window socket  Tạo socket SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_IP); Các tham số: – af: [in] mô tả họ địa – type: [in] kiểu socket + SOCK_STREAM: TCP socket + SOCK_DGRAM: UDP socket – protocol: [in] nghi thức sử dụng socket + SOCK_DGREAM -> protocol là: IPPROTO_UDP + SOCK_STREAM -> protocol là: IPPROTO_IP + SOCK_RAW -> protocol là: IPPROTO_RAW hay IPPROTO_ICMP  Hàm lấy tên máy int gethostname(char* name, int namelen);  Hàm lấy thông tin theo tên máy truct hostent* FsAR gethostbyname(const char* name); SVTH: PHẠM VĂN THÀNH 10 GVHD: LÊ MINH HUÂN Tìm hiểu lập trình socket với TCP/UDP Các tham số • name: Giá • Một [in] cấu • Trong hostent đc định nghĩa tên máy tính cần phân trị trả trúc HOSTENT, thành NULL, có giải cơng lỗi typedef struct hostent { char FAR* h_name; // Tên máy tính char FAR FAR** h_aliases; // Bí danh máy tính short h_addrtype; // Kiểu IP (AF_INET) short h_length; // Kích thước IP char FAR FAR** h_addr_list; // Danh sách địa IP // host có nhiều IP } HOSTENT,  Lấy thông tin biết địa IP hostent* FAR gethostbyaddr(const char* addr, int len, int type); Các tham số • addr: [in] địa máy tính theo thứ tự network-byte • len: [in] chiều dài chuỗi địa • type: [in] kiểu địa chỉ, thiết lập AF_INET Giá trị trả • Một cấu trúc HOSTENT, thành cơng • NULL, có lỗi SVTH: PHẠM VĂN THÀNH 11 Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN c TCP  Gắn địa cho socket int bind( SOCKET s, const struct sockaddr FAR* name, int namelen ) Các tham số • s: [in] socket chưa gắn kết địa • name: [in] địa gán cho socket, cấu trúc SOCKADDR • namelen: [in] kích thước giá trị tham số name Giá trị trả • 0, thành cơng • SOCKET_ERROR, có lỗi  Lắng nghe kết nối int listen( SOCKET s, int backlog ); Các tham số • s: [in] socket gắn địa chưa kết nối • backlog: [in] kích thước tối đa hàng đợi thiết lập kết nối Giá trị tối đa định số SOMAXCONN  Chấp nhật thiết lập kết nối SOCKET accept( SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen ) Các tham số • s: [in] socket lắng nghe yêu cầu kết nối • addr: [out] địa socket máy client thực kết nối SVTH: PHẠM VĂN THÀNH 12 Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HN • addrlen: [out] chiều dài thực addr Phải khởi tạo giá trị ban đầu kích thước addr Giá trị trả • Một SOCKET để giao tiếp thực với client, thành cơng • INVALID_SOCKET, có lỗi  Thiết lập kết nối int connect( SOCKET s, const struct sockaddr FAR* name, int namelen ) Các tham • s: [in] socket chưa kết • name: [in] socket cần kết nối • namelen: [in] kích thước Giá trị trả • 0, thành • SOCKET_ERROR, có lỗi số nối đến name cơng  Gửi liệu int send( SOCKET s, const char FAR * buf, int len, int flags ) Các tham số • s: [in] socket kết nối • buf: [in] vùng đệm chứa liệu cần gửi • len: [in] chiều dài liệu buf • flags: [in] định cách thức truyền liệu, truyền liệu bình thường, thiết lập giá trị Giá trị trả • số byte gửi đi, thành công • SOCKET_ERROR, có lỗi  Nhận liệu SVTH: PHẠM VĂN THÀNH 13 Tìm hiểu lập trình socket với TCP/UDP GVHD: LÊ MINH HUÂN int recv( SOCKET s, char FAR* buf, int len, int flags ) Các tham số • s: [in] socket kết nối • buf: [out] vùng đệm để lưu liệu nhận • len: [in] kích thước vùng đệm buf • flags: [in] định cách thức nhận liệu, nhận liệu bình thường, thiết lập giá trị Giá trị trả • số byte liệu nhận được, thành cơng • SOCKET_ERROR, có lỗi  Shutdown int shutdown( SOCKET s, int how ) Các tham số • s: [in] socket cần shutdown • how: [in] định loại thao tác không thực - SD_RECEIVE: không cho phép gọi hàm recv() socket - SD_SEND: không cho phép gọi hàm send() socket - SD_BOTH: không cho phép gọi send() recv() socket Giá trị trả • 0, thành cơng • SOCKET_ERROR, có lỗi d Đóng socket SVTH: PHẠM VĂN THÀNH 14 GVHD: LÊ MINH HUÂN Tìm hiểu lập trình socket với TCP/UDP int closesocket (SOCKET s) Các tham số • s: [in] socket cần đóng Lập trình socket Dưới đoạn lập trình chương trình chat máy mạng lan ứng dụng Server – Client sử dụng TCP UDP Sever: #include #include #include "iostream" #include using namespace std; #pragma comment (lib,"ws2_32.lib") int _tmain(int argc, _TCHAR* argv[]) { WSADATA SInfo; 10 int iResult = WSAStartup(0x0202,&SInfo); 11 SOCKET NewConnection,socketSever; 12 socketSever =socket(AF_INET,SOCK_STREAM,IPPROTO_IP); 13 14 15 if (socketSever!=INVALID_SOCKET) { cout

Ngày đăng: 18/11/2017, 20:29

Từ khóa liên quan

Mục lục

  • LỜI CẢM ƠN

  • PHẦN I: KHÁI NIỆM VỀ SOCKET

    • 1. Socket là gì

    • 2. Port là gì

    • 3. Ứng dụng client – server là gì

    • PHẦN II. LẬP TRÌNH SOCKET

      • 1. Cơ chế gọi hàm trong lập trình Socket

        • a. TCP

        • b. UDP

        • 2. Thư viện lập trình Winsock

          • a. Khởi động và đóng thư viện

          • b. Window socket

          • c. TCP

          • d. Đóng socket

          • 3. Lập trình socket

          • Dưới đây là đoạn lập trình về chương trình chat giữa 2 máy trong mạng lan ứng dụng Server – Client sử dụng TCP và UDP.

Tài liệu cùng người dùng

Tài liệu liên quan