随笔分类 - Window网络编程
《windows网络与通信程序设计》动手实践
摘要:每台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上各主机和路由器的IP地址和硬件地址的映射表,这些都是该主机目前知道的一些地址。当主机A要向本局域网上的某个主机B发送IP数据报时,先在其ARP高速缓存中查看是否有主机B的IP地 址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧,然后通过局域网把该MAC帧发往此硬件地址。也有可能查不到主机 B的IP地址的项目。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,然后按以下步骤找到主 机B的硬件地址。实现地址解析的第一步是产生ARP请求帧。在
阅读全文
摘要:一、创建 I/O 完成端口对象使用这种模型之前,首先要创建一个 I/O 完成端口对象,需要调用 CreateCompletionPort 函数HANDLE WINAPI CreateIoCompletionPort( __in HANDLE FileHandle, __in HANDLE ExistingCompletionPort, __in ULONG_PTR CompletionKey, __in DWORD NumberOfConcurrentThreads);要注意该函数有两个功能:● 用于创建一个完成端口对象;HANDLECompletionPort = CreateIoCompl
阅读全文
摘要:============================================== █ 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型。利用这个模型,应用程序可在一个套接字上, 接收以 Windows 消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。 该模型的核心即是WSAAsyncSelect函数。█ 要想使用 WSAAsyncSelect 模型,在应用程序中,首先必须用CreateWindow函数创建一个窗口,再为该窗口提供一个窗口例程函数(WinProc)。█ WSAAsyncSelect ...
阅读全文
摘要:匿名管道概述 匿名管道就是没有名字的管道了,还有一种管道呢,叫做命名管道。 在本地机器上可以使用匿名管道来实现父进程和子进程之间的通信,这里需要注意两点,第一就是在本地机器上,这是因为匿名管道不支持跨网络之间的两个进程之间的通信,第二就是实现的是父进程和子进程之间的通信,而不是任意的两个进程。说了这么多,到底怎么使用匿名管道呢?匿名管道使用匿名管道主要用于本地父进程和子进程之间的通信, 在父进程中,首先是要创建一个匿名管道,在创建匿名管道成功后,可以获取这个匿名管道的读句柄和写句柄(是两个句柄哦),然后父进程就可以向这个匿名管道中写入数据和从匿名管道中读取数据了;但是如果要实现的是父子进程通信
阅读全文
摘要:三次握手原理解析TCP握手协议在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上
阅读全文