2015年8月20日 星期四

How to C# Chat Client

How to C# Chat Client

The Microsoft .NET framework provides two namespaces,System.Net and System.Net.Sockets for managed implementation of Internet protocols that applications can use to send or receive data over the Internet . The C# Chat Client here is a Windows based Application and its main function is to send message to the Chat Server.
In the previous section C# Multi Threaded Socket Program we saw a C# Multithreaded Server Socket Program communicate with more than one Client at the same time . If you don't know the basics of Socket programming , take a look at the section C# Socket Programming before you start this section.
The C# Chat Server Program has two sections.
2. Chat Client
csharp-chat-client
Chat Client
The Chat Client here is to connect the PORT 8888 of the C# Chat Server in " 127.0.0.1 " . Here we give " 127.0.0.1 " , because Chat Server and Chat Client are running on the same machine . When we start the Chat Client program , we have to enter a User Name for identifying the client in Server side . The Client program connect to the Chat Server and start a Thread for receive the messages from Server side client . Here we implement an infinite loop in the function getMessage() and call this function in a Thread .
Create a new C# Windows based project and put the source code in it.


using System;
using System.Windows.Forms;
using System.Text;
using System.Net.Sockets ;
using System.Threading;

namespace WindowsApplication2
{
    public partial class Form1 : Form
    {
        System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
        NetworkStream serverStream = default(NetworkStream);
        string readData = null;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox2.Text + "$");
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            readData = "Conected to Chat Server ...";
            msg();
            clientSocket.Connect("127.0.0.1", 8888);
            serverStream = clientSocket.GetStream();

            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(textBox3.Text + "$");
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();

            Thread ctThread = new Thread(getMessage);
            ctThread.Start();
        }

        private void getMessage()
        {
            while (true)
            {
                serverStream = clientSocket.GetStream();
                int buffSize = 0;
                byte[] inStream = new byte[10025];
                buffSize = clientSocket.ReceiveBufferSize;
                serverStream.Read(inStream, 0, buffSize);
                string returndata = System.Text.Encoding.ASCII.GetString(inStream);
                readData = "" + returndata;
                msg();
            }
        }

        private void msg()
        {
            if (this.InvokeRequired)
                this.Invoke(new MethodInvoker(msg));
            else
                textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + readData;
        } 

    }
}

The C# Chat Server Program has two sections. 
1. C# Chat Server 

2. Chat Client 

Refer to: http://csharp.net-informations.com/communications/csharp-chat-client.htm

沒有留言:

張貼留言