Sunday, October 17, 2010

IS203 - Лекц 9 - Сокет програмчлалын демо

Лекцийн сүүлийн 10 минутад хийж үзүүлсэн сокет програмчлалын демо. 

Уг код нь нэг форм дээр клиент болон серверийг хамтад нь багтаасан байгаа. Оюутан та уг кодыг хоёр форм салгаж байршуулах хэрэгтэй. Нэгэнтээ мэдээлэл дамжуулаад сурчихсан бол түүнийгээ ашиглан өөрийн гэсэн протокол зохион сүлжээний орчны програм (чат, тоглоом, онгоц буудах, О-Х гэм мэт) хийх хэрэгтэй.


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;

using System.Net;

using System.Net.Sockets;



namespace is203_socket_demo

{

    public partial class Form1 : Form

    {

        Socket m_serverHost = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

        TcpListener m_tcpListener;

        public Form1()

        {

            InitializeComponent();

            IPEndPoint ipendPoint = new IPEndPoint (IPAddress.Parse("127.0.0.1"), 8888);

            this.m_tcpListener = new TcpListener(ipendPoint);



        }



        private void button1_Click(object sender, EventArgs e)

        {



        }



        private void btnStartServer_Click(object sender, EventArgs e)

        {

            this.m_tcpListener.Start();

            this.timerServer.Enabled = true;

        }



        private void timerServer_Tick(object sender, EventArgs e)

        {

            if (this.m_tcpListener.Pending() == true)

            {

                this.m_serverHost = this.m_tcpListener.AcceptSocket();

                if( this.m_serverHost.Poll(1, SelectMode.SelectRead))

                {  

                    int  numBytes  = this.m_serverHost.Available;  

                    byte[] data = new byte[numBytes];

                    this.m_serverHost.Receive(data);

                    this.textBox2.Text = System.Text.ASCIIEncoding.ASCII.GetString(data);

                   

                }

            }

        }



        private void btnSendText_Click(object sender, EventArgs e)

        {

            Socket m_clientHost = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

       

            IPAddress ipServer = IPAddress.Parse("127.0.0.1");

            IPEndPoint ipendServer = new IPEndPoint (ipServer, 8888);



            m_clientHost.Connect(ipendServer) ;

            byte [] dataSend  =     System.Text.ASCIIEncoding.ASCII.GetBytes(this.textBox3.Text);

            m_clientHost.Send(dataSend, 0, dataSend.Length,SocketFlags.None);

            if (m_clientHost.Connected == true)

            {

                m_clientHost.Close();

            }

        }


       

    }

}

Ч. Эрдэнэбат
2010-10-17;

12 comments:

  1. багшаа визуал стутиогийн registration code тавьж өгөөч ?

    ReplyDelete
  2. registration code ?!

    ReplyDelete
  3. RE: anonymous
    VS.net C# Express Edition, MS SQL Server Express Edition geed unegui heregleheer bdg shuude. Dandaa hulgain huulbar ashiglaj bsnaas deer :)

    ReplyDelete
  4. Visual Studio .NET 2005

    s/n: KGR3T-F2C26-RRTGT-D6DQT-QBBB3

    Visual Studio 2008 Professional Edition

    Нэр гэдэгт нь: Flynn1982 s/n: XMQ2Y 4T3V6 XJ48Y D3K2V 6C4WT эсвэл: XMQ2Y4T3V6XJ48YD3K2V6C4WT

    ReplyDelete
  5. Зав гаргаж хэрэгтэй коммент бичсэн А. Жаргалсайхан багшид баярлалаа.

    ReplyDelete
  6. багшаа энэ клиент сервер хоёроо
    салгаад 2 апликейшн болгож чадахгүй байна аа

    ReplyDelete
  7. bagsheeeeeeeeeeeeeeee

    ReplyDelete
  8. Сайн байна уу, Аноним,
    Лаб, бие даалтын цагууд дээр асуух хэрэгтэй.

    ReplyDelete
  9. багшаа лаынхаа хугацаагаа сугаж хайрлаач

    ReplyDelete
  10. @Anonymous
    Хугацаандаа л үзэх байх даа.

    ReplyDelete
  11. System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
    clientSocket.Connect("10.0.2.1", 1000); гэж үүсгэх

    IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("10.0.2.1"), 1000);
    clientSocket.Connect(serverEndPoint);үүсгэх 2 ялгаатай юу багшаа

    Эхнийхээр үүсгэхээр server талд connection хаагдахгүй байгаа юм тайлбарлаж өгөөч. Заавал хариулаарай.

    ReplyDelete
  12. @Anonymous
    Сүүлийнх нь илүү зөв харагдаж байна. IPEndPoint ашиглаад үүсгэхэд асуудалгүй болох байх гэж бодож байна. Лекц дээр бол IPEndPoint ашиглаж байгаагаар зааж байсан.
    Амжилт хүсье.

    ReplyDelete