.Net Socket编程基础 -1
2013-10-14 13:19
106 查看
Socket Basic Concepts
首先介绍Socket的一些基本概念Socket是操作系统提供的一系列网络编程接口。
网络模型分若干层,也有一些协议,比如TCP协议,UDP协议等,这些都是抽象的定义,在硬件以及操作系统级别上有一些对应的实现,Socket可以看做操作系统为开发人员提供的一系列网络编程接口,它封装了一些协议的细节,比如怎么组织数据包,怎么发送数据之类的。
Socket编程的几个基本概念
Endpoint
Endpoin指定要连接到哪里,Endpoint包括两部分内容,IP和Port,IP地址和端口组合起来才能唯一指定远程的通信端。
AddressFamily
怎么寻址,有了IP地址之后就是如何寻址的问题,常用的寻址方案是IP V4和IP V6两种类型,windows操作系统从VISTA和Windows 20008起默认支持IPV6。
Protocol
使用什么协议进行通信,比如TCP协议或者UDP协议,下面介绍Socket类型的时候还会涉及TCP和UDP等协议的介绍。
Socket类型
Socket有三种常用类型:Stream, Dgram, Raw
Stream流类型,支持可靠、双向、基于连接的字节流,使用TCP协议。
Dgram数据报类型,支持数据报,即最大长度固定的无连接、不可靠消息。消息可能会丢失或重复并可能在到达时不按顺序排列,使用UDP协议。
Raw类型支持对基础传输协议的访问,需要自己生成数据包。网上有一些RAW的例子,比如D.O.S攻击,ARP攻击,网络监控之类的。
本文只讨论Stream类型的Socket编程,RAW和Dgram不在讨论之列,也就是只讨论基于TCP协议的编程。
一些常见的概念问题
Socket和TCP/IP有什么关系?
Socket和TCP/IP不是一个层面的概念,Socket是操作系统提供的操作TCP数据的编程接口。
Sockets V4、Sockets V5有什么区别?
经常看到一些软件可以设置Sockets4/Sockets5代理,简单说他们是客户端与外网服务器之间通讯的协议,Sockets是位于应用层与传输层之间的中间层。 Sockets V4支持TCP, Sockets V5支持TCP/UDP,支持安全认证,支持IPV6。
Socket能够同时接受和发送数据吗?
TCP协议是双工的
Socket如何保证数据按顺序到达?
TCP协议来保证
Socket的基本通信模型模型
客户端:
Socket()
Connect
Send
Close
服务器端:
Socket()
Bind
Listen
Accept
Receive
Send
Close
客户端和服务器端模型是不一样的,两边是非对称的。
.Net Socket API
下面是.Net Socket编程最基本的几个类,位于命名空间System.Net.Sockets
Socket Socket接口类
TcpClient TCP客户端类
TcpListener TCP侦听类
NetworkStream 用于网络访问的基础数据流
其他经常用到的辅助类,位于命名空间System.Net
Dns 域名解析
EndPoint 标识网络地址
IPAddress IP地址。
NetworkCredential 基于密码的身份验证方案,不支持基于公钥的身份验证方法(比如ssl)
一个Socket的简单例子
输入网址,获得HTML页面的一段演示代码,只是演示Socket对象的几个主要功能,不具有实用价值。
基本步骤为:建立Socket对象,连接服务器,发送数据,然后接受数据,对应上一章介绍的Socket通信模型。
代码
[code= csharp; auto-links: true; collapse: false; first-line: 1; gutter: html-script: light: ruler: smart-tabs: tab-size: 4; toolbar:">
相关文章推荐
- 第二次c++尝试
- phpcms v9笔记之模板制作案例
- java HastTable实现
- Spring Security 检查会话是否存在
- 【转】rvm安装ruby,gem,rails,之后仍然无法找到rails命令
- php 模拟POST提交
- python学习笔记
- rubyCas服务器搭建 (一)
- java类的反射机制
- C++ 异常处理 入门
- QT笔记(2)
- Qt笔记(1)
- Cucumber + Watir webdriver + Ruby 功能自动化测试
- Qt窗口部件之行编辑器
- window下Qt开发环境的搭建
- QT绘图基础
- QT 打印的简单实现(转)
- C语言中数据的强制转换
- ubuntu 11.10 下安装Qt的开发坏境
- C++ 智能指针详解