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

2 پاسخ

0 امتیاز

سلام 

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

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

روش دوم قسمت اول منطقی هست حالا متد چه متدی باید باشه که کاربر ۲ بفهمه.؟ تازه کارم میشه با کد بگید؟سوکت نویسی رو در قالب مثال توضیح بدید تا مشکلم حل بشه
ویرایش شده توسط
توسط (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,921 کاربر

دسته بندی ها

...