当前位置: 首页 > news >正文

C#网络编程

TCP: 面向连接的传输协议
全双工: A---B 可以互相传递数据
点对点: 传输的数据不可能有多个接收方
可靠的数据传输: 发送的数据是ABC,接受到的一定是ABC

TCP 属于:传输层的协议

套接字:
应用程序通过套接字类获取到 输入和输出的数据.
TcpClient:则用于接收和发送流数据
TcpListener:用于接受连接请求

总是服务端使用TcpListener类


网络连天程序的三种模式
1. 点对点,每一台计算机都是服务器
2. A在服务器中知道了B, 就可以直接A -- B 的连接对话
3. A -- 服务器 -- B


漫长的编程操作
IpAddress类
IPAddress ip = IPAddress.Parse("192.168.0.1");

IPEndPoint类(表示ip和端口号)
IPEndPoint iep = new IPEndPoint(ip, 5666);

Dns类
1. 解析制定的域名
GetHostName() 获取本机名
GetHostEntry() 根据主机名,获取到ip对象

Socket类: 封装了 连接,监听,接受的方法.

TcpClient类(客户端)
tcpClient.Connect(connIP, connPort); //连接指定网络端
netWorkStream = tcpClient.GetStream(); //获取流

TcpListener类(服务器)
tcpListener.Start(); //开始监听
client = tcpListener.AcceptTcpClient(); //中断进程

NetWorkStream网络流
//创建一个异步委托
AsyncCallback callback = new AsyncCallback(ReadMessage);
//当buffer读取完毕之后,就调用callback委托中的方法进行处理
netWorkStream.BeginRead(buffer, 0, buffer.Length, callback, null);


UPD编程简介:
是一种"面向数据报"的"无连接协议":,提供的是"不一定可靠"的传输服务

UDP 与 TCP的区别
1. UDP可靠性不如TCP
2. UDP不能保证有序传输

UDP优势
1. UDP速度比TCP快
2. UDP可以一对多传输
3. UDP有消息边界(有格式的)

UdpClient类
几种实例化方式:
1. public UdpClient();
2. public UdpClient(int port); 只需要发送数据报,(匿名发送) .对方无法判断发送方的端口
3. public UdpClient(IPEndPoint localEp); 只接收数据报
4. public UdpClient(string hostname, int port); 接收和发送,使用4,指定接收远程主机IP 和 port. 自动分配本机IP和 port


1. 只需要发送数据报,(匿名发送) .对方无法判断发送方的端口
使用2进行实例化

2. 只接收数据报
使用3

3. 接收和发送
使用4,指定接收远程主机IP 和 port. 自动分配本机IP和 port


发送信息
public int Send(byte[] butter,int length,IPEndPoint ipe);

接收信息
public byte [] Receive(ref IPEndPoint remoteEP)
remoteEP 发送信息来的ip和端口号
//创建IPEndPoint
IPEndPoint remoteIPEndPoint new IPEndPoint(IPAddress.Any,0);
IPAddress.Any 任意ip地址
0 任意端口号

UDP广播和组播:实现一对多的传输方式
子网掩码 是IP 参照物.分网段用的!
比如 192.168.0.1 和192.168.0.2

1.子网掩码为 255.255.255.0
那么192.168.0.X 在同一个网段,能互相访问
2.希望掩码为 255.255.0.0
那么 192.168.X.X在同一个网段,能互相访问

IP地址分为两部分:
网络标志部分
主机标志部分


相关文章:

  • css设置背景固定不滚动效果的示例
  • XML XPATH simpleXML
  • 学习笔记--mysql的AB复制
  • linux ARP攻击处理
  • C语言基础及指针⑥字符操作
  • Permison Denied
  • 文本处理工具与正则表达式、grep
  • C#中将DataTable导出为HTML的方法
  • day9---多线程,线程锁,队列
  • epoll反应堆模型
  • 这三个创新的主卧装修方案可以学习下!
  • Git中文版教程
  • 枚举
  • AppScan安全问题解决方案
  • POJ 2115 C Looooops扩展欧几里得
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • 2019年如何成为全栈工程师?
  • Create React App 使用
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Invalidate和postInvalidate的区别
  • Javascript 原型链
  • js对象的深浅拷贝
  • PHP的类修饰符与访问修饰符
  • Sass Day-01
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 浏览器缓存机制分析
  • 前端技术周刊 2019-02-11 Serverless
  • 驱动程序原理
  • 如何合理的规划jvm性能调优
  • 入口文件开始,分析Vue源码实现
  • 删除表内多余的重复数据
  • 使用API自动生成工具优化前端工作流
  • 微信公众号开发小记——5.python微信红包
  • 再次简单明了总结flex布局,一看就懂...
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 《天龙八部3D》Unity技术方案揭秘
  • 扩展资源服务器解决oauth2 性能瓶颈
  • #Linux(make工具和makefile文件以及makefile语法)
  • $refs 、$nextTic、动态组件、name的使用
  • (0)Nginx 功能特性
  • (1)Map集合 (2)异常机制 (3)File类 (4)I/O流
  • (2022 CVPR) Unbiased Teacher v2
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (十) 初识 Docker file
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)winform之ListView
  • (转)编辑寄语:因为爱心,所以美丽
  • .NET CLR Hosting 简介
  • .NET Micro Framework初体验