• C#3.5之网络编程 简单示例


    根据输入的主机地址获取主机IP地址 主机名和DNS主机名

    private void button1_Click(object sender, EventArgs e)
            {
                //判断是否输入了IP地址
                if (textBox1.Text == string.Empty)
                {
                    MessageBox.Show("请输入主机地址!");//aimajia2012.gotoftp2.com
                    return;
                }
                else
                {
                    textBox2.Text = string.Empty;
                    //获取指定主机的IP地址
                    IPAddress[] ips = Dns.GetHostAddresses(textBox1.Text);
                    //循环访问获得的IP地址
                    foreach (IPAddress ip in ips)
                    {
                        textBox2.Text = ip.ToString();
                    }
                    textBox3.Text = Dns.GetHostName();
                    //根据指定的主机名获取DNS信息
                    textBox4.Text = Dns.GetHostEntry(Dns.GetHostName()).HostName;
                }
                IPAddressUse();
            }

    //调用IPAddress类中的各个属性获取指定主机的IP地址信息

    private void button1_Click(object sender, EventArgs e)
            {
                label5.Text = string.Empty;//初始化Label标签
                IPAddress[] ips = Dns.GetHostAddresses(textBox1.Text);
                foreach (IPAddress ip in ips)
                {
                    label5.Text = "网际协议地址:" + ip.Address.ToString() + "\nIP地址的地址族:" + ip.AddressFamily.ToString() + "\n是否IPv6链接本地地址:" + ip.IsIPv6LinkLocal;
                }
            }
     private void button1_Click(object sender, EventArgs e)
            {
                textBox1.Text = "220.166.64.67";
                //实例化IPEndPoin类对象
                IPEndPoint IPEPoint = new IPEndPoint(IPAddress.Parse(textBox1.Text), 80);
                //使用IPEndPoint类对象获取终结点的IP地址和端口号
                label5.Text = "IP地址:" + IPEPoint.Address.ToString() + "\n 端口号:" + IPEPoint.Port;
            }
    //WebClient获取指定网址中的网页内容
            private void button2_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = string.Empty;
                //实例化WebClient对象
                WebClient wclient = new WebClient();
                //设置WebClient的基URI
                wclient.BaseAddress = textBox5.Text;//如:http://www.baidu.com/
                wclient.Encoding = Encoding.UTF8;//指定下载字符串的编码方式
                //为WebClient类对象添加标头
                wclient.Headers.Add("Content-Type","application/x-www-form-urlencoded");
                //使用OpenRead方法获取指定网站的数据,并保存到Stream流中
                Stream stream = wclient.OpenRead(textBox5.Text);
                //使用流Stream声明一个流读取变量sreader
                StreamReader sreader = new StreamReader(stream);
                string str = string.Empty;
                //循环读取从指定网站获得的数据
                while ((str = sreader.ReadLine()) != null)
                {
                    richTextBox1.Text += str + "\n";
                }
                //调用WebClient对象的DownloadFile方法将指定网站的内容保存到文件中
                wclient.DownloadFile(textBox5.Text,DateTime.Now.ToFileTime()+".txt");
                MessageBox.Show("保存到文件成功");
            }
             /// <summary>
            /// 调用WebRequest和WebResponse类中的属性、方法获取指定网站的网页请求信息和网页内容
            /// 显示在richTextBox中
            /// </summary>
            private void button3_Click(object sender, EventArgs e)
            {
                richTextBox1.Text = string.Empty;
                //实例化一个WebRequest对象
                WebRequest webrequest = WebRequest.Create(textBox5.Text);//http://www.baidu.com/
                //设置用于对Internet资源请求进行身份验证的网络凭据
                webrequest.Credentials = CredentialCache.DefaultCredentials;
                //调用WebRequest对象的各种属性获取WebRequest请求的相关信息
                richTextBox1.Text = "请求数据的内容长度" + webrequest.ContentLength;
                richTextBox1.Text += "\n该请求的协议方法:" + webrequest.Method;
                richTextBox1.Text += "\n访问Internet的网络代理:"+webrequest.Proxy;
                richTextBox1.Text += "\n 与该请求关联的internet URI:" +webrequest.RequestUri;
                richTextBox1.Text += "\n 超时时间:"+webrequest.Timeout;
                //调用WebRequest对象的GetResponse方法实例化一个WebResponse对象
                WebResponse webresponse = webrequest.GetResponse();
                //获取WebResponse响应的Internet资源的URI
                richTextBox1.Text += "\n 响应该请求的Internet URI:" + webresponse.ResponseUri;
                //调用WebResponse 对象的GetResponseStream方法返回数据流
                Stream stream = webresponse.GetResponseStream();
                //使用创建的Stream对象创建一个StreamReader流读取对象
                StreamReader sreader = new StreamReader(stream);
                richTextBox1.Text += "\n"+sreader.ReadToEnd();
                sreader.Close();
                stream.Close();
                webresponse.Close();
            }
             /// <summary>
            /// 连接远程主机并获得其主要内容
            /// </summary>
            private static Socket ConnectSocket(string server, int port)
            {
                Socket socket = null;//实例化Socket对象,并初始化为空
                IPHostEntry iphostentry = null;//实例化IPHostEntry,并初始化为空
                iphostentry = Dns.GetHostEntry(server);//获得主机信息
                foreach (IPAddress address in iphostentry.AddressList)
                {
                    //使用指定的IP地址和端口号实例化IPEndPoint对象
                    IPEndPoint IPEPoint = new IPEndPoint(address,port);
                    //使用Socket的构造函数实例化一个Socket对象,以便用来连接远程主机
                    Socket newSocket = new Socket(IPEPoint.AddressFamily,SocketType.Stream,ProtocolType.Tcp);
                    newSocket.Connect(IPEPoint);//调用
                    if (newSocket.Connected)
                    {
                        socket = newSocket;
                        break;
                    }
                    else { continue; }
                }
                return socket;
            }
            private static string SocketSendReceive(string server, int port)
            {
                string request = "GET/HTTP/1.1\n主机:"+server+"\n连接:关闭\n";
                Byte[] btSend = Encoding.ASCII.GetBytes(request);
                Byte[] btReceived = new Byte[256];
                //调用自定义方法ConnectSocket,使用指定的服务器名和端口号实例化一个Socket对象
                Socket socket = ConnectSocket(server,port);
                if (socket == null)
                { 
                    return ("连接失败!");
                }
                //将请求发送到连接的服务器
                socket.Send(btSend,btSend.Length,0);
                int intContent = 0;
                string strContent = server + "上的默认页面内容:\n";
                do
                {
                    //从绑定的Socket接收数据
                    intContent=socket.Receive(btReceived,btReceived.Length,0);
                    strContent+=Encoding.ASCII.GetString(btReceived,0,intContent);
                }
                while(intContent>0);
                return strContent;
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                string server = textBox1.Text;//指定主机名
                int port = Convert.ToInt32(textBox2.Text);//指定端口号
                //调用自定义方法SocketSendReceive获取指定主机名的主页内容
                string strContent = SocketSendReceive(server,port);
                MessageBox.Show(strContent);
            }
            private void button5_Click(object sender, EventArgs e)
            {
                //实例化一个TcpListener对象,并初始化为空
                TcpListener tcplistener = null;
                //实例化一个IPAddress对象,用来表示网络IP地址 如:192.168.1.96
                IPAddress ipaddress = IPAddress.Parse(textBox1.Text);
                //定义一个int类型变量,用来存储端口号 如:8080
                int port = Convert.ToInt32(textBox2.Text);
                tcplistener = new TcpListener(ipaddress,port);//初始化TcpListener对象
                tcplistener.Start();//开始TcpListener侦听
                richTextBox1.Text = "等待连接...\n";
                TcpClient tcpclient = null;//实例化一个TcpClient对象,并赋值为空
                if (tcplistener.Pending())
                {
                    tcpclient = tcplistener.AcceptTcpClient();//使用TcpClient的构造函数初始化TcpClient对象
                }
                else
                    tcpclient = new TcpClient(textBox1.Text, port);//使用TcpClient的构造函数初始化TcpClient对象
                richTextBox1.Text += "连接成功!\n";
                tcpclient.Close();
                tcplistener.Stop();
            }
  • 相关阅读:
    2020牛客暑期多校训练营(第二场)Interval 网络流平面图转化成最短路
    [P4001 [ICPC-Beijing 2006]狼抓兔子]
    [2020牛客暑期多校训练营(第二场)Greater and Greater]
    [2020牛客暑期多校训练营(第二场)All with Pairs]
    2020牛客暑期多校训练营(第二场)[ Boundary]
    数据结构的特性
    centos7 pgsql启动异常问题
    go实现服务授权
    go 使用线程池做请求限流
    go实现爬虫
  • 原文地址:https://www.cnblogs.com/wuhuisheng/p/2652185.html
Copyright © 2020-2023  润新知