首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Socket联接设计到流吗

2013-08-01 
Socket连接设计到流吗?完整代码://试图连接Socket.static Socket ConnectSocket(string strHostName, int

Socket连接设计到流吗?
完整代码:

//试图连接Socket.
        static Socket ConnectSocket(string strHostName, int port) {
            Socket socketResult = null; //返回Socket连接的对象.
            IPHostEntry ipHostEntry = Dns.GetHostEntry(strHostName);
            foreach(IPAddress ipAddress in ipHostEntry.AddressList) {  //遍历主机下的所有IP地址.
                IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, port);
                Socket socket = new Socket(ipEndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(ipEndPoint); //连接.
                if(socket.Connected) {  //判断是否连接到远程.
                    socketResult = socket;
                    break;
                }
            }
            return socketResult;
        }
        //Socket发送连接,返回收到的信息.
        static string SocketSendReceive(string strHostName, int port) {
            string strRequest = "GET/HTTP/1.1\n主机:" + strHostName + "\n连接:关闭\n";    //将发送的字符串.
            byte[] bSend = Encoding.Default.GetBytes(strRequest);   //将发送解析的字节数组.
            Socket socket = ConnectSocket(strHostName, port);
            if(socket == null) return "连接失败";
            byte[] bReceive = new byte[1024];   //存储返回的字符数组.


            socket.Send(bSend, SocketFlags.None);
            string strReceive = strHostName + "上默认的页面内容:\n";    //存储返回的内容.
            int nReceiveIndex = 0;  //返回的内容的当前下标.
            do {
                nReceiveIndex = socket.Receive(bReceive, SocketFlags.None);
                strReceive += Encoding.Default.GetString(bReceive, 0, nReceiveIndex);
            } while(nReceiveIndex > 0);
            return strReceive;
        }
        //传入远程计算机主机名和端口号.
        private void btnConfirm_Click(object sender, EventArgs e) {
            richTxt.Text = SocketSendReceive(txtHostName.Text.Trim(), int.Parse(txtPort.Text.Trim()));
        }


运行界面图:
Socket联接设计到流吗
[解决办法]
socket类型是Stream,不是说一定要用Stream对应的方法。
不能望文生义。

查MSDN吧。

[解决办法]
那SocketType.Unknown是不还要对应一个Unknown方法?

热点排行