質問

って書ける白HTTPンターフェースの通称です。ここまでのトで提供されるソケットファクトポート80とパケットの見することができない取得した文字列形式です。すべての出力が"E"です。私のバイト六角レンチ前であったというデータですが、現在のコードではないバイト文字列です。あるその他のバイトをデコードしてる適切な文字列?

byte[] input = BitConverter.GetBytes(1);
byte[] buffer = new byte[4096];
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
s.Bind(new IPEndPoint(IPAddress.Parse(strIP), 80));
s.IOControl(IOControlCode.ReceiveAll, input, null);
int bytes;
bytes = s.Receive(buffer);
while (bytes > 0)
{
    log(System.Text.Encoding.ASCII.GetString(buffer, 0, bytes));
    bytes = s.Receive(buffer);
}
役に立ちましたか?

解決

きの秘データを用い ソケットには、受信インターネットプロトコル(IP)のパケット.各IPパケットの始まり IPヘッダ.このヘッダーは20バイトの長さが可能であり、これまでのように長くなります。下記のIPヘッダのヘッダを輸送層上に、例えば、 送信制御プロトコル (TCP)ヘッダの ユーザーデータグラムプロトコル (UDP)ヘッダを表します。このヘッダのデータを探している、すなわち、HTTP.また構文解析のデータに必要なものをスキップ過去のIPヘッダを輸送層ヘッダです。

他のヒント

するためにアウトのソースコードC#ネットワークのwikipedia, こちらの.

まず、なぜこれを書を使用rawソケットの変更やIOControl?私の実行コードはwindows Vistaやるのではなく、仕事もしています。使用できるより高いレベルの抽象化などTcpClientょうか?

第二に、必要なもののリクエストを送信する前に取得します。最も単純な要求を送信できは"GET/ "が はそのことです。

ここにはあるコードを使用できるのWriteメソッドのニーズを確認したり、返却値においても、これを省略した簡素):

        using (TcpClient tcpClient = new TcpClient(strIP, 80))
        {
            using (Stream s = tcpClient.GetStream())
            {
                byte[] bytesToSend = Encoding.ASCII.GetBytes("GET /\n");
                s.Write(bytesToSend, 0, bytesToSend.Length);
                int bytes;
                byte[] buffer = new byte[4096];
                do
                {
                    bytes = s.Read(buffer, 0, buffer.Length);
                    Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
                } while (bytes > 0);
            }
        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top