Tugas Aplikasi Chat dengan UDP

Dear all, sekarang saya mau post program sederhana menggunakan C# walaupun simple tetapi kita lihat manfaatnya karena sesuatu yang besar berawal dari hal kecil yang dilakukan setiap hari dibawah ini sekilas dari flowchart sederhana yang saya miliki:

flochart

chatting

selanjutnya program yang di dapat dari proses belajar sebagai berikut

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
//import Libary
using System.Net.Sockets;
using System.Threading;
using System.Net;
using System.IO;

namespace Aplicationpelatihan1Csharp
{
    public partial class Form1 : Form
    {

        delegate void AddMessage(string message);
        string userName;

        string broadcastAddress = "";
        UdpClient receivingClient = new UdpClient(10000);
           UdpClient sendingClient;
        
           Thread receivingThread;

        private const int port = 10000;
        bool done = false;
        UdpClient listener;
        IPEndPoint groupEP;
        Socket soc;

        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_load);
            button1.Click += new EventHandler(button1_Click);
            //soc = new Socket(
        }

        public int connect()
        {
           // this.Load += new EventHandler(Form1_load);
            //button1.Click += new EventHandler(button1_Click);

            return 1;
        }

        private void Form1_load(object sender, EventArgs e)
        {
            textBox3.Focus();
            InitializeSender();
            InitializeReceiver();
        }

        private void InitializeSender()
        {
            //broadcastAddress = textBox1.Text;
            sendingClient = new UdpClient(textip.Text, port);
            sendingClient.EnableBroadcast = true;
        }

        private void InitializeReceiver()
        {
            ThreadStart start = new ThreadStart(Receiver);
            receivingThread = new Thread(start);
            receivingThread.IsBackground = true;
            receivingThread.Start();
        }

       
        private void Receiver()
        {
            IPEndPoint endPoint = new IPEndPoint(IPAddress.Any, port);
            AddMessage messageDelegate = MessageReceived;

            while (true)
            {
                byte[] data = receivingClient.Receive(ref endPoint);
                string message = Encoding.ASCII.GetString(data);
                Invoke(messageDelegate, message);
                System.Console.Beep(1500, 300);
            }
        }

        private void MessageSender(string message) {
            richTextBox1.Text += textBox3.Text + "\n";
        }

        private void MessageReceived(string message)
        {
            
            richTextBox1.Text +=  message + "\n";
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //textBox1.Text = "testing submit";

            textBox3.Text = textBox3.Text.TrimEnd();

            if (!string.IsNullOrEmpty(textBox3.Text))
            {
                string toSend = "";
                if (!string.IsNullOrEmpty(textBox3.Text))
                {
                    toSend = "<" + textBox2.Text + "> : " + textBox3.Text;
                }
                else
                {
                    toSend = "<" + Environment.MachineName + "> : " + textBox3.Text;
                }
                byte[] data = Encoding.ASCII.GetBytes(toSend);
                sendingClient.Send(data, data.Length);
                textBox3.Text = "";
            }

            textBox3.Focus();
        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button2_Click(object sender, EventArgs e)
        {
            int status = this.connect();
            if (status == 1)
            {
                button2.Text = "Connected";
                button2.Enabled = false;
                textBox3.Focus();
            }
        }

        private void textip_TextChanged(object sender, EventArgs e)
        {

        }
    }
}

maka yang dihasilkan adalah aplikasi chating sebagai berikut:
a. Menggunakan IP broadcast
broadcast
b. Menggunakan IP Private (unicast)
unicast

Berdasarkan layer TCP/IP dijelaskan sebagai berikut:
TCPIP

Penjelasan singkat sebagai berikut:
1. Application layer berfungsi untuk memberikan interface antara user dengan jaringan komputer saat membuka aplikasi chating.
2. Transport layer berfungsi untuk menerima dan mempersiapkan data aplikasi untuk siap ditransfer ke lapisan Network, dan menerima data dari lapisan network untuk disajikan menjadi data aplikasi.
3. Internet layer berfungsi untuk pengiriman paket spesifik ke mesin tertentu menggunakan IP address.
4. Network Interfaces layer berfungsi untuk menyediakan layanan supaya setiap bagian data bisa dipertukarkan lewat jaringan antara perangkat-perangkat
5. Physical layer berfungsi untuk menghubungkan aplikasi satu dengan aplikasi lain dalam satu jaringan.

Advertisements

Posted on October 17, 2013, in C#. Bookmark the permalink. 2 Comments.

  1. kok gak mau ya aq nyoba

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: