浅谈浅谈C#网络编程详解篇网络编程详解篇
在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践,需要的朋友可以参
考下
阅读目录:
基础
Socket编程
多线程并发
阻塞式同步IO
基础基础
在现今软件开发中,网络编程是非常重要的一部分,本文简要介绍下网络编程的概念和实践。
Socket是一种网络编程接口,它是对传输层TCP、UDP通信协议的一层封装,通过友好的API暴露出去,方便在进程或多台机
器间进行网络通信。
Socket编程编程
在网络编程中分客户端和服务端两种角色,比如通过打开浏览器访问到挂在Web软件上的网页,从程序角度上来看,即客户
端(浏览器)发起了一个Socket请求到服务器端,服务器把网页内容返回到浏览器解析后展示。在客户端和服务端数据通信前,
会进行三次确认才会正式建立连接,也即是三次握手。
1. 客户端发送消息询问服务端是否准备好
2. 服务端回应我准备好了,你呢准备好了吗
3. 客户端回应服务端我也准备好了,可以通信了
TCP/IP协议是网络间通信的基础协议,在不同编程语言及不同操作系统下暴露的Socket接口用法也大同小异,仅是其内部实
现有所不同,比如Linux下的epoll和windows下的IOCP。
服务端服务端
实例化Socket
把公共地址端口绑定操作系统上
开始监听绑定的端口
等待客户端连接
IPEndPoint ip = new IPEndPoint(IPAddress.Any, 6389);
Socket listenSocket = new Socket(ip.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
listenSocket.Bind(ip);
listenSocket.Listen(100);
listenSocket.Accept();
listen函数中有个int类型参数,它表示最大等待处理连接的数量,表示已建立连接但还未处理的数量,每调用Accept函数一下
即从这个等待队列中拿出一个连接。 通常服务端要服务多个客户端请求的连接,所以会循环从等待队列中拿出连接,进行接
收发送。
while (true)
{
var accept= listenSocket.Accept();
accept.Receive();
accept.Send();
}