وباکا

آموزش تخصصی برنامه نویسی وب

نمونه پروژه تحت شبکه برای چت(chat) بصورت گرافیکی و با کمک فرم ها

برنامه کلاینت/سرور برای گپ که بصورت گرافیکی و با استفاده از فرم ها نوشته شده است. در این پروژه برنامه سرور و برنامه کلاینت می توانند با هم پیام هایی رد وبدل کنند.پروژه حاضر بصورت کلاینت/سرور برای گپ که بصورت گرافیکی و فرم ها نوشته شده است.

 

در این پروژه برنامه سرور و برنامه کلاینت می توانند با هم پیام هایی رد وبدل کنند. در این پروژه از کلاس های TcpListener ، TcpClient و Stream استفاده شده است که توضیح کامل آنها در همین سایت قرار داده شده است.

دو پروژه سی شارپ بنام های Server و Client ایجاد شده اند که هر کدام دارای یک فرم هستند.
طراحی فرم سرویس دهنده بصورت زیر است:
کدنویسان - فرم سرور
کدنویسی فرم سرور بصورت زیر است:

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;
using System.IO;
namespace Server
{
public partial class frmserver : Form
{
TcpListener server;
TcpClient client;
Stream stream;
public frmserver()
{
InitializeComponent();
}
private void btnStart_Click(object sender, EventArgs e)
{
IPAddress ip = IPAddress.Parse(txtServer.Text);
server = new TcpListener(ip, 2500);
server.Start();
client = server.AcceptTcpClient();
stream = client.GetStream();
timer.Enabled = true;
timer.Start();
}
private void btnSend_Click(object sender, EventArgs e)
{
byte[] b = new byte[50];
b = ASCIIEncoding.ASCII.GetBytes(txtMsg.Text);
stream.Write(b, 0, txtMsg.Text.Length);
txtMsg.Text = "";
}
private void timer_Tick(object sender, EventArgs e)
{
if (client.Available !=0 )
{
byte[] b=new byte[50];
stream.Read(b, 0, 50);
lstMsgs.Text += "rnClient:" + ASCIIEncoding.ASCII.GetString(b) ;
}
}
private void frmserver_Load(object sender, EventArgs e)
{
txtServer.Text = Dns.GetHostByName(Dns.GetHostName()).AddressList[0].ToString();
}
}
}

در جعبه متن بالای فرم IP مربوط به سرور وارد می شود. بصورت خودکار هنگام بالا آمدن فرم، IP سیستم بدست آمده و در جعبه نشان داده خواهد شد.
با زدن دکمه Start ، یک شی TcpListener ایجاد شده و استارت شده و منتظر رسیدن درخواست از سمت کلاینت می ماند.
و به محض رسیدن درخواست اتصال، یک شیء TcpClient ایجاد شده، یک شیء Stream ایجاد شده و تایمر را به کار می اندازد.
با هر تیک ساعت تایمرشیء  client بررسی می شود اگر پیامی رسیده بود به لیست پیامهای دریافتی اضافه می شود.
و با وارد کردن پیام و زدن دکمه Send پیام ارسال می شود.
طراحی فرم سرویس گیرنده بصورت زیر است:
کدنویسان - فرم کلاینت
کدنویسی فرم سرویس گیرنده بصورت زیر است:

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;
using System.IO;
namespace client
{
public partial class frmClient : Form
{
TcpClient client;
Stream stream;
public frmClient()
{
InitializeComponent();
}
private void btnConnect_Click(object sender, EventArgs e)
{
client = new TcpClient();
client.Connect(txtServer.Text, 2500);
stream = client.GetStream();
timer.Enabled = true;
timer.Start();
}
private void btnSend_Click(object sender, EventArgs e)
{
byte[] b = new byte[50];
b = ASCIIEncoding.ASCII.GetBytes(txtMsg.Text);
stream.Write(b, 0, txtMsg.Text.Length);
txtMsg.Text = "";
}
private void timer_Tick(object sender, EventArgs e)
{
if (client.Available != 0)
{
byte[] b = new byte[50];
stream.Read(b, 0, 50);
lstMsgs.Text += "rnServer:" + ASCIIEncoding.ASCII.GetString(b) ;
}
}
}
}

عملکرد فرم سرویس گیرنده هم مشابه سرویس دهنده است. با این تفاوت که هنگام زدن دکمه Connect ، یک شیء TcpClient ایجاد شده و متد Connect برای اتصال به سرور اجرا می شود.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

فهرست مطالب