نمایش نتایج 1 تا 7 از 7

نام تاپیک: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

  1. #1

    Post تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    با سلام و عرض ادب
    میبخشید سوالی داشتم درباره برنامه نویسی سیشارپ تحت شبکه.خیلی لطف میکنید اگه پاسخ بدید.
    دارم برنامه ی برگزاری آزمون تحت شبکه مینویسم.روند این برنامه این گونه است که سوالات از دیتابیس سروربه دست من برنامه نویس میرسه و بنده باید این سوالات رو در فرمی که کاربر مشاهده میکند، نمایش بدم و کاربر اونها را جواب بده.سوالات میتونه تستی تشریحی و یا ترسیمی با پینت باشه.بعد از پاسخ کاربر جوابها توسط من برنامه نویس برای سرور ارسال میشه تا در سرور عمل قضاوت بشه یا بهتر بگم جوابها صحیح بشه و نمره محاسبه بشه و مجددا کارنامه برای کاربر ارسال بشه.
    سوال اول:طبق دستور العمل ما،تاریخ برگزاری امتحان و نام امتحان و زمان امتحان و تمامی سوالات بایستی از سرور برای من ارسال شود تا من در فرم اصلی برنامه جهت نمایش استفاده کنم.از دوستی شنیدم که ارسال این اطلاعات بوسیله زبان xml بواسطه تگ بندی این زبان و ارتباط با سیشارپ قابل حصوله.ولی من xmlبلد نیستم.چه راهی رو بهم پیشنهاد میکنید؟چطور میتونم تاریخ برگزاری امتحان و نام امتحان و زمان امتحان و تمامی سوالات را ارسال کنم بطوریکه سوالات پس از پاسخ دادن کاربر،یکی یکی عوض شود؟
    سوال دوم:کدی دارم که ارتباط بین سرور و کلاینت را برقرار میکند.اما این کد تحت کنسول نوشته شده.اساسا چه تفاوتی بین کد تحت کنسول و تحت فرم ویندوزی وجود داره؟آیا میشه از کد تحت کنسول در پشت فرم ویندوزی استفاده کرد؟برای بررسی و درک بهتر سوالم،دو کد ارسال اطلاعات از سرور به کلاینت و بالعکس را در زیر میگذارم:
    منت میگذارید اگه کامل راهنماییم کنید . . .
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.Net.Sockets;

    namespace TCPEchoClient
    {
    class Program
    {
    static void Main(string[] args)
    {
    TcpClient client = null;
    NetworkStream netStream = null;

    try
    {
    // create socket that is connected to server on specified port
    client = new TcpClient("127.0.0.1", 8000);
    netStream = client.GetStream();

    byte[] byteBuffer = Encoding.ASCII.GetBytes("Hello Server!");

    // send the encoded string to the server
    netStream.Write(byteBuffer, 0, byteBuffer.Length);
    Console.WriteLine(byteBuffer.Length + " bytes sent to server.");

    int totalBytesRcvd = 0; // total bytes received so far
    int byteRcvd = 0; // bytes received in last read

    // receive the same string back from the server
    while (totalBytesRcvd < byteBuffer.Length)
    {
    if ((byteRcvd = netStream.Read(byteBuffer,
    totalBytesRcvd,
    byteBuffer.Length - totalBytesRcvd))== 0)
    {
    Console.WriteLine("Connection closed.");
    break;
    } // end if

    totalBytesRcvd += byteRcvd;
    } // end while

    Console.WriteLine(byteBuffer.Length +
    " bytes received from server >>> " +
    Encoding.ASCII.GetString(byteBuffer, 0, byteBuffer.Length));
    } // end try

    catch (Exception err)
    {
    Console.WriteLine(err.ToString());
    } // end catch

    finally
    {
    netStream.Close();
    client.Close();
    Console.ReadKey();
    } // end finally

    } // end method main

    } // end class program
    }
    همچنین:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;

    namespace TCPEchoServer
    {
    class Program
    {
    static void Main(string[] args)
    {
    byte[] byteBuffer = new byte[32]; // receive buffer
    TcpListener listener = null;

    try
    {
    // create a TcpListener to accept client connections
    listener = new TcpListener(IPAddress.Any, 8000);
    listener.Start();
    }
    // exit program, if server can not use port number 8000
    catch (Exception err)
    {
    Console.WriteLine(err.ToString());
    Environment.Exit(0);
    }

    int byteRcvd = 0; // received byte count

    // run forever, accepting and servicing connections
    for (; ; )
    {
    TcpClient client = null; // for each client connection
    NetworkStream netStream = null; // for each connection stream

    Console.WriteLine("Waiting for connections...");

    try
    {
    client = listener.AcceptTcpClient(); // get client connection
    netStream = client.GetStream(); // get connection stream

    Console.WriteLine("Handling client...");

    // receive until client closes connection, indicated by 0 return value
    int totalByteRcvd = 0;
    while ((byteRcvd = netStream.Read(byteBuffer, totalByteRcvd,
    byteBuffer.Length - totalByteRcvd)) > 0)
    {
    netStream.Write(byteBuffer, 0, byteRcvd);
    totalByteRcvd += byteRcvd;
    } // end while

    Console.WriteLine(totalByteRcvd + " bytes received from client >>> " +
    Encoding.ASCII.GetString(byteBuffer) + "\r\n");

    // close the stream and socket. we are done with this client!
    netStream.Close();
    client.Close();
    } // end try

    catch (Exception err)
    {
    Console.WriteLine(err.ToString());
    netStream.Close();
    } // end catch

    } // end for(;;)

    } // end main method
    } // end class program
    }

  2. #2
    کاربر دائمی آواتار hjran abdpor
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    برنامه نويس + شبگرد + سیسکو به پارسی
    پست
    1,416

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    با سلام.

    پاسخ سوال اول شما : شما ميتونيد از Sql server نيز استفاده كنيد براي ارسال سوال ها به كلاينته به روش استاتيك .
    عوض كردن سوالها نيز كه خيلي اسونه ( بعد از اينكه جواب سوال اولي داده شد يا معلوم شد سوال دومي را به صورت رندم بين كلاينت ها نشان بده و ......)

    دوست عزيز تحت كنسول ديگه خبري از اشيايي ويژوالي خبر نيست و ......
    ولي تحت ويندوز خيلي كار شما اسون ميشه و خيلي هم كارپسند و ................. است .

    براي ياد گيري xml برو به قسمت xml همين سايت.

    با تشكر..........................

  3. #3

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    دوست گرامی با تبریک سال نو، از راهنماییتون خیلی ممنونم.میشه منت بگذارید و درباره ارسال سوال ها به كلاينته به روش استاتيك تحت sql server برام بیشتر توضیح بدید که مکانیسم و مراحل کارچیه؟
    همچنین رندوم بندی نمایش سوالات توسط sql server.میدونید میخوام بعد از پاسخگویی به هر سوال،سوال بعدی اتوماتیک نمایش داده بشه که دیگه کد select نخوام بنویسم برای هر سوال.اینطور که شما میفرمایید برای نمایش تاریخ امتحانوزمانش میشه از sql server نیز استفاده کرد.نه؟
    خیلی لطف میکنید اگه راهنماییم کنید...

  4. #4
    کاربر دائمی آواتار ahrimaneahurai
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران
    پست
    554

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    شما می تونید مثلا 100 تا سوال رو بریزید توی یه دیتاتیبل یا دیتاست و از بین اونها سوالات رو رندوم به کاربر نشون بدید. نمیدونم چندتا کاربر همزمان میخوان وصل شن به سرور اما فک نکنم سرور کم بیاره که نگرانید و می خواید با xml کار کنید.
    سوال هم چه تشریحی باشه چه تستی چه ترسیمی شما می تونید یه دکمه بذارید به عنوان سوال بعد و وقتی کاربر این دکمه رو زد سوال بعدی نمایش داده شه. اگه هم سوالات زمان بیندی داره که با تایمر میبرید سوال بعد. برای نمایش امتخان که توی خود برنامه می تونید با استفاده از datetime.now تاریخ و زمان همون لحظه رو بگیرید

  5. #5

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    ممنون ولی مشکل مین رندوم نشون دادن سوالاته.
    راستی تفاوتی درکد سوکت پروگرمینگ وقتی کلاینتهامون بیشتر از یکی ان،وجود داره؟

  6. #6
    کاربر دائمی آواتار hjran abdpor
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    برنامه نويس + شبگرد + سیسکو به پارسی
    پست
    1,416

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

    دوست عزيز سوالات را داخل يه ديتاتيبيل يا ديتاست ميتونيد بريزد وبعد يا استفاده از كلاس رندم (Random) به تعداد كلاينت ها سوال ارسال كني !!!!!!!!!!!!!

  7. #7
    کاربر دائمی آواتار ahrimaneahurai
    تاریخ عضویت
    فروردین 1388
    محل زندگی
    ایران
    پست
    554

    نقل قول: تفاوت کد تحت کنسول و تحت فرم چیست؟کاربرد xml چیست؟

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •