C#网络编程基础知识一

1.IPAddress类 用于表示一个IP地址。IPAddress默认构造函数

public IPAddress(long address);一般不用

其中Parse()方法最常用于创建IPAddress实例,语法如下

public static IPAddress Parse(string ipString);

IPAddress类还提供了一些只读字段

Any    0.0.0.0

Broadcast 255.255.255.255

Loopback 127.0.0.1

None 255.255.255.255

2.Dns

静态类 提供域名解析功能

常用方法

GetHostEntry   将主机名或IP地址解析为IPHostEntry实例

GetHostName  获取本地计算机的主机名

Resolve      将DNS主机名或IP地址解析为IPHostEntry实例

 //参数 www.163.com

 if (args.Length != )

             {

                 Console.WriteLine("Parameter error!");

                 return;

             }

             //获得主机名

             IPHostEntry results = Dns.GetHostEntry(args[]);

             Console.WriteLine("Host name:" + results.HostName);

             //使用循环显示别名列表

             foreach(string alias in results.Aliases)

             {

                 Console.WriteLine("Alias:" + alias);

             }

             //遍历地址列表

             foreach(IPAddress address in results.AddressList)

             {

                 Console.WriteLine("Address:" + address);

             }

结果:

Host name:1st.xdwscache.ourwebpic.com

Address:218.77.2.32

Address:218.76.105.75

Address:218.75.225.188

请按任意键继续. . .

3.IPEndPoint类 将网络端点表示为IP地址和端口号

构造函数

 public IPEndPoint(long address,int port);

 public IPEndPoint(IPAddress address,int port);

示例:

 IPAddress newAddress = IPAddress.Parse("192.168.10.12");

             //创建IPEndPoint实例

             IPEndPoint ex = new IPEndPoint(newAddress, );

             Console.WriteLine("The IPEndPoint is:{0}",ex.ToString());

             Console.WriteLine("The AddressFamily is:{0}", ex.AddressFamily);

             Console.WriteLine("The Address is:" + ex.Address + ",and the port is:" + ex.Port);

             Console.WriteLine("The Max Port Number is:{0}", IPEndPoint.MaxPort);

             Console.WriteLine("The Min Port Number is:{0}", IPEndPoint.MinPort);

             //用Port属性单独改变IPEndPoint对象的端口值

             ex.Port = ;

             Console.WriteLine(ex.ToString());

4.套接字

多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议商品传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字的接口,区分不同应用程序进程间的通信和连接

套接字原型

 System.Net.Sockets.Socket

 public Socket(AddressFamily addressFamily,SocketType socketType,ProtocolType protocolType);

套接字与协议对应关系

套接字类型

协议对应关系

Dgram(UDP)

无连接通信

Stream(TCP)

面向连接的通信

Raw(ICMP)

ICMP协议

Raw(Raw)

简单IP包

//使用套接字传输数据

服务器端:

 //1.创建一个套接字
//2.将所创建的套接字与本地的IPEndPoint绑定
//3.设置套接字的模式为侦听模式
//4.在套接字上接受接入的连接 //设置IP地址和端口
IPEndPoint newipep = new IPEndPoint(IPAddress.Any, );
//设置套接字
Socket newSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//绑定套接字
newSocket.Listen();
Socket client = newSocket.Accept();

客户端:

 //1.打开套接字
//2.连接远程主机
//3.发送/接收数据
//4.关闭套接字 //设置IP地址和端口
IPEndPoint newipep = new IPEndPoint(IPAddress.Parse("192.168.1.1"), );
//创建Socket对象
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

C#网络编程基础知识的更多相关文章

  1. 1.unix网络编程基础知识

    接触网络编程一年多了,最近在系统的学习vnp两本书,对基础知识做一些总结,希望理解的更透彻清晰,希望能有更多的沉淀. 1.套接口地址 针对IPv4和IPv6地址族,分别定义了两种类型的套接口地址:so ...

  2. windows socket网络编程基础知识

    下面介绍网络7层协议在WINDOWS的实现: 7层协议 WIN系统 ________________________________________ 7 应用层 7 应用程序 ____________ ...

  3. 【Java基础】Java网络编程基础知识

    什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的 ...

  4. JAVA网络编程基础知识

    网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协 ...

  5. JavaSE——网络编程基础知识

    计算机网络的分类: 局域网(LAN) 指在一个较小地理范围内的各种计算机网络设备互联在一起的通信网络,可以包括一个或多个子网,通常局限在几千米的范围之内. 城域网(MAN) 主要由城域范围内的各个局域 ...

  6. Windows网络编程基础知识

    1.WinSock的初始化 #include<iostream> #include<WinSock2.h> #include<MSWSock.h> #pragma ...

  7. python网络编程基础知识整理

  8. 大数据学习笔记——Java篇之网络编程基础

    Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...

  9. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

随机推荐

  1. 我所认识的javascript正则表达式

    前言 如果说这是一篇关于正则表达式的小结,我更愿意把它当做一个手册. 目录:(点击可直达) RegExp 三大方法(test.exec.compile) String 四大护法(search.matc ...

  2. Github优秀java项目集合(中文版) - 涉及java所有的知识体系

    Java资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-java 就是 akullpp 发起维护的 Java 资源列表,内容 ...

  3. 各种主流 SQLServer 迁移到 MySQL 工具对比

          我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于SQL Server开发的C/S产品转为MySQL云产品).首次需要数据转换是测试环节,当时为了快速验证新研发 ...

  4. SQLServer(MSSQL)、MySQL、SQLite、Access相互迁移转换工具 DB2DB v1.2

    最近公司有一个项目,需要把原来的系统从 MSSQL 升迁到阿里云RDS(MySQL)上面.为便于测试,所以需要把原来系统的所有数据表以及测试数据转换到 MySQL 上面.在百度上找了很多方法,有通过微 ...

  5. .NET 平台下的插件化开发内核(Rabbit Kernel)

    每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇"Koala Framework是什么?我为什么要写这个框架?"的文章,在开放框架路上迈出了第一步,之后作者如愿找到了一 ...

  6. struts 2.3.14.1 包详解

    1.struts2-convention-plugin-2.3.14.1.jar: @ParentPackage(default-package) @Namespace("/") ...

  7. Windows10一周年庆典壁纸

    example: 下载:http://pan.baidu.com/s/1b55D5k

  8. mySql引擎

    摘自: http://www.cnblogs.com/sopc-mc/archive/2011/11/01/2232212.html MySql引擎很多,最常见的有InnoDB,MyISAM,NDM ...

  9. Qt做动画旋转旋转图片

    今天看到百度首页的音乐播放有个图片可以旋转,感觉很酷就用qt做了一个类似的,关键时刻还是要发挥数学功底,静下心来,写一写,画一画,编程对数学分析能力要求还是不小的,以后要经常锻炼数学分析能力啊! Wi ...

  10. 访问修饰符(public,private,protected,internal,sealed,abstract)

    为了控件C#中的对象的访问权限,定义对象时可以在前面添加修饰符. 修饰符有五种:private(私有的),protected(受保护的),internal(程序集内部的),public(公开的),以及 ...