Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
- using System.ServiceModel;
- using System.ServiceModel.Channels;
- namespace ChatClient
- {
- // IChatService = our hosted interface
- public partial class ChatClientForm : Form
- {
- private ChatService _chatServer;
- // IChatChannel = channel for chat service
- private IChatChannel channel;
- // IChatChannel = channel for chat service
- private DuplexChannelFactory<IChatChannel> factory;
- public ChatClientForm()
- {
- InitializeComponent();
- _chatServer = new ChatService();
- this.AcceptButton = btnLogin;
- }
- private void btnLogin_Click(object sender, EventArgs e)
- {
- if (!string.IsNullOrEmpty(txtUserName.Text.Trim()))
- {
- try
- {
- _chatServer.NewJoin += ChatClient_NewJoin;
- _chatServer.MessageSent += ChatClient_MessageSent;
- _chatServer.RemoveUser += ChatClient_RemoveUser;
- channel = null;
- _chatServer.UserName = txtUserName.Text.Trim();
- InstanceContext context = new InstanceContext(new ChatService());
- // IChatChannel = channel for chat service
- factory = new DuplexChannelFactory<IChatChannel>(context, "ChatEndPoint");
- channel = factory.CreateChannel();
- // IOnlineStatus = defines the properties and events
- // used by network-enabled objects to indicate
- // network availability.
- IOnlineStatus status = channel.GetProperty<IOnlineStatus>();
- status.Offline += new EventHandler(Offline);
- status.Online += new EventHandler(Online);
- channel.Open();
- channel.Join(_chatServer.UserName);
- grpMessageWindow.Enabled = true;
- grpUserList.Enabled = true;
- grpUserCredentials.Enabled = false;
- this.AcceptButton = btnSend;
- rtbMessages.AppendText("*****************************WEL-COME to Chat Application*****************************\r\n");
- txtSendMessage.Select();
- txtSendMessage.Focus();
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- }
- }
- }
- void ChatClient_RemoveUser(string name)
- {
- try
- {
- rtbMessages.AppendText("\r\n");
- rtbMessages.AppendText(name + " left at " + DateTime.Now.ToString());
- lstUsers.Items.Remove(name);
- }
- catch (Exception ex)
- {
- System.Diagnostics.Trace.WriteLine(ex.ToString());
- }
- }
- void ChatClient_MessageSent(string name, string message)
- {
- if (!lstUsers.Items.Contains(name))
- {
- lstUsers.Items.Add(name);
- }
- rtbMessages.AppendText("\r\n");
- rtbMessages.AppendText(name + " says: " + message);
- }
- void ChatClient_NewJoin(string name)
- {
- rtbMessages.AppendText("\r\n");
- rtbMessages.AppendText(name + " joined at: [" + DateTime.Now.ToString() + "]");
- lstUsers.Items.Add(name);
- }
- void Online(object sender, EventArgs e)
- {
- rtbMessages.AppendText("\r\nOnline: " + _chatServer.UserName);
- }
- void Offline(object sender, EventArgs e)
- {
- rtbMessages.AppendText("\r\nOffline: " + _chatServer.UserName);
- }
- private void btnSend_Click(object sender, EventArgs e)
- {
- channel.SendMessage(_chatServer.UserName, txtSendMessage.Text.Trim());
- txtSendMessage.Clear();
- txtSendMessage.Select();
- txtSendMessage.Focus();
- }
- private void ChatClient_FormClosing(object sender, FormClosingEventArgs e)
- {
- try
- {
- if (channel != null)
- {
- channel.Leave(_chatServer.UserName);
- channel.Close();
- }
- if (factory != null)
- {
- factory.Close();
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(ex.ToString());
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement