Luận Văn Lập trình đa tiến trình xây dựng chương trình chatting trên mạng linux

Thảo luận trong 'Công Nghệ Thông Tin' bắt đầu bởi Thúy Viết Bài, 5/12/13.

  1. Thúy Viết Bài

    Thành viên vàng

    Bài viết:
    198,891
    Được thích:
    170
    Điểm thành tích:
    0
    Xu:
    0Xu
    TÓM TẮT NỘI DUNG ĐỒ ÁN


    Đồ án này bao gồm năm chương. Nội dung trình bày mỗi chương được tóm tắt như sau:
    - Chương I: Giới thiệu tổng quan về đề tài. Giới thiệu hiện trạng sử dụng hệ điều hành Linux, khả năng giao tiếp giữa các máy qua mạng Linux và đặt vấn đề cần giải quyết của đề tài.
    - Chương II: Trình bày các cơ sở lý thuyết có liên quan đến đồ án như ngôn ngữ C, ngôn ngữ tcl/tk và khả năng xây dựng ứng dụng mạng.
    - Chương III: Xây dựng hệ thống chatting bao gồm chương trình server bằng ngôn ngữ C sử dụng đa tiến trình và chương trình client bằng ngôn ngữ tcl/tk trên X Window. Đặt vấn đề giao tiếp giưac hai chương trình.
    - Chương IV: Thử nghiệm chương trình trên các máy sử dụng Linux.
    - Chương V: Kết luận. Nêu các vấn đề đã đạt được trên lý thuyết, tính khả thi và hương phát triển đề tài.


    MỤC LỤC
    MỤC LỤC 7
    TỔNG QUAN ĐỀ TÀI 9
    I. Hệ điều hành Linux 9
    II. Giao tiếp giữa các máy có sử dụng hệ điều hành Linux 9
    II.1.Giới thiệu một số tiện ích giao tiếp qua mạng Linux 10
    a) Lệnh gọi hệ thống talk 10
    b) Lệnh gọi hệ thống mail 10
    III. Giới thiệu nội dung đề tài 10
    CƠ SỞ LÝ THUYẾT 12
    I. Ngôn ngữ C 12
    I.1. Giới thiệu sơ lược 12
    I.1.1. Lập trình C trên Linux 12
    I.1.2. Một chương trình C đơn giản 12
    I.1.3. Biên dịch và thực hiện chương trình 13
    I.2.Quản lý đa tiến trình bằng ngôn ngữ C 14
    I.2.1. Tiến trình và đa tiến trình 14
    a) Khái niệm tiến trình 14
    b) Trạng thái của các tiến trình 15
    I.2.2. Các dấu hiệu nhận biết tiến trình 15
    I.2.3. Tạo ra một tiến trình 16
    I.2.4. Chấm dứt một tiến trình 16
    I.3. Trao đổi thông tin giữa các tiến trình 17
    I.3.1. Liên lạc bằng các tín hiệu 17
    a) Khái niệm 17
    b) Một số tín hiệu thường gặp 18
    c) Liên lạc bằng các tín hiệu 18
    d) Một số giới hạn khi sử dụng tín hiệu 20
    I.3.2. Liên lạc bằng ống dẫn 20
    a) Khái niệm 20
    b) Các đặc điểm của ống dẫn 21
    c) Khởi tạo và liên lạc bằng ống dẫn 21
    I.3.3. Trao đổi thông tin giữa các tiến trình bằng hệ thống IPC 24
    a) Khái niệm 24
    b) Khởi tạo dãy thông báo 25
    c) Gởi thông tin lên dãy thông báo 26
    d) Nhận thông tin từ dãy thông báo 27
    I.4. Giao tiếp mạng 29
    I.4.1. Khái niệm socket và port 29
    I.4.2. Tạo ra một socket 29
    I.4.3. Chờ đợi một kết nối từ client(server) 31
    I.4.4. Thực hiện kết nối đến server (client) 32
    I.4.5. Ví dụ mẫu mô hình client/server 33
    a) Mã lệnh chương trình server 33
    b) Mã lệnh chương trình client 34
    II. Ngôn ngữ tcl/tk 36
    II.1.Khái niệm 36
    II.1.1. Khái niệm 36
    II.1.2. Các thành phần cơ bản của tcl/tk 36
    a) Cấu trúc lệnh 36
    b) Biến và giá trị của biến 37
    c) Các cấu trúc lặp 38
    d) Chương trình con 39
    II.2. Một chương trình đơn giản bằng tcl/tk 39
    II.2.1. Cấu trúc chương trình 39
    II.2.2. Thực hiện chương trình 40
    II.3. Sử dụng socket trong tcl/tk 40
    XÂY DỰNG MÔ HÌNH CLIENT/SERVER 42
    I. Xây dựng chương trình sever 42
    I.1. Nguyên tắc hoạt động 42
    I.2. Sơ đồ thuật toán thành phầnchờ đợi kết nối 43
    I.2.1. Khởi tạo socket 43
    I.2.2. Khởi tạo dãy thông báo 44
    I.2.3. Đợi một kết nối từ client 45
    I.3. Sơ đồ thuật toán thành phần xử lý thông tin trao đổi 46
    I.3.1. Phân tích tham số đầu vào 47
    I.3.2. Khởi tạo socket và tìm kiếm dãy thông báo 47
    I.3.3. Đợi một kết nối từ client 47
    I.3.4. Thực hiện trao đổi thông tin 47
    I.4. Cấu trúc dữ liệu 47
    I.5. Cổng giao tiếp với các client: 48
    I.6. Quản lý trao đổi thông tin 49
    II. Chương trình client 50
    II.1. Nguyên tắc hoạt động 50
    II.2 Sơ đồ thuật toán 51
    II.3 Thiết lập kết nối đến chương trình server 51
    II.4 Phân loại thông tin nhận được từ máy chủ 52
    CHƯƠNG IV 53
    THỬ NGHIỆM CHƯƠNG TRÌNH 53
    I. Trình tự sử dụng chương trình 53
    II. 53
    III. Kết quả 53
    KẾT LUẬN 54
    I. Kết quả đạt được 54
    I.1.Chương trình server 54
    I.2. Chương trình client 54
    I.3. Tính khả thi 54
    II. Hạn chế 54
    III. Hướng phát triển đề tài 55
    TÀI LIỆU THAM KHẢO 56


    CHƯƠNG 1
    TỔNG QUAN ĐỀ TÀI
    I. Hệ điều hành Linux
    Hệ điều hành Linux bắt đầu phát triển từ năm 1991. Tác giả ban đầu của hệ điều hành này là một sinh viên trường đại học tổng hợp Helsinki, Linus B. Torvalds. Linux là từ viết tắt của Linus (tên tác giả) và Unix. Phiên bản đầu tiên của Linux gọi là phiên bản 0.01 được phát hành vào tháng 8 năm 1991.
    Hiện nay, tại phòng thực hành số 1 trường đại học kỹ thuật Đà Nẵng có cài đặt hệ điều hành Linux để các sinh viên chuyên ngành Tin học cũng như các ngành khác có thể tiếp cận và học hỏi trên hệ điều hành này. Ngoài ra, hệ điều hành Linux đã được đưa vào chương trình học của sinh viên chuyên ngành thành một môn bắt buộc. Điều này sẽ giúp cho sinh viên có được cái nhìn tổng quát hơn về hệ điều hành, có đièu kiện đánh gía và so sánh với hệ điều hành đang được sử dụng phổ biến MS DOS và Microsoft Windows.
    Đưa hệ điều hành Linux vào giảng dạy và nghiên cứu sẽ mở ra thêm một hướng đi mới cho sinh viên chuyên ngành. Cuộc chiến thị phần giữa các hệ điều hành có đi đến kết cuộc như thế nào thì việc biết thêm một hệ điều hành, lập trình được trên đó sẽ làm vững tin hơn cho các sinh viên sau khi tốt nghiệp.
    Về phía sinh viên, Microsoft Windows là hệ điều hành rất thân thiện với người sử dụng và từ lâu nay đã được sử dụng rất nhiều. Microsoft Windows có khả năng nối mạng cùng chung hệ điều hành rất dể dàng. Vậy đối với Linux thì sao? Khi đã có được hệ thống mạng dùng Linux thì việc giao tiếp giữa các máy Linux với nhau có gì khác với hệ điều hành Microsoft Windows.
    II. Giao tiếp giữa các máy có sử dụng hệ điều hành Linux
    Hệ điều hành Linux được thừa kế Unix nên có rất nhiều tính năng mạnh về mạng máy tính và giao tiếp giữa các máy trong mạng, thậm chí chúng được cụ thể hóa bằng các lệnh gọi hệ thống, hay nói ngắn gọn hơn: chỉ là các thao tác đơn giản. Với các lệnh gọi hệ thống này có thể được dùng để trao đổi một số thông tin đơn giản giữa các user hay giữa hai máy với nhau như lệnh talk, mail, write,
    II.1. Giới thiệu một số tiện ích giao tiếp qua mạng Linux
    a) Lệnh gọi hệ thống talk
    Lệnh gọi hệ thống talk cho phép hai user đang đăng nhập có thể trao đổi thông tin trực tiếp với nhau. Lệnh talk được gọi với tham số là một user khác đang tồn tại trong hệ thống. Sau đó, màn hình hệ thống được chia làm hai phần, phần dưới dành hiễn thị các dòng thông báo của user đối thoại và phần trên dành cho người đang sử dụng. Nếu user chưa đăng nhập, talk sẽ thông báo lỗi về việc user không tồn tại và trở lại dấu nhắc của shell.
    Một khi sử dụng lệnh gọi hệ thống talk, tất cả những gì chúng ta gõ vào đều được hiễn thị ở user kia. Tuy nhiên chúng ta không thể làm gì khác cho đến khi thoát khỏi talk. Một điều quan trọng là talk chỉ cho phép hai trao đổi giữa hai user.
    b) Lệnh gọi hệ thống mail
    Lệnh mail cho phép chúng ta gởi các đoạn nhắn đến các user trên máy tính hoặc các user trên mạng nếu chúng ta biết tên miền của user đó. So với talk, sử dụng mail linh hoạt hơn nhưng thông tin trao đổi không mang tính tức thời. Chúng ta có thể kiểm tra mail và trả lời bất kỳ khi nào chúng ta muốn dẫn đến thông tin sẽ không cập nhật kịp thời. Khó khăn lớn nhất của mail là chúng la luôn phải nhớ chính xác tên user và tên miền của đích đến.
    III. Giới thiệu nội dung đề tài
    Linux là hệ điều hành đa nhiệm, đa người sử dụng, Một người bất kỳ cũng có thể hiểu được các khái niệm trên một khi họ đã đọc lướt qua một quyển sách, một tờ báo nào đó có nói đến Linux hay Unix chẳng hạn. Vậy chúng ta phải nhắc đến điều gì trong khi đó là những đặc trưng của Linux ?
    Đối với một sinh viên chuyên ngành tin học chúng ta không thể đánh giá vấn đề theo hướng " Nó là gì ?" mà phải biết nhận xét "Nó làm việc như thế nào ?" và quan trọng hơn có thể là " Làm thế nào để sử dụng nó như công cụ của mình ?". Từ đó chúng ta thử quay lại với các khái niệm trên với một số vấn đề đặt ra:
    - Linux quản lý hệ thống bằng cách quản lý các tiến trình. Nếu chúng ta có một chương trình có sử dụng đa tiến trình thì chúng ta sẽ quản lý chúng như thế nào?
    - Linux đã cung cấp một số lệnh gọi hệ thống cho phép truyền thông (có hạn chế) trên mạng liệu có hỗ trợ cho chúng ta lập trình trên mạng dể dàng hay không?
    Nói tóm lại, vấn đề đặt ra ở đây không phải là chúng ta sử dụng Linux mà là chúng ta tận dụng các đặc trưng của hệ điều hành để ứng dụng chúng vào việc lập trình trên hệ điều hành này.
    Từ những hạn chế của một số lệnh kể trên, các tính năng của một hệ đa tiến trình tôi đã nảy ra ý tưởng xây dựng một chương trình cho phép các máy sử dụng Linux (có thể cả MS Windows) có thể giao tiếp với nhau cùng một lúc, qua đó các sinh viên có thể sử dụng máy để trao đổi trực tiếp các thông tin tức thời cho nhau. Ngoài ra có thêm một chương trình để tham khảo khi bắt đầu lập trình trên Linux và X Window cũng tốt.
    Tôi đã dựa theo ý tưởng này để đưa ra quyết định chọn đề tài "LẬP TRÌNH ĐA TIẾN TRÌNH XÂY DỰNG CHƯƠNG TRÌNH CHATTING TRÊN MẠNG LINUX" làm đề tài tốt nghiệp của mình. Mô hình chatting gồm có hai chương trình, một chương trình phục vụ (server) và một chương trình khách (client).
    + Chương trình server là một chương trình được viết bằng ngôn ngữ C sử dụng đa tiến trình, trao đổi thông tin giữa các tiến trình và giao tiếp với các chương trình client qua mạng. Chương trình server có hai thành phần chính, một thành phần luôn chờ đợi các kết nối của các chương trình client từ máy trạm và một thành phần tạo ra một tiến trình mới mỗi khi có một client kết nối đến. Tiến trình mới này trực tiếp trao đổi thông tin với chương trình client vừa kết nối.
    + Chương trình client được xây dựng bằng ngôn ngữ tcl/tk, một ngôn ngữ thông dịch, tạo giao diện với người sử dụng trên X Window. Chương trình này sử dụng các giao tiếp qua mạng để truyền và nhận thông tin với các chương trình client khác qua chương trình server.
     

    Các file đính kèm:

Đang tải...