PDA

View Full Version : Chương trình Chat trên VC++, Xây dựng chương trình Chat qua net ??


nam_dkn
10-03-2009, 02:46 PM
Chào các bạn, mình đang tìm hiểu chương trình Chat như YM chẳng hạn, nhưng đơn giản hơn, chỉ yêu cầu gởi và nhận chữ viết.(định viết bằng MFC không biết thế nào??)
Mình không biết bắt đầu từ đâu, mong các bạn giúp.
Bạn nào có chương trình đơn giản cho mình xin để tham khảo
thanks.

zkday2686
12-03-2009, 11:45 PM
Cái này dùng Winsock làm cho nó đơn giản bạn à :).

Up lên cho bạn 1 project mình down được trên codeguru.

nam_dkn
13-03-2009, 09:24 AM
Làm sao để sử dụng CT này hả bạn, mình build thì ra 2 form nhưng không biết sử dụng làm sao?
Bạn có thể hướng dẫn mình được không ??
Mình không biết định địa chỉ tới máy nhận ở đâu cả?

kidkid
13-03-2009, 10:33 AM
Nếu chat qua mạng thì ko đơn giản đâu :)

Forlorn_hope
13-03-2009, 10:48 AM
Làm sao để sử dụng CT này hả bạn, mình build thì ra 2 form nhưng không biết sử dụng làm sao?
Bạn có thể hướng dẫn mình được không ??
Mình không biết định địa chỉ tới máy nhận ở đâu cả?

Cái chương trình chat thì không phải đơn giản nếu làm đoàng hàng, nhớ lúc học cái này có đứa bạn làm trên Java rất kì công, đánh giá phải bằng 8/10 so với chat yahoo.
Bạn muốn chạy chương trình tại máy cục bộ, Server thì mở một cổng bất kỳ ví dụ: 12345, và định địa chỉ IP là 127.0.0.1. Còn phía Client kết nối đến IP: 127.0.0.1 và cổng 12345 thì chương trình chạy được thôi.
Muốn tìm hiểu rõ ràng hơn, thiết nghĩ bạn phải biết lập trình mạng. Trong C# thì tìm hiểu: System.Net.Sockets; TcpListener; TcpClient.

AlexF
15-03-2009, 01:37 PM
Nếu muốn sử dụng sever của yahoo ,tức là đăng nhập tài khoản của yahoo,cậu phải sử dụng thư viện YMSG12ENCRYPT.dll,trong thư viện này có sẵn các hàm hỗ trợ kết nối đến sever của yahoo,mình có 1 Project về đăng nhập và chát qua yahoo đơn giản nhưng sử dụng VB để làm ( lấy bên caulacboVb nè )

nguyenbinh07
15-03-2009, 07:38 PM
Nếu chỉ làm đơn thuần để chat giữa các máy trên internet thì vô cùng đơn giản chỉ cần biết sơ về Winsock cũng làm được có điều cần 1 máy chủ. Nhưng nếu muốn làm 1 chương trình hoành tráng thì rất phức tạp

nam_dkn
17-03-2009, 11:11 AM
Chào tất cả các bạn.
Rất cảm ơn các bạn đã góp ý cho câu hỏi của mình.
Mình cũng vừa tìm được 1 chương trình CHAT đơn giản qua 2 PC với nhau up lên cho các bạn nào thích thì tham khảo. Mình đã thử, chương trình chạy rất tốt.
Hy vọng các bạn sẽ phát triển thêm để cùng học hỏi.

void main ()
17-03-2009, 07:38 PM
Nếu chat socket thì rất đơn giản , với vài ba từ khóa trên google là cậu đã có trong tay mã nguồn. Quan trọng ở đây là việc đồng bộ server phục vụ nhiều client. Việc detect các client disconnect ...v.v.. Khá nhiều thứ để làm đấy nhỉ :D

ttecak
21-03-2009, 02:22 PM
Ai lại xài socket làm gì . Socket ko send được 1 đối tượng. Phải làm cách khác thôi. Mặc dù chưa nghĩ ra là cách gì :D Các bác đừng chửi em spam tội nghiệp em ^^

nguyenbinh07
21-03-2009, 05:29 PM
Ai lại xài socket làm gì . Socket ko send được 1 đối tượng. Phải làm cách khác thôi. Mặc dù chưa nghĩ ra là cách gì :D Các bác đừng chửi em spam tội nghiệp em ^^

Sặc, truyền thông tin qua mạng mà ko xài socket thì xài j` nữa trời??? ):)T
Cái send đối tượng của bạn là j`?? send file, hay send cái j`??

PS: Nếu có cách khác để truyền thông tin qua mạng mà ko xài socket thì chỉ mình với nha!!! quả thật là mình chưa biết :D

ndp1007
22-03-2009, 08:25 PM
Làm sao để sử dụng CT này hả bạn, mình build thì ra 2 form nhưng không biết sử dụng làm sao?
Bạn có thể hướng dẫn mình được không ??
Mình không biết định địa chỉ tới máy nhận ở đâu cả?

Vậy làm sao build lại được từ những file trong cái project đó vậy anh,có thể hướng dẫn em được không.

nam_dkn
23-03-2009, 09:08 AM
Thì bạn cứ Build bình thường thôi, cái bản đó họ dùng VC 6, mình dùng VC 2005 để Build, trong quá trình build thì nó tự động convert cho mình rồi. bạn thử lại nhé.
Chúc bạn thành công

ndp1007
24-03-2009, 09:08 PM
Em có gữi một tin nhắn cá nhân cho anh,mong anh hướng dẫn giúp,thật tình em chưa hiểu......
Cảm ơn anh nhiều...........!

thanhbnq
14-05-2009, 02:55 PM
mình có viết 1 chương trình chat trong mạng LAN đơn giản nhưng bằng java! Thấy chủ đề này hay nên vào xem! cảm ơn các bạn!

DarkWizard
17-05-2009, 02:19 AM
Làm chương trình chát đơn giản thì không khó lắm .Client có thể dùng
WinSock còn sever tốt nhất lên sài java .Để nhiều client kết nối được đến sever 1 lúc thì mỗi lần accept ta tạo một tiến trình cho kết nối đó .
Nếu không thì thằng vào sau sẽ đẩy thằng trước ra chỉ có thể nhận 1 client thôi
Best regard !

RocK
17-05-2009, 10:03 PM
Chương trình Chat nói thế chứ cũng không khó lắm đâu.

Căn bản chưa bắt tay làm thì cảm thấy nó khó, nhưng bắt tay vào làm rồi thì thấy nó cũng bình thường.

Những chương trình chat cơ bản có rất nhiều trên mạng, có thể tìm thấy cả đống ở codeproject.com.

Ví dụ:
http://www.codeproject.com/KB/IP/YourOwnSecureProtocol.aspx

Chương trình chat ở link trên còn tiên tiến hơn cả YH ở chỗ nó mã hóa giữ liệu trao đổi giữa Client và Server, giúp bảo mật thông tin tốt hơn, không như YH để ở dạng text thông thường, nên nếu bị sniff thì thôi rồi "lộ hết".

Muốn làm một chương trình chat với MFC có thể dùng class CSocket, hoặc có thể tự viết lấy class để sử dụng.

Ngoài những chức năng I/O cơ bản, còn phải tính đến nhiều thứ khác, chẳng hạn như chống DDOS, chống Fake Client hoặc Fake Server ...

Nếu muốn làm một server để thử nghiệm chat với bạn bè, có thể làm như thế này.

Vào trang no-ip.com đăng ký một tài khoản, sau đó đăng ký lấy một sub domain trỏ về máy định làm máy chủ.
Cấu hình moderm để cho phép các máy khác truy cập vào từ một cổng nào đó.
Cài đặt chương trình của no-ip.com để tự động update IP server mỗi khi thay đổi.
Cấu hình các Client sử dụng sub domain ở trên khi connect đến server.
...

Để nhiều client kết nối được đến sever 1 lúc thì mỗi lần accept ta tạo một tiến trình cho kết nối đó .
Nếu không thì thằng vào sau sẽ đẩy thằng trước ra chỉ có thể nhận 1 client thôi
Best regard !
Có nhiều cách để sử lý vấn đề multi connect, có thể dùng Thread hoặc có thể dùng một mảng để chứa socket của các client connect đến server...

RadiRadic
04-07-2009, 04:11 PM
Cái chương trình chat thì không phải đơn giản nếu làm đoàng hàng, nhớ lúc học cái này có đứa bạn làm trên Java rất kì công, đánh giá phải bằng 8/10 so với chat yahoo.
Bạn muốn chạy chương trình tại máy cục bộ, Server thì mở một cổng bất kỳ ví dụ: 12345, và định địa chỉ IP là 127.0.0.1. Còn phía Client kết nối đến IP: 127.0.0.1 và cổng 12345 thì chương trình chạy được thôi.
Muốn tìm hiểu rõ ràng hơn, thiết nghĩ bạn phải biết lập trình mạng. Trong C# thì tìm hiểu: System.Net.Sockets; TcpListener; TcpClient.

Nếu mình muốn chát ở 2 máy tính trên internet thì phải làm thế nào

icttrack
05-07-2009, 03:49 PM
Không hiểu mấy bạn trong này nghĩ gì khi bảo rằng việc lập trình chương trình chát chỉ trong mạng lan thì không khó nhưng rồi lại toàn đưa ra những dự án mã nguồn mở của nước ngoài chứ không phải bản thân mình viết.
Mình cũng không muốn nói rằng việc lập trình chat lan là khó vì cá nhân mình cũng đã làm rồi. Nhưng nếu nói là dễ thì phải xem lại nếu bạn dùng ngôn ngữ là C.
Các ngôn ngữ khác như C#, VB, hay như PHP về phần socket thì đơn giản hơn nhiều. Khi mình học PHP về socket gửi hàng loạt thông điệp đến máy chủ (viết chương trình hack forum invision power board) mọi chuyện gửi lấy dữ liệu thật đơn giản, đề tài mình gửi còn ở đây: http://www.hvaonline.net/hvaonline/posts/list/27241.hva
nhưng khi mình chuyển sang nghiên cứu ở C, rất nhiều thứ khiến mình phải đau đầu (cũng một phần là do mới học C). Mình cũng đã phải học qua khóa CCNA cộng thêm việc đọc hiểu thêm về TCP/IP (mất một thời gian) mới có thể viết được chương trình đó cũng như hiểu được khá là chắc từng dòng lệnh mình viết ra (http://th6b.net/4rum/showthread.php?t=69, chứ không phải như kiểu mì ăn liền, đọc qua mấy cái cú pháp dùng socket là viết ngay được. Hoặc cũng có thể mình học kém hơn mấy bạn.

RadiRadic
05-07-2009, 04:47 PM
Mình thấy lạ là nhiều người học socket như thế mà chả thấy ai viết SMTP vậy

icttrack
05-07-2009, 04:53 PM
Mình thấy lạ là nhiều người học socket như thế mà chả thấy ai viết SMTP vậy

Muốn viết được chương trình như vậy, bạn phải rành về giao thức SMTP (cộng thêm tầng TCP/IP). Mấy cái này phải đọc tài liệu của RFC liên quan đến giao thức SMTP. Chỉ biết cấu trúc lệnh của winsock thì không thể viết được. Yêu cầu là phải hiểu về mô hình hoạt động của hệ thống mạng máy tính.

RadiRadic
06-07-2009, 07:50 AM
Muốn viết được chương trình như vậy, bạn phải rành về giao thức SMTP (cộng thêm tầng TCP/IP). Mấy cái này phải đọc tài liệu của RFC liên quan đến giao thức SMTP. Chỉ biết cấu trúc lệnh của winsock thì không thể viết được. Yêu cầu là phải hiểu về mô hình hoạt động của hệ thống mạng máy tính.

cho mình hỏi ứng dụng chát qua mang lan có phải là sử dụng IRC để làm không

hugolina36
19-08-2009, 11:31 PM
Xin pro nào co thể giúp em làm cái project này . Thầy bắt buộc em làm cai Client , connect thì em làm được mà cái Login thì cứ báo "Lệng không hợp lệ " hoài .. Xin mọi người giúp em ^_^
P/S:
File đầu tiên là cái đề của thầy , và yêu cầu tạo Client giống y như vậy
File thứ 2 là em làm , nhưng login làm hoài không được. Mong mọi người giúp em ^_^

AlexF
20-08-2009, 08:05 AM
CHương trình chát này đơn giản thôi mà bạn,bạn cố gắng tự làm sử dụng các hàm này nha

WSAStartup
socket
htons
connect
send
recv

cộng đồng cviet có quy định không làm hộ bài tập đâu,nếu khó quá thì bạn cứ nhắn tin về coder_gate@yahoo.com

quangnh89
24-09-2009, 08:12 PM
Nhân tiện, mình mới làm 1 chương trình chat đơn giản , các bạn xem thử xem sao. Hiện tại mới chỉ chat giống như chat room , mình đang phát triển bản kế tiếp.
IP của server để đăng nhập là cái IP đầu tiên trong list My IP của server .
Port thì các bạn có thể để mặc định hoặc để port là 2000
Chương trình còn chưa hoàn thiện lắm, mong mọi người cho ý kiến

neverdie0203
11-10-2009, 01:38 AM
Chào các bạn, mình đang tìm hiểu chương trình Chat như YM chẳng hạn, nhưng đơn giản hơn, chỉ yêu cầu gởi và nhận chữ viết.(định viết bằng MFC không biết thế nào??)
Mình không biết bắt đầu từ đâu, mong các bạn giúp.
Bạn nào có chương trình đơn giản cho mình xin để tham khảo
thanks.

Không biết bắt đầu từ đâu << hơi khó cho anh bạn khi bắt tay đấy.

Đây là một đề tài mình nộp khi còn học năm 2 ở ĐH, có điều làm bằng Java nên cũng có tí kinh nghiệm về vụ này. Do đó để viết được chương trình thì bạn cần phải hiểu một số vấn đề như sau:
1. Tìm hiểu về cơ chết hoạt động Client - Server: cái này nói ra thì ai cũng hiểu nhưng đi sâu và cực kỳ chi tiết thì lại là một vấn đề cho việc phát triển hệ thống. Xin nói rõ một tí xíu xìu xiu. Với chương trình này thì nhiệm vụ của Server là nhận các gói tin từ Client X rồi gửi cho Client Y (Như X mong muốn). Đây là một giải thuật khôgn đơn giản nếu bạn làm một mình.

2. Cơ chế Socket và SocketServer << cái này thì bạn phải tìm hiểu thôi.

3. Giải thuật cho Client và Server: rắc rối của mọi chuyện bắt nguồn từ đây. Từ khi tôi nhận đề tài đến khi nộp đề tài thì tới giải thuật thứ 3 thì mọi thứ mới hoàn chỉnh.

3a/Client: Nhiệm vụ của Client là gửi một gói Msg (Class - nhớ là Serializable) cho Server mà gói này được cắt làm 3 phần (người gởi - mẫu tin - người nhận). Đồng thời trên Client có chứ một Thread quan trọng để chờ một gói tin gửi về từ Server và phân tích gói tin này từ người gửi là ai để xác nhận mẫu tin rơi vào đúng window của người gởi. Đại khái là thế

3b/Server: khá điên đầu với giải thuật chỗ này. Trên Server có tới vài Thread để thực hiện vài kiểm tra. Khôgn còn nhớ nhiều lắm nhưng cũng khá phức tạp. 1 Thread có trách nhiệm lấy hết tất cả các mấu tin từ Client và đưa nó vào một mãng đồng thời Thread khác có nhiệm vụ chuyển từng mẫu tin này đến Client đích (dĩ nhiên là kiểm tra xem Client đó có online hay không)


Hy vọng câu trả lời này giúp bạn tìm ra giải pháp