PDA

View Full Version : سوال: برنامه نویسی Client/Server



azade_r
چهارشنبه 22 اردیبهشت 1389, 08:58 صبح
کسی می تونه منو در این زمینه راهنمایی کنه ، که برای نوشتن یک برنامه که سمت کلاینت و سرور داشته باشه باید سراغ چه مبحثی در C#‎ رفت؟
و اینکه اگر یک برنامه داشته باشیم که اون رو در کامپیوتر کاربر و کامپیوتر ادمین نصب کرده باشیم اینها چطوری می تونند هر دو با داده های یک دیتا بیس کار کنند؟

cardano7
چهارشنبه 22 اردیبهشت 1389, 09:41 صبح
کسی می تونه منو در این زمینه راهنمایی کنه ، که برای نوشتن یک برنامه که سمت کلاینت و سرور داشته باشه باید سراغ چه مبحثی در C#‎‎ رفت؟
و اینکه اگر یک برنامه داشته باشیم که اون رو در کامپیوتر کاربر و کامپیوتر ادمین نصب کرده باشیم اینها چطوری می تونند هر دو با داده های یک دیتا بیس کار کنند؟

این یک نمونه مثال از TCP/IP هست که بین Client و سرور در آن ارتباط برقرار می شه:



//TCPIP-Server Program.cs
using System;
using System.Threading;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Configuration;

class EmployeeTCPServer
{
static TcpListener listener;
const int LIMIT = 5; //5 concurrent clients


public static void Main()
{
listener = new TcpListener(2055);
listener.Start();
#if LOG
Console.WriteLine("Server mounted,
listening to port 2055");
#endif
for (int i = 0; i < LIMIT; i++)
{
Thread t = new Thread(new ThreadStart(Service));
t.Start();
}
}
public static void Service()
{
while (true)
{
Socket soc = listener.AcceptSocket();
//soc.SetSocketOption(SocketOptionLevel.Socket,

// SocketOptionName.ReceiveTimeout,10000);

#if LOG
Console.WriteLine("Connected: {0}",
soc.RemoteEndPoint);
#endif
try
{
Stream s = new NetworkStream(soc);
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true; // enable automatic flushing

sw.WriteLine("{0} Employees available",
ConfigurationSettings.AppSettings.Count);
while (true)
{
string name = sr.ReadLine();
if (name == "" || name == null) break;
string job =
ConfigurationSettings.AppSettings[name];
if (job == null) job = "No such employee";
sw.WriteLine(job);
}
s.Close();
}
catch (Exception e)
{
#if LOG
Console.WriteLine(e.Message);
#endif
}
#if LOG
Console.WriteLine("Disconnected: {0}",
soc.RemoteEndPoint);
#endif
soc.Close();
}
}
}





//TCPIP-Client Program.cs
using System;
using System.IO;
using System.Net.Sockets;

class EmployeeTCPClient
{
public static void Main(string[] args)
{
TcpClient client = new TcpClient(args[0], 2055);
try
{
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true;
Console.WriteLine(sr.ReadLine());
while (true)
{
Console.Write("Name: ");
string name = Console.ReadLine();
sw.WriteLine(name);
if (name == "") break;
Console.WriteLine(sr.ReadLine());
}
s.Close();
}
finally
{
// code in finally block is guranteed

// to execute irrespective of

// whether any exception occurs or does

// not occur in the try block

client.Close();
}
}
}

M.YasPro
چهارشنبه 22 اردیبهشت 1389, 09:48 صبح
و اینکه اگر یک برنامه داشته باشیم که اون رو در کامپیوتر کاربر و کامپیوتر ادمین نصب کرده باشیم اینها چطوری می تونند هر دو با داده های یک دیتا بیس کار کنند؟


بله فقط با تغییر کانکشن استرینگ

azade_r
چهارشنبه 22 اردیبهشت 1389, 10:40 صبح
می تونید راهنماییم کنید که چطور می تونم اینکار رو بکنم . آخه نمی دونم وقتی کد رو نوشتی و فایل نصبش رو ساختی و می خواهی جایی نصب کنی چطوری کانکشن استرینگشو تغییر بدی .
و اینکه sql در طرف سرور نصب می شه و در کلاینت تو آدرس دیتا بیست رو پیدا می کنی و به کانکشن استرینگ می دی ؟ درسته؟

M.YasPro
چهارشنبه 22 اردیبهشت 1389, 10:47 صبح
اگر کانکشن استرینگتون رو داخل کد به صورت hard Code نوشتید که کاری نمیشه کرد اما اگه از app.config یا رجیستری یا ... می تونید به اینجا (http://connectionstrings.com) برای پیدا کردن رشته اتصال مطلوبتون یه سر بزنید .
موفق باشید .

bpzone
چهارشنبه 22 اردیبهشت 1389, 11:31 صبح
با سلام
اگه قصد دارید از دیتا بیس استفاده کنید، در مورد ConnectionString جستجو کنید
اگه هدفتون ارتباط بین برنامه های کلاینت و سرور به صورت مستقیم هست، در مورد Socket Programming تحقیق کنید

در بخش نمونه برنامه های کوچک و مفيد در سي شارپ (http://barnamenevis.org/forum/showthread.php?t=64210) ‏ چند نمونه برنامه با استفاده از سوکت موجود هست، اگه در این زمینه خواستید کار کنید، ادرس email خودتون رو در پیام خصوصی برام بزارید تا یک سری مطلب براتون ارسال کنم

موفق باشید

azade_r
چهارشنبه 22 اردیبهشت 1389, 20:23 عصر
در حال حاضر در مراحل کانکشن استرینگ هستم ، خیلی ممنون با توجه به راهنمایی هاتون متوجه شدم باید چه کار کنم.