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[];
//调用自定义方法ConnectSocket,使用指定的服务器名和端口号实例化一个Socket对象
Socket socket = ConnectSocket(server, port);
if (socket == null)
return ("连接失败!");
//将请求发送到连接的服务器
socket.Send(btSend, btSend.Length, );
int intContent = ;
string strContent = server + "上的默认页面内容:\n";
do
{
//从绑定的Socket接收数据
intContent = socket.Receive(btReceived, btReceived.Length, );
//将接收到的数据转换为字符串类型
strContent += Encoding.ASCII.GetString(btReceived, , intContent);
}
while (intContent > );
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);
}
}
}

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

  1. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

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

    第1章 网络基础知识 1-1 网络基础简介 (10:21) 第2章 Java 中网络相关 API 的应用 2-1 Java 中的 InetAddress 的应用 (08:10) import java ...

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

    Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket.像大家熟悉的QQ.MSN都使用了Socket相关的技术. ...

  4. [Real World Haskell翻译]第24章 并发和多核编程 第一部分并发编程

    第24章 并发和多核编程 第一部分并发编程 当我们写这本书的时候,CPU架构正在以比过去几十年间更快的速度变化. 并发和并行的定义 并发程序需要同时执行多个不相关任务.考虑游戏服务器的例子:它通常是由 ...

  5. 详解 ServerSocket与Socket类

    (请观看本人博文 -- <详解 网络编程>) 目录 ServerSocket与Socket ServerSocket 类: Socket类: ServerSocket与Socket 首先, ...

  6. 使用Socket进行通信

    客户端通常可使用Socket的构造器来连接到指定服务器,Socket通常可使用如下两个构造器. Socket(lnetAddress/String  remoteAddress , int  port ...

  7. java socket线程通信

    关于socket线程通信的一些知识整理 一般我们需要要让两台机子进行通信,需要创建一个Server 类,一个Client类,还需要创建一个线程类 server public class Server ...

  8. Socket类 以及 ServerSocket类 讲解

    Socket类 套接字是网络连接的端点,套接字使应用可以从网络中读取数据,可以向网络中写入数据.不同计算机上的两个应用程序可以通过连接发送或接收字节流,以此达到相互通信的目的. 为了从一个应用程序向另 ...

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

    假设TCP套接字服务器端已经建立好并正在监听客户端的连接了,那么客户端就可以通过Socket类来发起连接.客户端发起一个连接请求后,就被动地在等待服务器的响应.这个类同样位于java.net包中,包含 ...

随机推荐

  1. How to use FTP

    Forward from: https://www.server-world.info/en/note?os=CentOS_7&p=ftp&f=2 Thanks for your sh ...

  2. JSONP 理解 和 实例 讲解

    1.什么是jsonp 1.1 同源策略 浏览器同源策略的限制,XmlHttpRequest只允许请求当前源(相同域名.协议.端口)的资源. -1)jsonp只支持get请求 -2)不受同源策略限制 , ...

  3. ThinkPHP中疑难笔记

    不但要记住核心的东西, 还要记住 相关的 东西: 如php cli的版本是 5.6.14 bulit: sep 30, 2015 tp中, 通常说的系统就是框架; 项目就是 "应用程序&qu ...

  4. Linux命令--删除软连接

    1,建立软链接 ln -s 源文件 目标文件 例如:ln -s /usr/hb/ /home/hb_link 2,删除软链接 正确的是:rm -rf hb_link 错误的是:rm -rf hb_li ...

  5. Javascript的setTimeOut()和setInterval()的定时器用法

    Javascript用来处理延时和定时任务的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请 ...

  6. Java重点识记

    1.final修饰的类不能被继承,已经达到类层次中的最低层. 2.abstract修饰的类或成员方法,表明是抽象的,含有抽象方法的类必须说明是抽象类,必须派生出子类. 3.JAVA对逻辑与和逻辑或提供 ...

  7. bzoj1491 社交网络

    Description 在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象.不妨看这样的一个问题. 在一个社交圈子里有n个人,人与人之间有不同程度的关系.我们将这 ...

  8. scp命令详解

    \ svn 删除所有的 .svn文件 find . -name .svn -type d -exec rm -fr {} \; linux之cp/scp命令+scp命令详解   名称:cp 使用权限: ...

  9. CentOS(RedHat)安装Adobe Flash Player插件 For firefox

    1. 下载离线包 http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash 如果嫌麻烦,我 ...

  10. ReactiveCocoa源码拆分解析(五)

    (整个关于ReactiveCocoa的代码工程可以在https://github.com/qianhongqiang/QHQReactive下载) 好多天没写东西了,今天继续.主要讲解RAC如何于UI ...