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\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);
        }
    }
}
时间: 2024-11-04 14:16:34

Socket 类通信例子-第24章的相关文章

Java Socket编程----通信是这样炼成的

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术.下面就让我们一起揭开Socket的神秘面纱. Socket编程 一.网络基础知识(参考计算机网络)            关于计算机网络部分可以参考相关博客:           <TCP/IP协议栈及OSI参考模型详解> http://wangdy.blog.51cto.com/3845563/

慕课网_Java Socket应用---通信是这样练成的

fad 第1章 网络基础知识 1-1 网络基础简介 (10:21) 第2章 Java 中网络相关 API 的应用 2-1 Java 中的 InetAddress 的应用 (08:10) import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays; public class Hello { public static void main(String[] args) throw

使用Socket类接收和发送数据

网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础.各式各样的连接方式.get和set方法.连接过程中的超时以及关闭网络连接等. 在本文中,我们将讨论使用Socket类的基本步骤和方法.一般网络客户端程序在连接服务程序时要进行以下三步操作. 1.连接服务器 2.发送和接收数据 3.关闭网络连接 一.连

Java网络编程从入门到精通(13):使用Socket类接收和发送数据

网络应用分为客户端和服务端两部分,而Socket类是负责处理客户端通信的Java类.通过这个类可以连接到指定IP或域名的服务器上,并且可以和服务器互相发送和接受数据.在本文及后面的数篇文章中将详细讨论Socket类的使用,内容包括Socket类基础.各式各样的连接方式.get和set方法.连接过程中的超时以及关闭网络连接等. 在本文中,我们将讨论使用Socket类的基本步骤和方法.一般网络客户端程序在连接服务程序时要进行以下三步操作. 1.         连接服务器 2.         发送

MFC的socket类

MFC的socket类,部分封装了这些以WSA开头的socket函数,使用更加简单方便,只适合小型的网络通信编程的开发 1.CAsyncSocket类 -部分封装了WSA开头的socket函数,提供了socket通信更加简单的操作,是一个异步socket类 2.CSocket类 -继承自CAsyncSocket类,是一个同步socket类 3.使用MFC的socket类完成一个简单的文件传输的功能

第十八章 SOCKET类的实现

                        第十八章    SOCKET类的实现         这几天反复思考,到底是从上到下.还是从底层开始往上设计?最后.还是决定从上层建筑开始.APO追求的是简单.再简单!强大.再强大!高速.高效!"天下武功.无坚不破.唯快不破!". APO的socket也不外是一种内存文件吧,但socket描述符和其它类型的文件描述符还是略有区别的.APO中的一个用户进程最多可打开64K个非socket类型的文件描述符,而APO系统只是最多可以打开16M个

socket系列之客户端socket——Socket类

假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含很多方法用于建立连接,操作数据流等.客户端按以下几步进行工作: ① 创建一个Socket实例,构造函数直接指定远程服务器IP跟端口,建立一个TCP连接. ② 通过这个Socket实例的输入输出流进行通信,Socket实例都包含一个InputStream对象和OutputStream对象,通过操作这些

java网络编程ServerSocket类 和Socket类的常用构造方法及其方法

Socket类Socket(InetAddress address, int port) 创建一个流套接字并将其连接到指定 IP 地址的指定端口号.Socket(String host, int port) 创建一个流套接字并将其连接到指定主机上的指定端口号.Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 创建一个套接字并将其连接到指定远程地址上的指定远程端口.Socket(String ho

使用Socket进行通信

客户端通常可使用Socket的构造器来连接到指定服务器,Socket通常可使用如下两个构造器. Socket(lnetAddress/String  remoteAddress , int  port):创建连接到指定远程主机.远程端口的Socket,该构造器没有指定本地地址.本地端口,默认使用本地主机的默认IP地址,默认使用系统动态指定的IP地址. Socket(lnetAddress/String  remoteAddress , int  port , lnetAddress  local