zoukankan      html  css  js  c++  java
  • http协议区分头信息和正文

    http协议中的头信息和正文是採用空行分开,什么是空行呢?简单来说,就是 。

    所以将server返回的数据用 分开后的结果,一个是头信息。一个是正文信息。

    C#的代码例如以下:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    using System.Text.RegularExpressions;
    
    using System.IO;
    
    namespace SOCKET
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                int port = 80;
                GetSocket gs = new GetSocket();
                string result = gs.SocketSendReceive("www.baidu.com", port);
                Regex regex = new Regex("
    
    ");//以cjlovefl切割
                string[] bit = regex.Split(result);
                MessageBox.Show(bit[1]);
    
    
                StreamWriter sw = new StreamWriter("D:\1.txt");
                sw.Write(result);
                sw.Close();
            }
        }
    }
    


    当中result就是由server返回的包含头部和正文的信息。

    当中GetSocket类例如以下:

    using System;
    using System.Text;
    using System.IO;
    using System.Net;
    using System.Net.Sockets;
    using System.Windows.Forms;
    using System.Text.RegularExpressions;
    
    public class GetSocket
    {
        public Socket ConnectSocket(string server, int port)
        {
            Socket s = null;
            IPHostEntry hostEntry = null;
            // Get host related information.
            hostEntry = Dns.GetHostEntry(server);
            // Loop through the AddressList to obtain the supported AddressFamily. This is to avoid
            // an exception that occurs when the host IP Address is not compatible with the address family
            // (typical in the IPv6 case).
            foreach (IPAddress address in hostEntry.AddressList)
            {
                IPEndPoint ipe = new IPEndPoint(address, port);
                Socket tempSocket =
                    new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                tempSocket.Connect(ipe);
                if (tempSocket.Connected)
                {
                    s = tempSocket;
                    break;
                }
                else
                {
                    continue;
                }
            }
            return s;
        }
        // This method requests the home page content for the specified server.
        public  string SocketSendReceive(string server, int port)
        {
            string request = "GET / HTTP/1.0
    Host: " + server +
                "
    User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:29.0) Gecko/20100101 Firefox/29.0
    Connection: keep-alive
    
    ";
            Byte[] bytesSent = Encoding.ASCII.GetBytes(request);
            Byte[] bytesReceived = new Byte[256];
            // Create a socket connection with the specified server and port.
            Socket s = ConnectSocket(server, port);
            if (s == null)
                return ("Connection failed");
            // Send request to the server.
            s.Send(bytesSent, bytesSent.Length, 0);
            // Receive the server home page content.
            int bytes = 0;
            string page = "Default HTML page on " + server + ":
    ";
            // The following will block until te page is transmitted.
            do
            {
      
                bytes = s.Receive(bytesReceived, bytesReceived.Length, 0);
                page =page+ Encoding.ASCII.GetString(bytesReceived, 0, bytes);
            }
            while (bytes > 0);
    
    
            return page;
        }
        /*
        public static void Main(string[] args)
        {
            string host = "http://www.baidu.com";
            int port = 80;
            if (args.Length == 0)
                // If no server name is passed as argument to this program,
                // use the current host name as the default.
                host = Dns.GetHostName();
            else
                host = args[0];
            string result = SocketSendReceive("www.goodjobs.cn", port);
            StreamWriter sw = new StreamWriter("D:\1.txt");
            string w = "";
            sw.Write(result);
            sw.Close();
        }
         * */
    }
    


    測试成功!

  • 相关阅读:
    [openjudge] 2797最短前缀 Trie
    [poj]1050 To the Max dp
    [openjudge] 1455:An Easy Problem 贪心
    [poj] Catch That Cow--bfs
    = =
    dinic算法实现
    Dinic
    走进链式前向星的秘密
    树链剖分前传
    树链剖分
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7089250.html
Copyright © 2011-2022 走看看