C#のソケットのポリシーファイルサーバーのための低レベルのAS3.0ソケットす。
-
05-07-2019 - |
質問
ただし、ソケットのポリシーファイルサーバクライアントまで、フルのC#.すべてのもいいポート843の文字列"<policy-file-request />"の後にNULLバイトを返却しますXML文字列である、ソケットのポリシーファイル).
しんの符号化はこのようなものを前に、amの美しく雄大なぢ大自然に包ました。いを作りたいでwindowsサービスですか?合またはリンクを歓迎いたします。
背景:
連絡webサービスからflashを使用してい'as3httpclientライブラリの代わりにURLRequest/URLLoader.ここでは送れるカスタムヘッダーと取得します。このライブラリ用の低レベルのソケットはなんですよ。
時flash使用の低レベルのソケットへの接続サーバーでソケットのポリシーファイル-このニーズをすることができるまでにソケットのポリシーファイルサーバーです。
解決
いくつかの注意をお考:
主として意識する必要がありとてもおしゃべりhttp低レベルのソケットが多数の場合のコミュニケーションがこのファッションに失敗します。主にこれらの障害が発生しますが、ユーザーがプロキシサーバを有効にしたブラウザが有効な手段の発見とその後の使用プロキシ接続を介してソケットが開かれます。
するために、政策サーバーで利用できます TcpListener クラスです。き始めたという聞くとして
var tcpListener = new TcpListener(IPAddress.Any, 843 );
tcpListener.start();
tcpListener.BeginAcceptTcpClient(new AsyncCallback(NewClientHandler), null);
の方法NewClientHandlerいう形式:
private void NewClientHandler(IAsyncResult ar)
{
TcpClient tcpClient = tcpListener.EndAcceptTcpClient(ar);
...
エントするために供給するtcpClientオブジェクトのクラスご自身の創作の検証データからのソケットをクローズします。私に電話をしてRemoteClient.
にRemoteClientいて思ったこと。
var buffer=new byte[BUFFER_SIZE];
tcpClient.GetStream().BeginRead(buffer, 0, buffer.Length, Receive, null);
および受信方法:
private void Receive(IAsyncResult ar)
{
int bytesRead;
try
{
bytesRead = tcpClient.GetStream().EndRead(ar);
}
catch (Exception e)
{
//something bad happened. Cleanup required
return;
}
if (bytesRead != 0)
{
char[] charBuffer = utf8Encoding.GetChars(buffer, 0, bytesRead);
try
{
tcpClient.GetStream().BeginRead(buffer, 0, buffer.Length, Receive, null);
}
catch (Exception e)
{
//something bad happened. Cleanup required
}
}
else
{
//socket closed, I think?
return;
}
}
一部の送信方法:
public void Send(XmlDocument doc)
{
Send(doc.OuterXml);
}
private void Send(String str)
{
Byte[] sendBuf = utf8Encoding.GetBytes(str);
Send(sendBuf);
}
private void Send(Byte[] sendBuf)
{
try
{
tcpClient.GetStream().Write(sendBuf, 0, sendBuf.Length);
tcpClient.GetStream().WriteByte(0);
tcpClient.GetStream().WriteByte(13); //very important to terminate XmlSocket data in this way, otherwise Flash can't read it.
}
catch (Exception e)
{
//something bad happened. cleanup?
return;
}
}
ことになるすべての重要な内容だとは思います。わたしは、この時に前...受信方法なっているように見えますがきれい好きみたいです。aリワークができます。
他のヒント
を聞くソケットが開かれます。
接続できているときは、開設を受け取りを待つの文字列になります。受信した場合送信ファイルのコンテンツをソケットをクローズします。
ラップこのサービス(ランニングとして低い権限のアカウントが必要です。
ほとんどの作品が実際どのように使われているか システム。います。ソケットソケット クラスの場合、ドキュメントが含まれてサンプルのAPIは、BSDソケットAPI全体(主が1:1のマッピングからBSD APIへのソケット(タイプ)の方法で他の背景には簡単にtranslatable.
っとこの作業の両方のJavaとC#のいできていることが分かります。
ご覧いただけます。で javaポリシーファイル.
一部の問題でこの回答: https://stackoverflow.com/a/12854204/1343667