网络编程
文章平均质量分 65
毕业季的迷茫
这个作者很懒,什么都没留下…
展开
-
MFC HttpClient
//////////////////////////////////// HttpClient.h#ifndef HTTPCLIENT_H#define HTTPCLIENT_H#include <afxinet.h>#include <string>using namespace std;#define IE_AGENT _T("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.原创 2021-02-05 13:35:48 · 367 阅读 · 0 评论 -
IP多播
使用广播服务,封包可以被发送到网络中的每个节点,而使用本节将介绍的多播服务,封包仅被发送到网络节点的一个集合。IGMP 是IPv4 引入的管理多播客户和它们之间关系的协议。一、多播地址为了发送IP 多播数据,发送者需要确定一个合适的多播地址,这个地址代表一个组。IP多播地址采用D 类IP 地址确定多播的组,地址的范围是224.0.0.0~239.255.255.255。不过,有许多多播地址保留为特殊目的使用,下表列出了一些比较重要的地址(保留的IP 多播地址):224.0.0.0 基地址(...原创 2021-01-12 09:58:33 · 1027 阅读 · 0 评论 -
UDP广播
理论上可以像播放电视节目一样在整个Internet 上发送广播数据,但是几乎没有路由器转发广播数据,所以,广播程序只能应用在本地子网中。广播需要有发送方和接收方,必须有一些线程在机器上监听到来的数据。广播的缺点是如果有多个进程都发送广播数据,网络就会阻塞,网络性能便会受到影响。广播发送方:使用setsockopt打开SO_BROADCAST, 设置广播地址 255.255.255.255,设置广播端口号广播接收方:将套接字绑定到指定的广播端口号, 监听数据到来广播发送方大概流程如下:SOCK原创 2021-01-12 09:58:19 · 1264 阅读 · 0 评论 -
ioctrlsocket和setsockopt
获取和设置套接字选项的函数分别是getsockopt 和setsockoptint getsockopt( SOCKET s, // 套接字句柄 int level, // 指定此选项被定义在哪个级别,如SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP 等 int optname, // 套接字选项名称,如SO_ACCEPTCONN char* optval, // 指定一个缓冲区,所请求的选项的值将会被返回到这...原创 2021-01-12 09:58:08 · 318 阅读 · 0 评论 -
IOCP完成端口
一、使用完成端口的基本流程1. 调用 CreateIoCompletionPort 创建一个完成端口2. 根据系统有多少个处理器, 就建立做少个工作线程3. 接收接入的 socket 连接, 可以用 accept/AcceptEx4. 每当客户端接入, 调用 CreateIoCompletonPort 把新的socket与完成端口绑定5. 投递网络请求 WSARecv/WSASend6. 工作线程调用 GetQueuedCompletionStatus 扫描完成端口是否有完成操作, 一旦有则将原创 2021-01-12 09:57:52 · 309 阅读 · 1 评论 -
重叠IO模型
重叠I/O 模型提供了更好的系统性能。这个模型的基本设计思想是允许应用程序使用重叠数据结构一次投递一个或者多个异步I/O 请求(即所谓的重叠I/O)。提交的I/O 请求完成之后,与之关联的重叠数据结构中的事件对象受信,应用程序便可使用WSAGetOverlappedResult 函数获取重叠操作结果。这和使用重叠结构调用ReadFile和WriteFile 函数操作文件类似。1. 创建套接字SOCKET WSASocket(int af, int type, int protocol, // 前3原创 2021-01-12 09:57:37 · 754 阅读 · 0 评论 -
WSAEventSelect 模型
WSAEventSelect允许应用程序在一个或者多个套接字上接收基于事件的网络通知,不过并不是依靠Windows 的消息驱动机制,而是经由事件对象句柄通知。使用这个模型的基本思路是为感兴趣的一组网络事件创建一个事件对象,再调用WSAEventSelect 函数将网络事件和事件对象关联起来。当网络事件发生时,Winsock 使相应的事件对象受信,在事件对象上的等待函数就会返回。之后,调用WSAEnumNetworkEvents函数便可获取到底发生了什么网络事件。WSAEVENT WSACreateEve原创 2021-01-12 09:57:08 · 312 阅读 · 0 评论 -
WSAAsyncSelect 模型
WSAAsyncSelect 模型允许应用程序以Windows 消息的形式接收网络事件通知。这个模型是为了适应Windows 的消息驱动环境而设置的,现在许多对性能要求不高的网络应用程序都采用WSAAsyncSelect 模型,MFC(Microsoft Foundation Class,Microsoft 基础类库)中的CSocket 类也使用了它。WSAAsyncSelect 函数自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。int WSAAsy原创 2021-01-11 21:44:05 · 644 阅读 · 2 评论 -
select模型
int select( int nfds, // 忽略,仅是为了与Berkeley 套接字兼容 fd_set* readfds, // 指向一个套接字集合,用来检查其可读性 fd_set* writefds, // 指向一个套接字集合,用来检查其可写性 fd_set* exceptfds, // 指向一个套接字集合,用来检查错误 const struct timeval* timeout // 指定此函数等待的最长时间,如果为NULL,则最长时间为无限大);函数调用成功,返回发生网络事件的.原创 2021-01-11 21:41:41 · 112 阅读 · 0 评论 -
socket 超时设置
int nNetTimeout=1000;//1秒//发送时限setsockopt(socket,SOL_S0CKET, SO_SNDTIMEO, (char *)&nNetTimeout,sizeof(int));//接收时限setsockopt(socket,SOL_S0CKET, SO_RCVTIMEO, (char *)&nNetTimeout,sizeof(int));这样做在Linux环境下是不会产生效果的,须如下定义:struct timeval timeout =原创 2021-01-11 21:35:10 · 4412 阅读 · 2 评论