PDA

View Full Version : نوشتن نرم افزار برای کار روی شبکه محلی



masoomenoroozi
چهارشنبه 05 تیر 1392, 11:10 صبح
با سلام خدمت دوستان محترم
روزهای گرم تابستونتون بخیر

قراره یه برنامه ای با سی شارپ و اس کیو ال سرور بنویسم که توی یه محیطی که شامل سه سیستم هست اجرا بشه . می خوام کاربری که تغییراتی روی اطلاعات بانک نرم افزار میده کاربر دیگه از پی سی دیگه این تغییراتو ببینه

یعنی نرم افزار اشتراکی باشه

کسی میتونه کمکم کنه
فقط راه حلهای آسون بدین چون خیلی ماهر نیستم
مرسی از دوستایی که راهنمایی میکنن

CsharpNevisi
چهارشنبه 05 تیر 1392, 12:06 عصر
سلام دوست عزیز .... !!!
خب برای برنامه نویسی حرفه ای شبکه باید بری سمت سوکت پروگرمینگ ولی یه راه خیلی آسون تر هست که میتونه این کارتو راه بندازه ... !!
ااین کتاب کلا 8 صفحه است و برنامه ها میتونن تو شبکه از یک بانک استفاده کنن .... تو این روش برنامه ها به هم ارتباطی ندارند ولی میتونی از طریق بانک بهشون دستور بدی ... !!
http://s4.picofile.com/file/7819293331/NetworkProgramming.pdf.html

masoomenoroozi
چهارشنبه 05 تیر 1392, 13:08 عصر
سلام دوست عزیز .... !!!
خب برای برنامه نویسی حرفه ای شبکه باید بری سمت سوکت پروگرمینگ ولی یه راه خیلی آسون تر هست که میتونه این کارتو راه بندازه ... !!
ااین کتاب کلا 8 صفحه است و برنامه ها میتونن تو شبکه از یک بانک استفاده کنن .... تو این روش برنامه ها به هم ارتباطی ندارند ولی میتونی از طریق بانک بهشون دستور بدی ... !!
http://s4.picofile.com/file/7819293331/NetworkProgramming.pdf.html

ربط دادن از طریق بانک یعنی چی؟

CsharpNevisi
چهارشنبه 05 تیر 1392, 13:59 عصر
برنامه ها میتونن از طریق پرت ها با هم ارطبات برقرار کنن ... مثل برنامه چت روم ولی اینجا فقط ی دونه بانک تو شبکه درست میشه ... "البته خودم این کتابو نخوندم ولی فک کنم اینطوری کار کنه" این بانک به صورت اشتراکی بین برنامه ها استفاده میشه ... !!!!
تو میتونی مثلا یه فیلد دستور مثلا واسه سیستم 2 ایجاد کنی ... !!!!
مثلا توش بزاری خاموش بعد برنامه موجود تو سیستم 2 بیاد از تو فیلد مقدارو بخونه و سیستمو خاموش کنه .. !!!
البته این کار چندان معقولانه نیست ... !!!
بهترین راه برنامه نویسی سوکته .... !!!!
ولی این کتاب برای راه انداختن کارت مفیده .. !!!
تو فقط میخوایی اطلاعات بانک اشتراکی باشه .. درسته ... !!!

قراره یه برنامه ای با سی شارپ و اس کیو ال سرور بنویسم که توی یه محیطی که شامل سه سیستم هست اجرا بشه . می خوام کاربری که تغییراتی روی اطلاعات بانک نرم افزار میده کاربر دیگه از پی سی دیگه این تغییراتو ببینه
اگه دوست داشتی با سوکت کار کنی این کد میتونه کمکت کنه که واسه چت رومه :

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

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

namespace Clint
{
public partial class Form1 : Form
{

private TcpListener listen;
private Socket sock;
private NetworkStream stream;
private BinaryReader bread;
private BinaryWriter bwrite;
private Thread th;
private bool bol;
public static string strCopmputerName;

public Form1()
{
InitializeComponent();
}

private void receive_data()
{
while (!bol)
{

string data = bread.ReadString();
manage_receive(data);
}
}

public delegate void ManageReceiveDataDlg(string cmd);
private void manage_receive(string message)
{
if (this.InvokeRequired)
{
ManageReceiveDataDlg manage = new ManageReceiveDataDlg(manage_receive);
this.Invoke(manage, new object[] { message });
}
else
{
//txtCode.Text = message;
txtReseve.Text += message + Environment.NewLine;
}
}

public void send_data(string message)
{
bwrite.Write(strCopmputerName + ": " + message); //از این خط برای نوشتن اطلاعات استفاده می شود
bwrite.Flush(); //از این متد برای حذف اطلاعات از حافظه استفاده می شود
}

private void button1_Click(object sender, EventArgs e)
{
try
{
int port = 1234; //یک پورت را وارد می کند
sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //یک سوکت می سازد
sock.Connect(IPAddress.Loopback, port); //به سوکت مورد نظر یک پورت و یک آی پی اختصاص می دهد
stream = new NetworkStream(sock); //این شی دو متد دارد که اطلاعات را به صورت بایت می خواند و می نویسد-read and write
bread = new BinaryReader(stream); //اطلاعات را به صورت باینری می خواند
bwrite = new BinaryWriter(stream); // اطلاعات را به صورت باینری می خواند
th = new Thread(receive_data);
th.Start();

IPHostEntry iphost = Dns.GetHostEntry(IPAddress.Loopback);
string hostname = iphost.HostName;
strCopmputerName = hostname;

button3.Enabled = true;
label1.Text = "اتصال با موفقیت انجام شد";
label1.ForeColor = Color.Green;
button1.Enabled = false;
button2.Enabled = true;
txtSend.Enabled = true;
}

catch (Exception ex)
{
label1.ForeColor = Color.Red;
label1.Text = "ارتباط دچار مشکل شده است";
}
}

private void button2_Click(object sender, EventArgs e)
{

switch (txtSend.Text)
{
case "[MH:Abute]":
{
send_data("محسن فتحی .. متولد 1373 .. تلفن : 09356471322 .... i love programming");
txtReseve.Text += "محسن فتحی .. متولد 1373 .. تلفن : 09356471322 .... i love programming" + Environment.NewLine;
txtSend.Text = "";
}
break;
default:
{
send_data(txtSend.Text);
txtReseve.Text += strCopmputerName + ": " + txtSend.Text + Environment.NewLine;
txtSend.Text = "";
}
break;
}
}
private void txtCode_TextChanged(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)
{
txtReseve.ForeColor = Color.Red;
txtSend.Enabled = false;
button2.Enabled = false;
send_data("از برنامه خارج شد");
Application.Exit();
}

private void Form1_Load(object sender, EventArgs e)
{
this.Left = 0;
}
}
}


برنامه سرویس دهنده

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

namespace ChatNetwork
{
public partial class Form1 : Form
{
private TcpListener listen;
private Socket sock;
private NetworkStream stream;
private BinaryReader bread;
private BinaryWriter bwrite;
private Thread th;
private bool bol;
public static string strCopmputerName;

public Form1()
{
InitializeComponent();
}

private void receive_data()
{
while (!bol)
{
string data = bread.ReadString();
manage_receive(data);
}
}

public delegate void ManageReceiveDataDlg(string cmd);
private void manage_receive(string message)
{
if (this.InvokeRequired)
{
ManageReceiveDataDlg manage = new ManageReceiveDataDlg(manage_receive);
this.Invoke(manage, new object[] { message });
}
else
{
txtReseve.Text += message + Environment.NewLine;
}
}

public void send_data(string message)
{
bwrite.Write(strCopmputerName + ": " + message); //از این خط برای نوشتن اطلاعات استفاده می شود
bwrite.Flush(); //از این متد برای حذف اطلاعات از حافظه استفاده می شود
}

private void button1_Click(object sender, EventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{
switch (txtSend.Text)
{
case "[MH:Abute]":
{
send_data("محسن فتحی .. متولد 1373 .. تلفن : 09356471322 .... i love programming");
txtReseve.Text += "محسن فتحی .. متولد 1373 .. تلفن : 09356471322 .... i love programming" + Environment.NewLine;
txtSend.Text = "";
}
break;
default:
{
send_data(txtSend.Text);
txtReseve.Text += strCopmputerName + ": " + txtSend.Text + Environment.NewLine;
txtSend.Text = "";
}
break;
}
}

private void Form1_Load(object sender, EventArgs e)
{
this.Left = 500;
}

private void timer1_Tick(object sender, EventArgs e)
{
int port = 1234; //شماره پورت وارد می کند
listen = new TcpListener(port); //به پورت مورد نظر گوش می دهد
listen.Start();//شروع به شنیدن می کند
sock = listen.AcceptSocket(); //درخواست کلاینت را قبول می کند
stream = new NetworkStream(sock);
bread = new BinaryReader(stream);
bwrite = new BinaryWriter(stream);
label1.Text = "اتصال با موفقیت انجام شد";
label1.ForeColor = Color.Green;
IPHostEntry iphost = Dns.GetHostEntry(IPAddress.Loopback);
string hostname = iphost.HostName;
strCopmputerName = hostname;
th = new Thread(receive_data);
th.Start();
txtSend.Enabled = true;
timer1.Enabled = false;
}

private void button3_Click(object sender, EventArgs e)
{
txtReseve.ForeColor = Color.Red;
txtSend.Enabled = false;
button2.Enabled = false;
send_data("از برنامه خارج شد");
Application.Exit();
}
}
}


این چترومیه که خودم درست کردم .... !!!
اگر دوست داری اطلاع بده برات پروژه رو بزارم (برام پیغام خصوصی بزار)