1. Trang chủ
  2. » Công Nghệ Thông Tin

GIÁO TRÌNH LẬP TRÌNH SOCKET

25 230 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 909 KB

Nội dung

Giới thiệu về Socket Sockets cung cấp một interface để lập trình mạng tại tầng Transport. Một socket là một endpoint của một liên kết giữa hai ứng dụng mạng. Nhiều NNLT: C, C++, Java, VB, C, . . . Windows Socket Application Programming Interface (Winsock API) Winsock hỗ trợ xây dựng các ứng dụng mạng trên nền TCPIP. Các bước cần thực hiện: 1. Xác định kiến trúc mạng: Client – Server, PeertoPeer 2. Giao thức sử dụng tầng Transport: TCP, UDP 3. Các port sử dụng ở Server và Client 4. Giao thức tầng ứng dụng khi trao đổi dữ liệu giữa hai endhost 5. Lập trình 1 Xác định bài tập và đồ án: Kiến trúc Client – Server Giao thức sử dụng tầng Transport là TCP 2 Ghi chú: XD UD theo giao thức tầng UD được định nghĩa sẵn  phải tuân thủ đúng quy định  tham khảo RFC (request for comment) PeertoPeer: 1 UD có cả Client Server

LOGO TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN BỘ MÔN MẠNG MÁY TÍNH – KHOA CNTT Mơn: Mạng máy tính LẬP TRÌNH SOCKET Nội dung Giới thiệu Socket Hướng dẫn viết ứng dụng S-C Một số hàm CSocket Trao đổi đề đồ án/ Demo Giới thiệu Socket  Sockets cung cấp interface để lập trình mạng tầng Transport  Một socket end-point liên kết hai ứng dụng mạng  Nhiều NNLT: C, C++, Java, VB, C#,  Windows Socket Application Programming Interface (Winsock API)  Winsock hỗ trợ xây dựng ứng dụng mạng TCP/IP Nội dung Giới thiệu Socket Hướng dẫn viết ứng dụng S-C Một số hàm CSocket Trao đổi đề đồ án/ Demo Xây dựng UD Client-Server với Socket Các bước cần thực hiện: Xác định kiến trúc mạng: Client – Server, Peer-to-Peer Giao thức sử dụng tầng Transport: TCP, UDP Các port sử dụng Server Client Giao thức tầng ứng dụng trao đổi liệu hai end-host Lập trình Xây dựng UD Client-Server với Socket 1/ Xác định tập đồ án: - Kiến trúc Client – Server - Giao thức sử dụng tầng Transport TCP 2/ Ghi chú: - XD UD theo giao thức tầng UD định nghĩa sẵn  phải tuân thủ quy định  tham khảo RFC (request for comment) - Peer-to-Peer: UD có Client - Server Xây dựng UD Client-Server với Socket SERVER CLIENT Tạo socket để lắng nghe kết nối đăng ký port cho socket Server.Create (port) Lắng nghe CÁC kết nối từ client Server.Listen() Tạo socket để kết nối đến server Client.Create () Đợi kết nối đến từ Client Kết nối đến Server Client.Connect (IP, port) Chấp nhận kết nối từ client Server.Accept(s) Truyền/Nhận liệu với client s s.Send() / s.Receive() Truyền/Nhận liệu với client s Client.Send() / Client.Receive() Đóng kết nối Server.Close() Đóng kết nối Client.Close() Nội dung Giới thiệu Socket Hướng dẫn viết ứng dụng S-C Một số hàm CSocket Trao đổi đề đồ án/ Demo Một số hàm lớp CSocket  CSocket (được hỗ trợ MFC) quản lý việc truyền nhận liệu thông qua socket  Tham khảo MSDN: http://msdn.microsoft.com/en-US/library/65 bbyctt%28v=VS.80%29.aspx Một số hàm lớp CSocket Khởi tạo Socket BOOL AfxSocketInit( WSADATA* lpwsaData = NULL );  Trước sử dụng hàm lớp CSocket, phải gọi hàm để khởi tạo Windows Socket với tham số lpwsaData gán NULL 10 Một số hàm lớp CSocket Tạo socket BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL );  nSocketPort: port socket; port MFC chọn ngẫu nhiên  nSocketType SOCK_STREAM (TCP) hay SOCK_DGRAM (UDP)  lpszSocketAddress: địa IP host dùng socket Nếu dùng NULL, socket lắng nghe hoạt động client tất card mạng  Giá trị trả về: khác thành cơng; ngược lại mã lỗi cụ thể cho gọi hàm GetLastError 11 Một số hàm lớp CSocket Lắng nghe yêu cầu kết nối BOOL Listen( int nConnectionBacklog = );  Hàm hỗ trợ cho socket dạng SOCK_STREAM  nConnectionBacklog: chiều dài tối đa mà hàng đợi kết nối chưa chấp nhận tăng  Giá trị trả về: khác  thành công,  thất bại 12 Một số hàm lớp CSocket Chấp nhận kết nối virtual BOOL Accept( CAsyncSocket& rConnectedSocket, SOCKADDR* lpSockAddr = NULL, int* lpSockAddrLen = NULL );  rConnectedSocket: tham chiếu định danh socket kết nối chấp nhận  lpSockAddr trỏ đến cấu trúc SOCKADDR nhận địa IP socket kết nối đến  Nếu lpSockAddr hay lpSockAddrLen lấy giá trị mặc định NULL khơng có thơng tin từ socket (trên client) chấp nhận trả  lpSockAddrlen chứa chiều dài thực lpSockAddr trả theo byte  Giá trị trả về: khác thành công thất bại 13 Một số hàm lớp CSocket Kết nối đến server BOOL Connect( LPCTSTR lpszHostAddress, UINT nHostPort );  lpszHostAddress: địa IP Server  nHostPort: Port socket lắng nghe kết nối Server  Giá trị trả về: khác thành công; ngược lại, thất bại = 14 Một số hàm lớp CSocket Truyền/nhận liệu virtual int Send/Receive( const void* lpBuf, int nBufLen, int nFlags = );  lpBuf: vùng đệm chứa liệu  nBuffLen: kích thước vùng đệm tính theo byte  nFlag: cách nhận/truyền liệu, sử dụng giá trị mặc định  Giá trị trả số byte nhận/truyền 15 Thí dụ minh họa Bài tốn 1: viết ứng dụng chat Server – Client (Server chat trước) Xác định bước trước lập trình: Xác định kiến trúc mạng: ? Giao thức sử dụng tầng Transport: ? Các port sử dụng Server Client: Server - ? Giao thức tầng ứng dụng trao đổi liệu hai end-host: + server  client  server  client  … + format thông điệp truyền client server: 16 Thí dụ minh họa Xét kịch tốn CLIENT SERVER Mơ hình: server – client 17 Thí dụ minh họa Bài toán 2: N clients gửi cho server số từ  10 Các client luân phiên gửi theo lượt Server đếm số lượng số Nguyên tố gửi lên thông báo kết cho tất client Xác định bước trước lập trình: ? • Giao thức tầng ứng dụng trao đổi liệu hai end-host: + N clients  server  N clients … + format thông điệp truyền client server: 18 Thí dụ minh họa Xét kịch tốn CLIENT CLIENT SERVER CLIENT Mơ hình: server – N clients 19 Nội dung Giới thiệu Socket Hướng dẫn viết ứng dụng S-C Một số hàm CSocket Trao đổi đề đồ án/ Demo 20 Trao đổi đề đồ án/ Demo  Các tạo project  Code demo Bài toán 1: Server Client chat  Code demo Bài toán 2: N clients gửi lên Server, Server tính tốn gửi trả kết cho clients  Giải thích số kịch đề  Xét kịch đăng ký tên (nickname)  Xét kịch server phát sinh “lá bài” gửi cho clients 21 Demo: cách tạo project 22 Demo: cách tạo project 23 Demo code chat 1S – 1C Server (include “afxsock.h”) Client (include “afxsock.h”) CSocket server, s; //khai báo biến CSocket client; AfxSocketInit(NULL); // kt Windows Socket AfxSocketInit(NULL); if (!server.Create(1234)) { // có port printf(“That bai roi nhe"); exit(); } // tạo socket server.Listen(); // lắng nghe server.Accept(client) ; // chấp nhận kết nối { printf("\nServer: "); gets(s_str); len = strlen(s_str); s.Send(s_str,len,0); len = s.Receive(r_str,100,0); // gán ký tự kết thúc chuỗi r_str[len] = 0; // hiển thị chuỗi nhận printf("\nCleint: %s",r_str); } while(strcmp(r_str,"exit")&&strcmp(s_str,"exit" )); s.Close(); 24 server.Close(); client.Create(); // khơng có port client.Connect(svrAddr,1234) ; // kết nối { len = client.Receive(r_str,100,0); r_str[len] = 0; printf("\n Server: %s",r_str); printf("\n Client: "); gets(s_str); client.Send(s_str,strlen(s_str),0); } while(strcmp(r_str,"exit")&&strcmp(s_str,"e xit")); client.Close(); LOGO 25 ... hàm lớp CSocket Tạo socket BOOL Create( UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL );  nSocketPort: port socket; port MFC chọn ngẫu nhiên  nSocketType... dung Giới thiệu Socket Hướng dẫn viết ứng dụng S-C Một số hàm CSocket Trao đổi đề đồ án/ Demo Giới thiệu Socket  Sockets cung cấp interface để lập trình mạng tầng Transport  Một socket end-point... bbyctt%28v=VS.80%29.aspx Một số hàm lớp CSocket Khởi tạo Socket BOOL AfxSocketInit( WSADATA* lpwsaData = NULL );  Trước sử dụng hàm lớp CSocket, phải gọi hàm để khởi tạo Windows Socket với tham số lpwsaData

Ngày đăng: 29/08/2019, 20:26

TỪ KHÓA LIÊN QUAN

w