Phần th c hàn hự

Một phần của tài liệu báo cáo thực tập tốt nghiệp đề tài voip call (Trang 33)

2.3.1. Thiết l p Server/Client ậ

2.3.1.1. Thiết l p Server

 Class Server.cs

Tạo hàm Run trong class Server được dùng để chờ đợi lắng nghe các Client k t nế ối vào Server và được chạy theo Multi thread lắng nghe liên tục việc Client kết nối vào Server.

Hình 29. Hàm Run trong Class Server

- Tạo hàm Start thông qua thư viện Sockets dùng để ắt đầ b u tạo một Server và thêm vào hàm Run dùng để ạ t o và bắt đầu lu ng khi mà có ồ Client k t n i vào. ế ố

Hình 30. Hàm Start Server

- Ngồi vi c xây d ng hàm Start ngồi ra cịn xây dệ ự ựng hàm Stop hàm được dùng để thực hiện việc dừng server được tạo.

- Tạo hàm Send và hàm Receive được sử dụng để gửi và nhận các thông tin t Client. ừ

+ Hàm Send:

+ Hàm Receive:

 Thiết l p Server Class MainViewModel.cs ậ

- Trong View-Model xây d ng làm ServerStart v i ki u RelayComand ự ớ ể dùng để binding tới nút Button trên View thực hiện việc bắt đầu một Server ho c D ng Server l i. ặ ừ ạ Ngoài ra dùng để chạy các hàm khác liên quan đến việc bắt đầu một Server ho c d ng nó. ặ ừ

- Hàm StartServer được xây dựng trong View-Model được thực hiện việc bắt đầu một Server khi người dùng nh n vào nút button và Server ắ ấy được kiểm tra là chưa được tạo sẽ được thực hiện.

- Hàm StopServer xây d ng trong View-Model th c hi n chự ự ệ ức năng dừng Server lại khi người d ng nh n vào Button và kiừ ấ ểm được Server đang chạy thì Server sẽ được d ng l ừ ại.

Hình 34 Hàm RelayCommand c a Button Server.

2.3.1.2. Thiết L p Client ậ  Class Client.cs

- Cũng như thiết lập Server, Client có các hàm như là Connect được dùng để ự th c hiện việc thiết lập kết nối tới Server.

- Hàm Disconnect được dùng dừng việc kết nối gi Client và Server. ữ

Hình 36 Hàm StopServer cho Button Server.

- Tiếp đó là hàm Send được dùng để gửi các tin dưới dạng Byte cho Server.

Hình 39. Hàm Send trong Class Client Hình 38. Hàm Disconnect trong Class Client Hình 38. Hàm Disconnect trong Class Client

- Và hàm nh n tin nhậ ắn và động tin nhắn và đọc tin nhắn được nh n tậ ử Server g i tr v Client. ử ả ề

 Thiết l p Client trong Class MainViewModel.cs ậ

- Tạo hàm StartClient trong View-Model v i kiớ ểu RelayCommand được dùng cho Button trên View th c hi n vi c k t n i Client v i Serveự ệ ệ ế ố ớ r cũng như là ngắt kết nối.

Hình 41 Hàm RelayCommand trong MainViewModel .

- Trong đó hàm ConnectClient được xây dựng khi Button được nhấn và được kiểm tra Client chưa được kết nối thì sẽ th c việc kết nối. ự

- Hàm DisconnectClient được dùng khi Button được nhấn và được ki m tra ể Client với Server đang được kết nối sẽ thực hiện việc ngắn.

2.3.2. Truyền nh n Audio thông qua Socket ậ

- Khi bắt đầu vi c truy n nh n Audio các vi c c n làm cho cệ ề ậ ệ ầ ả chương trình thiết l p các vi c c n thiậ ệ ầ ết:

+ Xây dựng hàm đóng gói âm thanh dưới dạng Byte để có th ểTruyền nhận âm thanh gi a Client Và Server. ữ

Hình 44. Hàm đóng gói âm thanh

+ Hàm SetUpComboxes được xây dựng trong View-Model được dùng để thực hiện việc tìm ki m thi t b âm thanh cho Server và Client ế ế ị

+ Hàm SetUpJitterBufferClientRecording được sử dụng cho vi c thi t lệ ế ập nhận bộ đệm cho vi c ghi âm c a Client. ệ ủ

Hình 46. B đm âm thanh c a Client

+ Hàm SetUpJitterBufferClientPlaying được dùng cho việc thiết lập bộ đệm cho việc bắt đầu phát đoạn âm thanh được truyền đi.

Hình 47. Thit lập b đm phát âm thanh

+ Hàm SetUpJitterBufferServerRecording cũng có tác dụng làm nhận bộ đệm cho việc ghi âm nhưng bộ đệm này được s d ng cho Server ử ụ

Hình 48. Thi t l p b ậ  đm ghi âm thanh

- Đối v i Server trong View-Model ớ

+ Tạo hàm StartRecordingFromSounddevice_Server() th c hi n vi c ghi ự ệ ệ âm từ Server. Hàm được đặt trong RelayCommand được kh i t o cùng ở ạ lúc v i vi c bớ ệ ắt đầu kh i t o Server ở ạ

+ Hàm StopRecordingFromSounddevice_Server() sẽ thực hi n vi c d ng ệ ệ ừ việc ghi âm thanh c a Server l i khi mà Server dủ ạ ừng được đóng lại.

Hình 49. Thc hi n ghi âm thanh t thi t b ừ  ị đầu vào

+ Hàm StartTimerMixed được sử dụng như bộ đếm th i gian gờ ửi các đoạn ghi âm đi tới các Client.

+ Hàm StopTimerMixed được dùng để ngừng việc đếm thời gian th c hi n ự ệ khi mà Server được dừng.

+ Hàm SendConfigurationToClient được dùng để thực hiện việc có cho phép Client k t nế ối vào Server hay không để ắt đầ b u vi c K t nệ ế ối cũng như truyền nhận âm thanh của Client kết nối vào Server.

Hình 53 Hàm SendConfiguarationToClient.

- Đối v i Client trong ớ View-Model

+ Hàm nh n tin nh n ch p nh n hay tậ ắ ấ ậ ừ chối việc được k t n i t i Server ế ố ớ hay không để ắt đầ b u việc Truyền nhận âm thanh c a Client. If tủ ừ chối Client s t ng t kẽ ự ắ ết nối với Server.

Hình 51. Truyn âm thanh đã được mã hố đn các Client

+ Hàm StartPlayingToSounddevice_Client có chức năng bắt đầu vi c phát ệ âm thanh được gửi t Servừ er đến cho Client thông qua Thi t b âm thanh. ế ị Và chức được thực hiện khi Server ch p nh n vi c kấ ậ ệ ết nối c a Client và ủ Client nhận được gói dữ liệu âm thanh.

+ Hàm StopPlayingToSounddevice_Client có chức năng dừng vi c phát ệ âm thanh nhận được ghi Client ng n k t n i v i Server. ắ ế ố ớ

+ Hàm StartRecordingFromSounddevice_Client cũng tương tự như Server hàm có chức năng thực hi n vi c bệ ệ ắt đầu ghi âm từ thiế ịt b âm thanh c a Client. Chủ ức năng được th c hi n khi Server ch p nh n viự ệ ấ ậ ệc kết nối c a Client. ủ

Hình 55. Th c hi n phát âm thanh qua thi t b   ị đầu ra

+ Hàm StopRecordingFromSounddevice_Client hàm có chức năng thực hiện vi c dệ ừng ghi âm từ thiết bị âm thanh của Client. Chức năng được thực hiện khi vi c k t n i cệ ế ố ủa Client được ng ng. ừ

Hình 57. Thc hi n ghi âm thanh t thi t b ừ  ị đầu vào c a Client

2.3.3. Ứng d ng VoIP Call ụ

2.3.2.1. Tổng quan v VoIP Call ề

- VoIP (Voice over Internet Protocol) là m t công ngh cho phép truy n thoộ ệ ề ại sử d ng giao th c mụ ứ ạng IP, trên cơ sở hạ tầng sẵn có c a Internet và có th s ủ ể ử dụng nhi u lo i m ng khác nhau: LAN, WAN,... V i chi phí thề ạ ạ ớ ấp hơn nhiều so với các phương thức truyền thông truyền thống, VoIP đang được các doanh nghiệp đầu tư nhiều và được ứng d ng rụ ộng rãi trong môi trường doanh nghiệp và cá nhân.

- Về d ự án VoIP Call, đây là ứng d ng cho phép th c hi n truy n tho i gi a các ụ ự ệ ề ạ ữ máy tính s d ng hử ụ ệ điều hành Windows trong m ng LAN. Thông qua giao ạ thức UDP và Socket. Các máy tính trong mạng LAN có thể giao tiếp, truyền và nh n âm thanh v i nhau theo th i gian thậ ớ ờ ực.

- Ứng dụng được vi t b ng WPF theo mơ hình MVVM giúp tế ằ ối ưu hố code và có th tái s d ng code, ngoài ra vi c b sung ho c ch nh s a chể ử ụ ệ ổ ặ ỉ ử ức năng đơn giản hơn so với Winform.

- Tuy nhiên, ng d ng ch có thứ ụ ỉ ể chạy trên các máy tính s d ng hử ụ ệ điều hành Windows Vista hoặc Windows Server 2008 trở lên.

2.3.2.2. Từng chức năng của VoIP Call

- Giao di n chính cệ ủa ứng dụng g m 3 ph n chính: Main Menu, Sub-Menu và ồ ầ nội dung. Trong mỗi phần để có ph n n i dung riêng và t ng chầ ộ ừ ức năng riêng để đáp ứng đủ

Hình 59. Giao di n chính

- Giao di n Server ệ cho phép người dùng thao tác thi t lế ập server để client có th ể kết nối đến, bao gồm địa chỉ IP, c ng port và ch n các thi t bổ ọ ế ị đầu vào/đầu ra.

- Giao di n Client cho phép user k t nệ ế ối đến Server thông qua địa chỉ IP và cổng Port c a Server ủ

Hình 61. Giao di n Client

- Giao di n ệ multitab cho phép kéo th các tab d dàng kéo th t ng tab ả ễ ả ừ linh động

- Giao di n khi kh i t o Server. ệ ở ạ

Hình 63. Server khi được khởi to

- Giao di n sau khi Clent k t nệ ế ối đển Server, thông tin từng users đã kế ố ẽt n i s được hiển th trên ListView ị

- Giao di n Client sau khi k t nệ ế ối đến Server, thông báo sẽ được hi n thể ị trên TextBlock

Hình 65. Client sau khi k t n ối đn Server

- Tại mục Micro và Speaker, người dùng có th d dàng ch n các thi t bể ễ ọ ế ị đầu ra/đầu vào thơng qua combobox

Hình 66 Giao di n cho phép ch n OutPut và InPut t thi t b.  ọ ừ  ị

- Calling History sẽ ể hi n th các cu c g i gị ộ ọ ần đây nhất, dữ liệu được hiển thị trên ListView

Hình 67. L ch sị ử cuc gọi

- Khi có cu c g i t user b t kộ ọ ừ ấ ỳ, Server s hi n th b ng thông báo cu c gẽ ể ị ả ộ ọi đến, người dùng hồn tồn có thể t ch i hoặc chấp nhận cuộc gọi ừ ố

Hình 68. Thơng báo khi có cu c g ọi đn

- Ứng dụng VoIP đã có thể thực hiện được vi c kh i t o Server, Client và thệ ở ạ ực hiện được các chức năng cơ bản như nghe, gọi và đàm thoại theo thời gian thực, đồng thời cũng có thể lưu trữ được thơng tin k t nế ối và l ch sị ử cuộc gọi.

CHƯƠNG 3. ĐỀ XUẤT CÁC GIẢI PHÁP CẢI THIỆN CHẤT LƯỢNG GIẢNG DẠY Ở NHÀ TRƯỜNG

Môi trường thực tế tại cơng ty là mơi trường hồn tồn khác so với môi trường giao d c tụ ại nhà trường, do đó, sinh viên khi thực tập sẽ bỡ ngỡ và s g p m t s khó ẽ ặ ộ ố khăn nhất định trong th c t p. ự ậ Em xin được đề xu t m t s ấ ộ ốgiải pháp để cải thi n chệ ất lượng gi ng d y ả ạ ở nhà trường như sau:

Về kỹ năng mềm:

- Thường xuyên tổ chức các l p rèn luy n kớ ệ ỹ năng làm việc nhóm; - Trang b cho sinh viên kị ỹ năng tìm đọc tài li u b ng Ti ng Anh; ệ ằ ế

- Nên đưa Tiếng Anh vào việc giảng dạy và học tập ở một số môn h c nhọ ất định;

- Tổ chức các bu i sinh ho t Ti ng Anh. ổ ạ ế

Về kiến thức chuyên ngành:

- Chú trọng hơn về hướng đối tượng trong vi c gi ng d y; ệ ả ạ - Đưa cơng nghệ mới vào chương trình đào tạo;

- Đưa các công cụ lưu trữ mã nguồn như: Git, Github, Gitlab, Bitbucket,... vào gi ng dả ạy cũng như điều ki n b t bu c ệ ắ ộ để lưu trữ mã ngu n khi thồ ực hiện đồ án môn học;

- Các môn học như thiế ết k web, l p trình web,... c n tậ ầ ạo điều ki n cho Sinh ệ viên deploy website th c t lên host và tr tên mi n th c t ; ự ế ỏ ề ự ế

- Thường xuyên t ổchức các bu i seminar, workshop v các công ngh , công ổ ề ệ cụ,... c n thiầ ết cho môi trường doanh nghi p ệ như: Linux, Docker, Angular, React, React Native,.. và các ngôn ng , công c mã ngu n m khác; ữ ụ ồ ở - Định hướng cho sinh viên năm nhất hi u rõ front-end, back-end, devOps,... ể

từ đó giúp sinh viên có hướng đi tốt hơn trong suốt thời gian học tập tại trường.

CHƯƠNG 4. KẾT LUẬT VÀ ĐỊNH HƯỚNG PHÁT TRIỂN

4.1. Kết lu n ậ

Qua th i gian th c t p thờ ự ậ ực t t i Công ty TNHH Gi i pháp Ph n mế ạ ả ầ ềm Tường Minh, em đã học hỏi và trao d i thêm nhi u k ồ ề ỹ năng, kiến thức thực tế; đồng thời được c ng c ủ ốkiến thức đã học trên gh ế nhà trường. Qua d án thự ực tế, em đã thực hiện được m t s yêu c u nhộ ố ầ ất định; tuy nhiên, th i gian thờ ực tập chưa được nhiều nên d án còn g p ph i nhiự ặ ả ều khó khăn cần kh c phắ ục.

Về d án VoIP Call:

- Ưu điểm:

+ Ứng d ng VoIP có th nghe g i theo th i gian th c thông qua TCP/IP; ụ ể ọ ờ ự + Giao di n dệ ễ tương tác, sử ụ d ng;

+ Thiết k d ng mutitab, d dàng kéo thế ạ ễ ả như giao diện metro; - Nhược điểm:

+ Giao di n ng dệ ứ ụng cịn đơn giản, chưa có nhiều tính năng; + Độ trễ trong truy n âm thanh còn cao; ề

+ Độ nhi u âm thanh còn cao; ễ

Về b n thân:

- Ưu điểm:

+ Củng c thêm ki n th c v C#, Network,... ố ế ứ ề

+ Học được thêm công ngh và cơng c mệ ụ ới: WPF, mơ hình MVVM, MVVM Light Toolkit, thư viện NAudio,...

+ Củng cố khả năng giao tiếp trong công sở;

+ Được đào tạo v các quy trình phát tri n ph n mề ể ầ ềm đang được vận dụng tại công ty;

+ Củng c và rèn luy n thêm kố ệ ỹ năng nghe, nói, đọc, viết Tiếng Anh; + Khả năng tự học, tự nghiên cứu qua tài liệu được nâng cao.

- Nhược điểm:

+ Khả năng tìm lỗi và s a l i cịn nhiử ỗ ều khó khăn dẫn đến m t nhi u th i gian; ấ ề ờ + Khả năng vận dụng Tiếng Anh trong giao tiếp còn chưa cao.

4.2. Định hướng phát triển

Để làm cho dự án có tính thi t thế ực hơn đối với nhu cầu đại đa số người dùng, ứng dụng cần được bổ sung, phát triển thêm một số tính năng:

- Bổ sung và chỉnh sửa giao di n thân thiệ ện hơn cho người dùng;

- Bổ sung tính năng SIP Call để thực hi n cu c g i ra bên ngoài m ng cệ ộ ọ ạ ục bộ;

TÀI LI U THAM KH O Ệ Ả  Tài li u Ti ng Anh: ệ ế

1. Richard Blum (2002). C# Network Programming Sybex .

Tài li u t Internet: ệ ừ

1. Ebook – L p trình m ng v i C# ậ  ớ

https://tinhte.vn/threads/ebook-lap-trinh-mang-voi-c-full-117-trang-tieng- viet.2157487/ - 26/07/2019

2. Khố học “Lập trình WPF cơ bản”

https://howkteam.vn/course/lap-trinh-wpf-co-ban-30 - 28/06/2019

3. Khố học “Lập trình ph n m m Quầ  ản lý kho WPF – MVVM”

https://www.howkteam.vn/course/lap-trinh-phan-mem-quan- -kho-ly wpf-- mvvm-42 - 28/06/2019

4. Khoá học “MVVM Light Toolkit Fundamentals”

https://app.pluralsight.com/library/courses/mvvm-light-toolkit- fundamentals/ - 03/07/2019

5. Khoá học “Audio Programming with NAudio”

https://app.pluralsight.com/library/courses/audio-programming-naudio/ - 10/07/2019

Phần mềm và thư viện đượ ử ục s d ng:

1. Microsoft Visual Studio 2017 Community 2. Microsoft Visual Code

3. MVVM Light Toolkit

4. Material Design In XAML Toolkit 5. NAudio Library

Một phần của tài liệu báo cáo thực tập tốt nghiệp đề tài voip call (Trang 33)

Tải bản đầy đủ (PDF)

(59 trang)