1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Net;
  9. using System.Net.Sockets;
  10.  
  11. namespace Test06
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19. private static Socket ConnectSocket(string server, int port)
  20. {
  21. Socket socket = null; //实例化Socket对象,并初始化为空
  22. IPHostEntry iphostentry = null; //实例化IPHostEntry对象,并初始化为空
  23. iphostentry = Dns.GetHostEntry(server); //获得主机信息
  24. //循环遍历得到的IP地址列表
  25. foreach (IPAddress address in iphostentry.AddressList)
  26. {
  27. //使用指定的IP地址和端口号实例化IPEndPoint对象
  28. IPEndPoint IPEPoint = new IPEndPoint(address, port);
  29. //使用Socket的构造函数实例化一个Socket对象,以便用来连接远程主机
  30. Socket newSocket = new Socket(IPEPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  31. newSocket.Connect(IPEPoint); //调用Connect方法连接远程主机
  32. if (newSocket.Connected) //判断远程连接是否连接
  33. {
  34. socket = newSocket;
  35. break;
  36. }
  37. else
  38. {
  39. continue;
  40. }
  41. }
  42. return socket;
  43. }
  44. //获取指定服务器的主页面内容
  45. private static string SocketSendReceive(string server, int port)
  46. {
  47. string request = "GET/HTTP/1.1\n主机:" + server + "\n连接:关闭\n";
  48. Byte[] btSend = Encoding.ASCII.GetBytes(request);
  49. Byte[] btReceived = new Byte[];
  50. //调用自定义方法ConnectSocket,使用指定的服务器名和端口号实例化一个Socket对象
  51. Socket socket = ConnectSocket(server, port);
  52. if (socket == null)
  53. return ("连接失败!");
  54. //将请求发送到连接的服务器
  55. socket.Send(btSend, btSend.Length, );
  56. int intContent = ;
  57. string strContent = server + "上的默认页面内容:\n";
  58. do
  59. {
  60. //从绑定的Socket接收数据
  61. intContent = socket.Receive(btReceived, btReceived.Length, );
  62. //将接收到的数据转换为字符串类型
  63. strContent += Encoding.ASCII.GetString(btReceived, , intContent);
  64. }
  65. while (intContent > );
  66. return strContent;
  67. }
  68. private void button1_Click(object sender, EventArgs e)
  69. {
  70. string server = textBox1.Text; //指定主机名
  71. int port = Convert.ToInt32(textBox2.Text); //指定端口号
  72. //调用自定义方法SocketSendReceive获取指定主机的主页面内容
  73. string strContent = SocketSendReceive(server, port);
  74. MessageBox.Show(strContent);
  75. }
  76. }
  77. }

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. 要学Java,怎么高效地学习,怎么规划

    要学Java,怎么高效地学习,怎么规划?   题主是一个个例,99%的人(包括我自己)都没有题主这样的经历,也很难提出具有很强参考性的java学习建议.我倒是之前面试过一个跟题主有点类似的人,拿出来分 ...

  2. LoadRunner 函数之lr_xml_find

    实例如: char *xml_input = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>&qu ...

  3. centos7 没有iptables服务 file or directory? 用secureCRT登录centos?

    cenetos7 采用systemd来管理服务 centos7 没有采用传统的iptables服务, 而是采用的firewalld 服务, 以及firewall-cmd 命令; 也可以采用传统的 ip ...

  4. jvm

    -Xms128m表示JVM Heap(堆内存)最小尺寸128MB,初始分配-Xmx512m表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配. 说明:如果-Xmx不指定或者指定偏小,应用 ...

  5. 移动端框架篇-控制子容器的滑屏框架-fullPage.js

    控制子容器法 方法是只显示其中一个子元素,其它隐藏,滑屏时隐藏当前元素,并显示当前元素的下一个同辈元素~ 这里采用fullPage框架,库大小7.69K~ fullPage框架的页面样式无需自定义,已 ...

  6. [Machine Learning & Algorithm] 朴素贝叶斯算法(Naive Bayes)

    生活中很多场合需要用到分类,比如新闻分类.病人分类等等. 本文介绍朴素贝叶斯分类器(Naive Bayes classifier),它是一种简单有效的常用分类算法. 一.病人分类的例子 让我从一个例子 ...

  7. UVA-11991 Easy Problem from Rujia Liu?

    Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...

  8. T-SQL备忘-表连接更新

    1.update a inner join b on a.id=b.id set a.name=b.name where ...   2.update table1 set a.name = b.na ...

  9. poj 1192

    此题亦一眼看出算法,一次AC. 没什么好讲的,就是一个普通的树形动规. 用dp[n][0]表示n号顶点不取时的最大值,dp[n][1]表示n号顶点取时的最大值. dp[n][0]=max{dp[x][ ...

  10. BZOJ4590——[Shoi2015]自动刷题机

    1.题意:题意很简洁吧,就不概括了 2.分析:我思考了半天,我猜答案满足单调...没敢写,看了题解去问Claris为啥单调,Claris一句话" 因为n越大明显不可能做更多题 ", ...