Лекцийн сүүлийн 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;
багшаа визуал стутиогийн registration code тавьж өгөөч ?
ReplyDeleteregistration code ?!
ReplyDeleteRE: anonymous
ReplyDeleteVS.net C# Express Edition, MS SQL Server Express Edition geed unegui heregleheer bdg shuude. Dandaa hulgain huulbar ashiglaj bsnaas deer :)
Visual Studio .NET 2005
ReplyDeletes/n: KGR3T-F2C26-RRTGT-D6DQT-QBBB3
Visual Studio 2008 Professional Edition
Нэр гэдэгт нь: Flynn1982 s/n: XMQ2Y 4T3V6 XJ48Y D3K2V 6C4WT эсвэл: XMQ2Y4T3V6XJ48YD3K2V6C4WT
Зав гаргаж хэрэгтэй коммент бичсэн А. Жаргалсайхан багшид баярлалаа.
ReplyDeleteбагшаа энэ клиент сервер хоёроо
ReplyDeleteсалгаад 2 апликейшн болгож чадахгүй байна аа
bagsheeeeeeeeeeeeeeee
ReplyDeleteСайн байна уу, Аноним,
ReplyDeleteЛаб, бие даалтын цагууд дээр асуух хэрэгтэй.
багшаа лаынхаа хугацаагаа сугаж хайрлаач
ReplyDelete@Anonymous
ReplyDeleteХугацаандаа л үзэх байх даа.
System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
ReplyDeleteclientSocket.Connect("10.0.2.1", 1000); гэж үүсгэх
IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("10.0.2.1"), 1000);
clientSocket.Connect(serverEndPoint);үүсгэх 2 ялгаатай юу багшаа
Эхнийхээр үүсгэхээр server талд connection хаагдахгүй байгаа юм тайлбарлаж өгөөч. Заавал хариулаарай.
@Anonymous
ReplyDeleteСүүлийнх нь илүү зөв харагдаж байна. IPEndPoint ашиглаад үүсгэхэд асуудалгүй болох байх гэж бодож байна. Лекц дээр бол IPEndPoint ашиглаж байгаагаар зааж байсан.
Амжилт хүсье.