Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Remoting trong C# | Chương trình client server sử dụng Remoting, giúp mình sửa lỗi?

  1. #1
    Ngày gia nhập
    04 2008
    Bài viết
    9

    Mặc định Remoting trong C# | Chương trình client server sử dụng Remoting, giúp mình sửa lỗi?

    Mọi người ơi, chỉ giúp mình cái này với:
    Mình đang làm một bài tập C#, Mình đang viết một chương trình client server sử dụng Remoting. Và mình đang gặp phải vấn đề như sau:
    Khi mình chạy chương trình client và server lên rồi test thử thì mọi thứ OK, nhưng nếu mình để như vậy khoảng 3 đến 4 phút rồi test lại thì nó báo lỗi như sau: "Requested Service not fount". Mình không biết có phải là server nó tự ngắt kết nối sau một thời gian nào đó không, và nếu là như vậy thì làm thế nào để duy trì kết nối lâu dài được. Mong mọi người chỉ giúp, cảm ơn!!!

  2. #2
    Ngày gia nhập
    08 2006
    Nơi ở
    Hải Phòng
    Bài viết
    78

    "nhưng nếu mình để như vậy khoảng 3 đến 4 phút rồi test lại", để như thế là để như thế nào ???
    "Requested Service not fount" : không tìm thấy yêu cầu, client chưa invoke lên server, client phải invoke tới thì server mới process và Respond xuống client. Đoán thế thôi, bạn post code lên đi

  3. #3
    Ngày gia nhập
    04 2008
    Bài viết
    9

    Code của mình nó dài lắm, mình lấy tạm ví dụ mình viết này vậy:
    Code cho Client:
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. using System.Runtime.Remoting;
    10. using System.Runtime.Remoting.Channels;
    11. using System.Runtime.Remoting.Channels.Tcp;
    12. using System.Runtime.Remoting.Services;
    13. using Remoting;
    14.  
    15. namespace Client
    16. {
    17.     public partial class Form1 : Form
    18.     {
    19.         private Remoting.GiaoTiep GiaoTiep_Client_Server = null;
    20.         public Form1()
    21.         {
    22.             InitializeComponent();
    23.             TcpClientChannel chanel = new TcpClientChannel();
    24.             ChannelServices.RegisterChannel(chanel);
    25.         }
    26.  
    27.         private void btnGuiYeuCau_Click(object sender, EventArgs e)
    28.         {
    29.             string lenh = txtNoiDungYeuCau.Text;
    30.             string URL = "tcp://localhost:1500/GiaoTiep_Client_Server";
    31.             try
    32.             {
    33.                 GiaoTiep_Client_Server = (Remoting.GiaoTiep)Activator.GetObject(typeof(Remoting.GiaoTiep), URL);
    34.                 bool ketQua = GiaoTiep_Client_Server.yeuCau(lenh);
    35.                 if (ketQua)
    36.                 {
    37.                     MessageBox.Show("Yeu cau thanh cong","Client");
    38.                 }
    39.                 else
    40.                 {
    41.                     MessageBox.Show("Yeu cau khong thanh cong");
    42.                 }
    43.             }
    44.             catch (Exception ex)
    45.             {
    46.                 MessageBox.Show("Loi ket noi: " + ex.Message.ToString());
    47.             }
    48.         }
    49.     }
    50. }

    Code cho Remoting:
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5.  
    6. namespace Remoting
    7. {
    8.     public class GiaoTiep : MarshalByRefObject
    9.     {
    10.         public delegate bool chuyenYeuCau(string str);
    11.         public event chuyenYeuCau ev_YeuCau;
    12.         public GiaoTiep() { }
    13.         public bool yeuCau(string str)
    14.         {
    15.             return ev_YeuCau(str);
    16.         }
    17.  
    18.     }
    19. }

    Code cho server:
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. using System.Runtime.Remoting;
    10. using System.Runtime.Remoting.Channels;
    11. using System.Runtime.Remoting.Channels.Tcp;
    12. using System.Runtime.Remoting.Services;
    13. using Remoting;
    14.  
    15. namespace Server
    16. {
    17.     public partial class Form1 : Form
    18.     {
    19.         private Remoting.GiaoTiep m_GiaoTiep_Client_Server = null;
    20.         private ObjRef m_Service = null;
    21.         private TcpChannel m_Channel = null;
    22.  
    23.         public Form1()
    24.         {
    25.             InitializeComponent();
    26.         }
    27.  
    28.         private void startListen()
    29.         {
    30.             stopListen();
    31.             try
    32.             {
    33.                 m_Channel = new TcpChannel(1500);
    34.                 ChannelServices.RegisterChannel(m_Channel);
    35.                 m_GiaoTiep_Client_Server = new Remoting.GiaoTiep();
    36.                 m_Service = RemotingServices.Marshal(m_GiaoTiep_Client_Server, "GiaoTiep_Client_Server");
    37.                 m_GiaoTiep_Client_Server.ev_YeuCau += new GiaoTiep.chuyenYeuCau(xuLyYeuCau);
    38.             }
    39.             catch
    40.             {
    41.                 MessageBox.Show(this, "Error starting listening", "Connection Error");
    42.             }
    43.         }
    44.  
    45.         //---------------------------------------------------------------------------------------------------
    46.  
    47.         private void stopListen()
    48.         {
    49.             if (m_Service != null)
    50.                 RemotingServices.Unmarshal(m_Service);
    51.             if (m_GiaoTiep_Client_Server != null)
    52.                 RemotingServices.Disconnect(m_GiaoTiep_Client_Server);
    53.             if (m_Channel != null)
    54.                 ChannelServices.UnregisterChannel(m_Channel);
    55.             m_GiaoTiep_Client_Server = null;
    56.             m_Channel = null;
    57.             m_Service = null;
    58.         }
    59.  
    60.         //---------------------------------------------------------------------------------------------------
    61.  
    62.         private bool xuLyYeuCau(string str)
    63.         {
    64.             MessageBox.Show("Client yeu cau: " + str, "server");
    65.             return true;
    66.         }
    67.  
    68.         //-------------------------------------------------------------------------------------------------------
    69.         private void Form1_Load(object sender, EventArgs e)
    70.         {
    71.             startListen();
    72.         }
    73.  
    74.     }
    75. }

    Khi mình chạy thử nó, nếu chúng ta chạy server và client rồi test thử thì thấy việc kết nối OK, nhưng nếu ta đê như vậy( vẫn để cho client và server chạy như thế nhưng không thực hiện viêc trao đổi thông tin giửa chúng trong khoảng 3, 4 phút rồi thực hiện gửi yêu cầu từ client tới server lại thì nó sẻ báo lỗi:
    Object:'/GiaoTiep_Client_Server' has been disconnected or dose not exist at the server
    Như vậy mình nghĩ chắc là sau một thời gian nào đó server sẻ hủy kết nối, nhưng đó là mình nghĩ thôi không biết thế nào nửa, và giả sử điều mình nghĩ là đúng thì làm sao để server nó luôn duy trì kết nối??? Mong mọi người chỉ giúp!!!!

  4. #4
    Ngày gia nhập
    05 2011
    Bài viết
    39

    mình cũng đang làm một demo liên quan tới remote.
    Nhưng mình gặp phải một vấn đề là khi server không bật thì phía client sẽ gặp lỗi.

    GiaoTiep_Client_Server = (Remoting.GiaoTiep)Activator.GetObject(typeof(Remo ting.GiaoTiep), URL);

    Ở đây mình kiểm tra GiaoTiep_Client_Server khi client gọi thì trả về !=null. và khi thực hiện câu lệnh ở dưới

    bool ketQua = GiaoTiep_Client_Server.yeuCau(lenh);

    thì gặp exception và thường mất thời gian xử lý.

    Bạn nào có giải pháp kiểm tra khi server không start cho mình xin với.

Các đề tài tương tự

  1. Trợ giúp lập trình calculator dùng cơ chế .NET Remoting
    Gửi bởi khoamptcia trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 2
    Bài viết cuối: 25-08-2013, 11:25 PM
  2. Socket Gửi file ảnh từ client tới server bằng Remoting
    Gửi bởi nguyentinhutehy trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 11-07-2011, 08:12 PM
  3. kiểm tra kết nối của Client trong lập trình C# (remoting.tcpChannel)
    Gửi bởi kenturo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 0
    Bài viết cuối: 21-11-2010, 05:11 PM
  4. Send data trong remoting.channel để tắt máy client
    Gửi bởi kenturo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 08-11-2010, 04:53 PM
  5. Cách upload image file từ client len folder của remoting sever?
    Gửi bởi jay520 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 23-07-2010, 07:29 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn