客户端如何在服务器中调用方法?

时间:2013-09-06 17:04:12

标签: c# client-server client

我正在学习如何使用TCP客户端服务器关系。我一直在寻找小时和小时,但我没有看到任何方式客户端可以从用户获得输入,然后客户端发送一个byte []数组到服务器并让它做任何事情,但比较字符串,是否有一些方法我可以让它用这个输入调用一个方法?或者我错过了什么?

我听说过一些叫做序列化的东西,虽然似乎有几种方法可以使用它,如果这是正确的,有人能指出我正确的方向吗?

感谢您的回复

1 个答案:

答案 0 :(得分:0)

对于一个基本的.NET网站,我喜欢使用页面方法来快速简单地进行客户端到服务器的调用。请考虑以下aspx页面及其后面的代码。您可以通过添加[WebMethod]属性将公共静态服务器方法公开给javascript。然后,您可以使用PageMethods.NameOfFunction()从javascript调用该函数。只需确保在aspx页面上有一个scriptmanager,并将EnablePageMethods属性设置为“true”。

<强> Default.aspx的

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function init() {
            var str = "bytes";
            var data = [];
            for (var i = 0; i < str.length; ++i)
            {
                data.push(str.charCodeAt(i));
                data.push(0);
            }
            PageMethods.DoSomething(data);
        }
    </script>
</head>
<body onload="init();">
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptMan" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    </form>
</body>
</html>

<强> Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
using System.Web.Services;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod]
    public static void DoSomething(byte[] data)
    {
        //Do something with data from javascript
    }
}