zoukankan      html  css  js  c++  java
  • C#用SOCKET发送HTTP请求小例

    复制代码
    private void button1_Click(object sender, EventArgs e)
            {
                string urlStr = this.textUrl.Text ;
                if (urlStr == null || "".Equals(urlStr))
                {
                    MessageBox.Show( "必须填写要防问的地址!");
                    return;
                }
                int port = 80;
                try
                {
                    port = Convert.ToInt32(this.textPort.Text);
                }
                catch
                {
                    MessageBox.Show( "请填写正确的端口");
                }
                //可以为空
                string path = "/"+this.textFile.Text;
                this.textBox1.Text = "";
                this.conn.StartAccess(urlStr, port, path, this.textBox1);
            }
    复制代码
    复制代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;
    using System.Windows.Forms;
    namespace WindowsFormsApplication3
    {
        class MyConnection
        {
            public void StartAccess( string urlStr ,int port , string path , TextBox list )
            {
                byte[] data = new byte[1024];
                IPHostEntry gist = Dns.GetHostByName( urlStr );
                //得到所访问的网址的IP地址
                IPAddress ip = gist.AddressList[0];
                IPEndPoint ipEnd = new IPEndPoint(ip, port);
                //使用tcp协议 stream类型 (IPV4)
                Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                try
                {
                    socket.Connect(ipEnd);
                }
                catch (SocketException e)
                {
                    MessageBox.Show("与访问的服务器连接异常!");
                    Console.Write(e.ToString());
                    return;
                }
                //这里请求的相对地址,如果访问直接www.baidu.com则不需要,可以为空.
                StringBuilder buf = new StringBuilder();
                buf.Append("GET ").Append(path).Append(" HTTP/1.0/r/n");
                buf.Append("Content-Type: application/x-www-form-urlencoded/r/n");
                buf.Append("/r/n");
                byte[] ms = System.Text.UTF8Encoding.UTF8.GetBytes(buf.ToString());
                //发送
                socket.Send(ms);
                int recv =0;
               
                do
                {
                    recv = socket.Receive(data);
                    //如果请求的页面meta中指定了页面的encoding为gb2312则需要使用对应的Encoding来对字节进行转换
                    //list.Text += (Encoding.UTF8.GetString(data, 0, recv));
                    list.Text += (Encoding.Default.GetString(data, 0, recv));
                } while (recv != 0);
                //禁用上次的发送和接受
                socket.Shutdown( SocketShutdown.Both );
                socket.Close();
            }
        }
    }
    复制代码
  • 相关阅读:
    java获取两个日期之间的所有日期
    java实现https免证书认证
    Linux系统下安装rz/sz命令及使用说明
    Linux 7 关闭、禁用防火墙服务
    Linux下iptables 禁止端口和开放端口
    JBPM4 常用表结构及其说明
    mysql索引使用技巧及注意事项
    MySQL的btree索引和hash索引的区别
    https://www.cnblogs.com/
    Git+Gitlab+Ansible剧本实现一键部署动态网站(二)--技术流ken
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14804529.html
Copyright © 2011-2022 走看看