C#网络编程基础知识
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.unix网络编程基础知识
接触网络编程一年多了,最近在系统的学习vnp两本书,对基础知识做一些总结,希望理解的更透彻清晰,希望能有更多的沉淀. 1.套接口地址 针对IPv4和IPv6地址族,分别定义了两种类型的套接口地址:so ...
- windows socket网络编程基础知识
下面介绍网络7层协议在WINDOWS的实现: 7层协议 WIN系统 ________________________________________ 7 应用层 7 应用程序 ____________ ...
- 【Java基础】Java网络编程基础知识
什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的 ...
- JAVA网络编程基础知识
网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协 ...
- JavaSE——网络编程基础知识
计算机网络的分类: 局域网(LAN) 指在一个较小地理范围内的各种计算机网络设备互联在一起的通信网络,可以包括一个或多个子网,通常局限在几千米的范围之内. 城域网(MAN) 主要由城域范围内的各个局域 ...
- Windows网络编程基础知识
1.WinSock的初始化 #include<iostream> #include<WinSock2.h> #include<MSWSock.h> #pragma ...
- python网络编程基础知识整理
- 大数据学习笔记——Java篇之网络编程基础
Java网络编程学习笔记 1. 网络编程基础知识 1.1 网络分层图 网络分层分为两种模型:OSI模型以及TCP/IP网络模型,前者模型分为7层,是一个理论的,参考的模型:后者为实际应用的模型,具体对 ...
- Java网络编程基础(Netty预备知识)
今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...
随机推荐
- 端口被占用的解决方案 sql server 10048 错误
一大早发现sql server服务无法启动,10048错误,一查是端口占用. 先找到哪个进程,结束即可. cmd命令, netstat /ano|findset "1433" 出现 ...
- css的active事件在手机端不生效的解决方法
对一名前端来说,改页面的过程总是痛苦的,产品经理说要加个点击样式,于是加active的class,本来以为这样就OK了,没想到电脑上ok,本地测也是ok的,tomcat上一跑就没效果了.我甚至把! i ...
- 年中review
1. 做好已知的各种项目,争取能成立固定团队 (项目一期争取能在本月上线)2. 横向扩展技术学习,了解各种技术,加强技术素养(从Server到前端,现在要关注的知识点越来越多,fighting...) ...
- [POJ3696]The Luckiest number(数论)
题目:http://poj.org/problem?id=3696 题意:给你一个数字L,你要求出一个数N,使得N是L的倍数,且N的每位数都必须是8,输出N的位数(如果不存在输出0) 分析: 首先我们 ...
- JavaScript学习笔记-简单的倒计时跳转页面
<!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...
- javascript正则表达式验证IP,URL
验证IP function isIP(ipstr){ var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[ ...
- JavaScript变量的作用域和函数的作用域的区别
变量作用域和函数作用域都涉及到变量值的变化,本文旨在让大家明白他们之间的区别 变量的作用域: 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接 ...
- python代码缩进
习惯了java,c++之类的宽容,初学python,被它摆了道下马威,写if else,竟然必须要我正确用缩进格式,原来在python里不能用括号来表示语句块,也不能用开始/结束标志符来表示,而是靠缩 ...
- MVC 理解小谈
1. 如何理解MVC MVC 是一种经典的设计模式,全名为 Model-View-Controller,即 模型-视图-控制器. 其中,模型 是用于封装数据的载体,其本质是一个普通的 Java Bea ...
- [转]session 持久化问题(重启服务器session 仍然存在)
转:http://xiaolongfeixiang.iteye.com/blog/560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionListener 触 ...