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. 产品列表页分类筛选、排序的算法实现(PHP)

    一.简单的单条件查询 工作都是从简单的开始,先从最简单的单表查询开始,这个一般用在首页以及一些比较独立的页面,只需要查找几个符合条件的产品展示出来即可,可以使用分页或者不使用分页.下面这个是产品控制器 ...

  2. .NET MVC AjaxHelper

    我们首先必须开启 非入侵式 Ajax:导入Jquery和unobtrusiveAjax文件 已经默认开启客户端验证 和 非侵入式js <add key="ClientValidatio ...

  3. Node进阶:核心模块http简介

    本文摘录自<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. http模块概览 大多数nodejs开发者都是冲着开发web s ...

  4. 必须要会的技能(一) 如何实现设计时Binding

    今天我们来分享一个主题:DesignTime Binding设计时绑定. 这一项技术可以使用在所有包括WPF及其衍生出来的技术上,比如Sliverlight,当然也包括UWP 先来说明一下设计时Bin ...

  5. TRUNK的作用功能.什么是TRUNK

    TRUNK的作用功能.什么是TRUNK(转)  [复制链接]   发表于 2011-11-24 11:01 | 来自  51CTO网页 在技术领域中把TRUNK翻译为中文是“主干.干线.中继线.长途线 ...

  6. CSS Bug

    父子标签间用margin的问题,表现在有时除IE(6/7)外的浏览器子标签margin转移到了父标签上,IE6&7下没有转移.测试代码: <body> <style type ...

  7. MVC认知路【点点滴滴支离破碎】【五】----form表单上传单个文件

    //个人理解:前台一个form加input[type='file'],在加一个submit的按钮 主要设置form的action,method,enctype='multipart/form-data ...

  8. python代码缩进

    习惯了java,c++之类的宽容,初学python,被它摆了道下马威,写if else,竟然必须要我正确用缩进格式,原来在python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩 ...

  9. MyEclipse10中自动生成Hibernate的实体和xml配置文件

    前提:1.在项目中添加Hibernate支持 2.MyEclipse中已经创建好数据库连接 3.表已经建好并且有主键 步骤如下: 1.在DB Browser窗口的已打开连接节点中选中用户创建的所有的表 ...

  10. Linux System and Performance Monitoring

    写在前面:本文是对OSCon09的<Linux System and Performance Monitoring>一文的学习笔记,主要内容是总结了其中的要点,以及加上了笔者自己的一些理解 ...