0

TCPクライアントサーバー関係の使用方法を学んでいます。私は何時間も探していましたが、クライアントがユーザーから入力を取得し、クライアントがバイト[]配列をサーバーに送信して、文字列を比較する以外のことをさせる方法がわかりません。何らかの方法がありますこの入力でメソッドを呼び出せるようにするにはどうすればよいですか? または私は何かを逃していますか?

シリアライゼーションと呼ばれるものを聞いたことがありますが、それを使用する方法はいくつかあるようですが、これが正しい場合、誰かが私を正しい方向に向けることができますか?

返信ありがとうございます

4

1 に答える 1

0

基本的な .NET Web サイトの場合、クライアントからサーバーへの呼び出しをすばやく簡単に行う方法として、ページ メソッドを使用するのが好きです。次の aspx ページとそのコード ビハインドを考えてみましょう。[WebMethod] 属性を追加することで、パブリック静的サーバー メソッドを JavaScript に公開できます。次に、PageMethods.NameOfFunction() を使用して JavaScript から関数を呼び出すことができます。EnablePageMethods プロパティが「true」に設定された aspx ページに scriptmanager があることを確認してください。

デフォルト.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
    }
}
于 2013-09-06T17:23:11.853 に答える