0 امتیاز
سلام.برنامه ایی تحت شبکه با سی شارپ نوشتم و چند سیستم همزمان از یک دیتابیس اطلاعات میخونند.یک مشکل هست. مثلا اگر یک کاربر ثبت جدید در دیتابیس انجام بده سایر کاربران آخرین تغییرات دیتابیس رو بلافاصله نمی تونند ببینند و باید فرم مورد نظر یک بار باز و بسته بشه تا اطلاعات جدید رو ببینند. چا باید کرد.

2 پاسخ

0 امتیاز

سلام 

اگه پروژه شما دیتای حجیمی نداره میتونید برای هر کاربر از تایمر استفاده کنید

یا اینکه یه متد تعریف کنید بعد از ثبت و یا تغغیر در دیتابیس اون درخواست رو از طریق شبکه به سایر کاربران  بفرسته و اتوماتیک دیتاگرید آپدیت بشه

چه متدی؟میشه کد مدنظر رو اشاره کنید
توسط (152 امتیاز) 3 15
همون متد رفرش دیتاگرید مثلا کاربر1 اطلاعات رو درج کرد

کاربر 2 هم داره کار میکنه باید کاری کنی که بدون اینکه کارش بهم بخوره دیتاگرید اپدیت بشه

مثلا همون متد دیتاگرید رو داخل تایمر بزاری

روش2

بعد از اپدیت دیتابیس توسط کاربر 1 با متد ارسال اطلاعات توسط سوکت یه پیام به کاربر2 برسه که دیتابیس تغییر یافته لازمه رفرش بشه

همون متد رفرش رو هم داخل یه باتن بزاری
توسط (7,164 امتیاز) 4 7 141
روش دوم قسمت اول منطقی هست حالا متد چه متدی باید باشه که کاربر ۲ بفهمه.؟ تازه کارم میشه با کد بگید؟سوکت نویسی رو در قالب مثال توضیح بدید تا مشکلم حل بشه
ویرایش شده توسط
توسط (152 امتیاز) 3 15

 

ببینید دوست عزیز ابتدا یه متد و یا کلاس برای ارسال پیام اونم استاتیک درست میکنید من نمونه کد رو میزارم

وقتی کاربر عمل ثبت رو انجام داد در انتهای اون دستور این کلاس یا متد رو قرار میدید 

یعنی به محض درج اطلاعات در دیتابیس پیامی از سوی کاربر شما به سرویس گیرنده در انسو ارسال میشه

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

این برای همون ارسال کننده پیام هست
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using System.Net;
using System.Net.Sockets;namespace Server1
{
class Program
{
static void Main(string[] args)
{
IPAddress ip = IPAddress.Parse("192.168.11.30");
int port = 2500;
TcpListener s = new TcpListener(ip, port);
s.Start();
Console.WriteLine("Server Started.. ");
Socket c = s.AcceptSocket();
Console.WriteLine("1 Client connected.. ");
byte[] b1 = new byte[80];
b1 = ASCIIEncoding.ASCII.GetBytes("Hello ,please send message:");
c.Send(b1);
byte[] b2 = new byte[80];
c.Receive(b2);
Console.WriteLine( ASCIIEncoding.ASCII.GetString(b2) );
c.Close();
Console.ReadKey();
}
}
}

اینم برای شخص گیرنده است


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;using System.Net;
using System.Net.Sockets;namespace Client
{
class Program
{
static void Main(string[] args)
{
// ایجاد ارتباط
// TCP
// با استفاده از سوکت
string msg;
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream
, ProtocolType.Tcp);
c.Connect("192.168.11.1", 2500);
byte[] b1 = new byte[80];
c.Receive(b1);
Console.Write( ASCIIEncoding.ASCII.GetString(b1) );
msg = Console.ReadLine();
byte[] b2 = new byte[80];
b2 = ASCIIEncoding.ASCII.GetBytes(msg);
c.Send(b2);
c.Close();
}
}
}

البته مستندات دقیق رو میتونی اینجا پیدا کنی

https://docs.microsoft.com/en-us/dotnet/framework/network-programming/socket-code-examples

توسط (7,164 امتیاز) 4 7 141
0 امتیاز

سلام

یه سمپل نوشتم البته بسیار ساده ولی کاربردی یه سرور که چندین کلاینت میتونن بهش وصل بشن و پیام بفرستن

کافیه ابتدا سرور رو اجر کنید بعد چندین کلاینت رو اجرا کن هر پیامی میفرستی همه میبینن

http://www.w3-farsi.com/forum/?qa=blob&qa_blobid=16397332744352450633

 

سوال جدید

2,337 سوال

2,871 پاسخ

3,725 دیدگاه

3,926 کاربر

دسته بندی ها

...