• Socket 类通信例子-第24章


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Net;
    using System.Net.Sockets;
    
    namespace Test06
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private static Socket ConnectSocket(string server, int port)
            {
                Socket socket = null;                    //实例化Socket对象,并初始化为空
                IPHostEntry iphostentry = null;          //实例化IPHostEntry对象,并初始化为空
                iphostentry = Dns.GetHostEntry(server);  //获得主机信息
                //循环遍历得到的IP地址列表
                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);          //调用Connect方法连接远程主机
                    if (newSocket.Connected)              //判断远程连接是否连接
                    {
                        socket = newSocket;
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                return socket;
            }
            //获取指定服务器的主页面内容
            private static string SocketSendReceive(string server, int port)
            {
                string request = "GET/HTTP/1.1
    主机:" + server + "
    连接:关闭
    ";
                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 + "上的默认页面内容:
    ";
                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);
            }
        }
    }
  • 相关阅读:
    C#将DataTable按固定个数拆分成多个表
    IDataRowPersistable
    使用临时表的示例
    2011 11 28 sql语句学习
    2010 11 30 DrawCurve GDI绘制曲线
    如何查看viewstate的内容
    const 和 readonly 的区别
    access insert 语法错误
    asp.net下载文件的常用方法大全
    【转】JS超强判断电话号码
  • 原文地址:https://www.cnblogs.com/rogge7/p/5410860.html
Copyright © 2020-2023  润新知