关于Winsock:Winsock编程注意事项:与协议无关的带外数据

Winsock网络编程接口 Winsock 是一套开放的、支持多种协议的 Windows 下网络编程接口,是 Windows 网络编程上的标准接口。应用程序通过调用 Winsock 的 API 实现相互之间的通信,而 Winsock利用下层的网络通信协议功能和操作系统调用实现实际的通信工作。        套接字(Sockets)是通信端点的一种抽象,是支持 TCP/IP  协议网络通信的基本操作单元,它提供了一种发送和接 阅读详情

流套接字抽象包括带外(OOB)数据的概念。 许多协议允许以某种方式将输入数据的部分标记为特殊,并且这些特殊数据块可以按正常顺序传递给用户。 示例包括X.25和其他OSI协议中的加急数据,以及BSD UNIX使用TCP中的紧急数据。 以下部分以与协议无关的方式描述OOB数据处理。 使用TCP紧急数据实现的OOB数据的讨论遵循与协议无关的解释。 在每次讨论中,recv的使用也意味着recvfrom,WSARecv和WSARecvFrom,对WSAAsyncSelect的引用也适用于WSAEventSelect。

 

协议独立的OOB数据

OOB数据是与每对连接的流套接字相关联的逻辑上独立的传输信道。可以独立于正常数据将OOB数据传递给用户。 抽象定义OOB数据工具必须一次支持至少一个OOB数据块的可靠传递。 该数据块可以包含至少一个字节的数据,并且至少一个OOB数据块可以在任何时间等待递送给用户。 对于支持带内信令的通信协议(例如TCP,其中紧急数据按正常数据顺序传送),系统通常从正常数据流中提取OOB数据并单独存储(留下间隙) 普通数据流)。 这允许用户在按顺序接收OOB数据和不按顺序接收OOB数据之间进行选择,而不必缓冲所有中间数据。 可以查看带外(OOB)数据。

用户可以使用带有SIOCATMARK IOCTL的ioctlsocket或WSAIoctl函数来确定是否有任何OOB数据正在等待读取。 对于正常数据流中OOB数据块的位置概念有意义的协议,例如TCP,Windows套接字服务提供者维护一个概念标记,指示正常数据流中OOB数据的最后一个字节的位置。 这对于支持SIOCATMARK的ioctlsocket或WSAIoctl函数的实现不是必需的。 是否需要存在或不存在OOB数据。

对于正常数据流中OOB数据块的位置概念有意义的协议,应用程序可以内联处理带外数据,作为普通数据流的一部分。 这是通过使用setsockopt函数设置套接字选项SO_OOBINLINE来实现的。 对于其中OOB数据块真正独立于普通数据流的其他协议,尝试设置SO_OOBINLINE会导致错误。 应用程序可以将ioctlsocket或WSAIoctl函数与SIOCATMARK IOCTL一起使用,以确定标记之前是否有任何未读的OOB数据。 例如,它可以使用此信息与其对等方重新同步,方法是确保在适当时丢弃数据流中标记之前的所有数据。

禁用SO_OOBINLINE(默认设置):

  • 如果应用程序使用WSAAsyncSelect注册通知,则Windows套接字会通知应用程序FD_OOB事件,其方式与使用FD_READ完全相同,以通知正常数据的存在。 也就是说,当OOB数据到达而没有先前排队的OOB数据时,FD_OOB被发布。 当使用MSG_OOB标志读取数据时也会发布FD_OOB,而某些OOB数据在读取操作返回后仍保持排队。 不会为OOB数据发布FD_READ消息。
  • 如果OOB数据在套接字上排队,则Windows套接字将从select中返回,并使用相应的exceptfds套接字集。
  • 应用程序可以使用MSG_OOB调用recv来随时读取紧急数据块。 OOB数据块跳转队列。
  • 应用程序可以在没有MSG_OOB的情况下调用recv来读取普通数据流。 OOB数据块不会出现在具有普通数据的数据流中。 如果在调用recv之后仍保留OOB数据,则Windows套接字在使用select时使用FD_OOB或exceptfds通知应用程序。
  • 对于OOB数据在普通数据流中具有位置的协议,单个recv操作不会跨越该位置。 一个recv返回标记之前的正常数据,并且需要第二个recv才能开始在标记之后读取数据。

启用SO_OOBINLINE后:

  • 不会为OOB数据发布FD_OOB消息。 出于select和WSAAsyncSelect函数的目的,OOB数据被视为正常,并通过在readfds中设置套接字或通过分别发送FD_READ消息来指示。
  • 应用程序无法调用recv,并将MSG_OOB标志设置为读取OOB数据块。 返回错误代码WSAEINVAL。
  • 应用程序可以在没有设置MSG_OOB标志的情况下调用recv。 任何OOB数据都在正常数据流中以正确的顺序传递。 OOB数据永远不会与普通数据混合。 必须有三个读取请求才能通过OOB数据。 第一个返回OOB数据块之前的正常数据,第二个返回OOB数据,第三个返回OOB数据之后的正常数据。 换句话说,保留了OOB数据块边界。

当SO_OOBINLINE关闭时,WSAAsyncSelect例程特别适合处理带外数据存在的通知。

 

TCP中的OOB数据

[!重要]
以下关于使用TCP紧急数据实现的带外数据(OOB)的讨论遵循伯克利软件分发中使用的模型。 用户和实施者应该意识到:

  • 目前,RFC 793存在两种相互矛盾的解释(其中引入了概念)。
  • Berkeley Software Distribution(BSD)中的OOB数据的实现不符合RFC 1122中指定的主机要求。

    具体地说,BSD中的TCP紧急指针指向紧急数据字节之后的字节,并且符合RFC的TCP紧急指针指向紧急数据字节。 因此,        如果应用程序将紧急数据从兼容BSD的实现发送到与RFC 1122兼容的实现,则接收器读取错误的紧急数据字节(它将位于数      据流中正确字节之后的字节读取为紧急数据) 字节)。

    为了最大限度地减少互操作性问题,建议应用程序编写者不要使用OOB数据,除非需要与现有服务进行互操作。 敦促                  Windows套接字供应商记录其产品实现的OOB语义(BSD或RFC 1122)。

具有URG(用于紧急)标志集的TCP段的到达指示TCP数据流内存在单字节的OOB数据。 OOB数据块大小为一个字节。 紧急指针是与TCP报头中的当前序列号的正偏移,其指示OOB数据块的位置(模糊地,如前所述)。 因此,它可能指向尚未收到的数据。

如果在包含紧急指针指向的字节的TCP段到达时禁用SO_OOBINLINE(默认值),则从数据流中删除OOB数据块(一个字节)并进行缓冲。 如果后续TCP段到达时设置了紧急标志(和一个新的紧急指针),则当前排队的OOB字节可能会丢失,因为它被新的OOB数据块替换(如Berkeley Software Distribution中所述)。 但是,它永远不会在数据流中被替换。

启用SO_OOBINLINE后,紧急数据将保留在数据流中。 因此,当新的TCP段到达包含紧急数据时,OOB数据块永远不会丢失。 现有的OOB数据标记将更新到新位置。

注意

设置SO_OOBINLINE套接字选项后,SIOCATMARK IOCTL始终返回TRUE,并将OOB数据作为普通数据返回给用户。

WINSOCK网络编程实验指导与实战手册 在应用层实现ACK确认机制,客户端发送数据后等待确认,若未收到ACK则重传。流程1. 客户端发送数据包 + 序号2. 服务器接收并返回ACK + 序号3. 客户端等待ACK,超时则重传Client->>Server: 发送数据包(seq=1)Server->>Client: 回复ACK(seq=1)alt 超时未收到ACKClient->>Server: 重传数据包(seq=1)end。 阅读详情

相关推荐

深入探索Winsock 2 API:编程与网络协议的桥梁

本博客深入探讨了Winsock 2 API,它是在Windows平台上进行网络编程的重要接口。文章首先介绍了Winsock的历史和对Windows多任务处理的支持,然后详细解析了Winsock 2 API的核心功能,包括其对多协议的支持、数据转换、异步编程模式等。通过对比同步与异步函数的使用,文章提供了在Windows 2000环境下如何有效利用Winsock 2进行高效网络通信的见解。

weixin_35916518的博客 643

网络编程(二)---------------------------套接字详解

前文有介绍,网络数据的传输是通过套接字来实现的,套接字共有3种类型:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)和原始套接字(RAW)。在本文中将蛀牙介绍流式套接字与数据包套接字、 一、流式套接字        流式套接字是面向连接的,提供双向,有序,无重复且无记录边界的数据流服务。 1、服务器端编程步骤:  (1)WSAStartup()         ...

cenpiao2365的博客 635

在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf

在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf

Windows Socket套接字(三)-MFC套接字编程

MFC:CAsyncSocket Class

Greless的后花园 6205

在WINCC中使用WinSock控件进行TCP_IP通讯的例程.rar_TCP/IP_WINSOCK_WinCC_WinCC w

在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf 在WINCC中使用WinSock控件进行TCP_IP通讯的例程.pdf

10分钟快速搭建OpenClaw(基于Windows+飞书)

OpenClaw 是一款功能强大的 AI 智能体工具,能够帮助用户管理邮件、日历等日常事务。本文详细介绍了在 Windows11 系统上安装和配置 OpenClaw 的完整步骤,包括 Node.js 环境搭建、Git 安装、OpenClaw 部署以及飞书机器人创建与对接。通过简单的命令行操作和可视化界面配置,用户可以快速完成 AI 助手部署,实现智能办公自动化。文中还提供了飞书机器人权限设置等关键环节的图文指引,帮助用户轻松完成系统集成。

Hello, New World! 2927

WinSock学习笔记(一)

WinSock学习笔记(一)作者:肖进 Socket(套接字)◆先看定义:typedef unsigned int u_int;typedef u_int SOCKET;◆Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。◆Socket有五种不同的类型:1、流式套接字(stream s

my15y的专栏 817

GD32F103入门实践(一)配置环境,搭建工程模板,烧写程序

写在前面 本系列博客是我初学GD32F103的操作实录,我个人是个小白,在学习过程中真的也遇到了不少坑,因此我希望能记录下来,帮助到同样踩坑的你。 我的芯片是GD32F103ZE,软件是Keil,烧写用的是JLink。 材料准备 首先我在兆易创新官网(兆易创新),下载相关的文件。点击资料下载,在搜索框里输入“GD32F10”可以得到相关的资料,其他芯片类似。比较重要的是GD32F10x AddOn和GD32F10x Firmware Library(固件库),这两个必须下载。 下载Keil MDK5,这

qq_41208487的博客 3万+

MFC之CAsyncSocket详解

MFC之CAsyncSocket详解 https://blog.youkuaiyun.com/u012372584/article/details/76146844 CAsyncSocket类是从Object类派生而来。CAsyncSocket对象称为异步套接字对象。 使用CAsyncSocket进行网络编程,可以充分利用Windows操作系统提供的消息驱动机制,通过应用程序框架来传递消息,方便地处理各种网络事件。另一方面,作为MFC微软基础类库中的一员,CAsyncSocket可以和MFC的其他类融为一体,大大

thanklife的专栏 1854

LPDDR4x 深度解析(3) - SDRAM核心操作机制

本文深入解析LPDDR4x SDRAM的核心操作机制,包括基础架构、刷新操作、读写流程及低功耗设计。详细介绍了存储阵列、地址解码器等关键模块,以及自刷新与自动刷新模式的区别。通过实测数据和技术细节,揭示LPDDR4x在性能优化和功耗控制方面的创新设计,为硬件工程师提供实用参考。

weixin_29278805的博客 308

AUTOSAR TcpIp模块 以太网配置开发2

someip协议之tcpIp协议

汽车电子电气 1085

WinSock异步编程

同步每个函数在下一条语句执行以前必须完成异步Windows的消息是异步的,不按照事先定义的顺序发生的。当程序开始一个任务时,可以告诉Windows在任务完成时发送一条消息,收到消息时根据任务的完成结果再决定下一步做什么,处理完这条消息,控制权又返回给Windows,系统继续执行其他的任务。同步模型中,当执行一些需要花费很长时间才能完成的功能时,程序会被阻塞,无法进行其他的操作,只能等待这个功能完成。异步WinSock则不同,在执行一个费时的网络操作时,程序用WSAAsyncSelect向Windows系统注

wkk的博客 939

UFSV3.1-RPMB实现与测试

UFS RPMB功能验证与测试指南 本文介绍了UFS(通用闪存存储)中RPMB(重放保护内存块)的功能验证与测试方法。主要内容包括: RPMB基础配置: 在Linux系统中查看RPMB设备节点 读取RPMB单元描述符获取配置信息 配置RPMB区域大小(16MB)和使能状态 RPMB特性验证: 获取单次写最大请求(16KB) 测试未编程认证密钥时的读写操作 验证认证密钥编程过程 测试用例: 包含4个测试用例,验证RPMB在不同状态下的行为 提供了详细的命令行操作和预期结果 本文可作为UFS RPMB功能验证。

小码哥的博客 1255

Windows下的网络编程Winsock

相比于基础,网络编程就要复杂一些,但其实也有固定格式,记住即可。

森明帮大于黑虎帮的博客 6914

uniapp(微信小程序):实现PDF在线预览+在线预览pdf文件完整示例源码,支持文件来源:服务器pdf外链URL预览、调用后端API接口获取PDF文件流二进制下载及解析打开、上传本地PDF文件预览

uni-app实现PDF预览功能,uniapp微信小程序预览PDF,uniapp开发微信小程序在线预览pdf等文件,uniApp微信小程序实现PDF在线预览,Uniapp app在线预览pdf文件流,微信小程序实现pdf预览(苹果安卓兼容),uniapp-微信小程序 实现pdf外链在线预览,uniapp小程序如何做在线预览pdf功能,uniapp小程序端 实现pdf文件预览,微信小程序(uniapp)PDF预览完整实现方案示例demo源码,uni-app预览PDF,小程序pdf预览插件插件,Uniapp微信

✅ 精选推荐文章 4705

27、视网膜血管识别与分类的数据集和验证过程

本文介绍了视网膜血管自动识别与分类方法所使用的数据集及其验证过程。通过30张高分辨率的近红外反射视网膜图像,结合专业医生的手动标注结果,构建了包含597个血管段的基准数据集。研究采用准确率、召回率、F1分数和混淆矩阵等评估指标对模型进行验证,并提出了特征增强和分类器优化策略以提升性能。实验结果显示,该方法在复杂区域具有较强的鲁棒性和较高的准确性,为临床应用提供了可靠的依据。

i7j8k9l的博客 148

C语言实现基于TCP和UDP的WinSock套接字编程(WinSock相关函数分析)

个人博客主页 https://www.boolo.top C语言实现基于TCP和UDP的WinSock套接字编程一. TCP协议和UDP协议的简介和区别1. TCP协议2. UDP协议3. 二者的区别二. WinSock套接字简介三. 基于TCP协议实现1. 实现流程2. WinSock函数分析3. 服务器端实现代码(TCP)4. 客户端实现代码(TCP)四. 基于UDP协议实现 一. TCP协议和UDP协议的简介和区别 1. TCP协议 传输控制协议(...

城南以南花亦开 6684

001、Zephyr RTOS简介与历史背景

本文介绍了Zephyr RTOS的特点及其在嵌入式开发中的应用。作者通过亲身经历比较了Zephyr与传统RTOS的差异,重点分析了Zephyr的设备树、统一驱动模型、基于CMake的构建系统、POSIX兼容层等核心特性。文章详细阐述了Zephyr在内核设计上的优势,如中断处理模型、内存管理等,并提供了社区生态和使用建议。作者建议开发者从简单项目入手逐步掌握Zephyr,同时指出了常见的使用问题和适用场景,认为Zephyr特别适合复杂软件架构的物联网和工业控制项目。

m0_50546716的博客 155

[笔记] Microsoft Windows网络编程《一》WinSock简介

本章专门讲解编写成功的 Winsock 用程序的基木方法。Winsock 是一种标准 API(Application Programming Interface,应用程序编程接口),要用于网络中的数据通信,它允许两个或者多个应开程序(或进程)在同一台机器上或通过网络相互通信。Winsock 是一种网络编程接口,而不是协议。使用 Winsock 编程接口,应用程序可通过通网络协议如。

二次元怪兽的博客 3474

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WinSock 编程:Windows 网络编程的基础

WinSock(Windows Sockets)是 Microsoft Windows 操作系统中用于网络编程的一套 API(应用程序编程接口)。它提供了一组函数库,允许程序员在 Windows 平台上开发网络应用程序,实现网络通信和数据传输。WinSock 抽象了底层网络协议和硬件细节,为程序员提供了一套统一的接口,使他们能够更容易地实现网络功能。WinSock 广泛应用于各种 Windows 网络应用程序中,包括网页浏览器、即时通讯软件、网络游戏等。

JAZJD的博客 2453

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Winsock编程

socket(int af,int type,参数说明afsocket 使用的地址格式type指定套接字的类型protocol指定使用的协议类型套接字类型使用的值套接字类型协议字段说明流式套接字使用TCP提供有连接的可靠的传输SOCK DGRAM数据报套接字使用UDP提供无连接的不可靠的传输SOCK RAW原始套接字不使用某种特定的协议去封装它,而是由程序自行处理数据报以及协议首部关闭套接字SOCKET s //函数唯一的参数就是要关闭的套接字句柄。

qq_73006826的博客 1111

Winsock API 编程介绍

Winsock API 编程介绍作者:太子email: tablejiang@21cn.compage:  http://wolfftp.51.net相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API.使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Winsock API来写网络应用程序,但是,

esupermary的专栏 2534

Winsock网络编程

Winsock编程-百度百科

qq_42697866的博客 1399

VB通过WINSOCK发送HTTP协议

 原创文章,转载请注明来源于本博客或给出超连接hi.abidu.com/石首,谢谢WINSOCK发送HTTP协议已经不是什么新鲜事物。最近有些朋友QQ上问我怎么发POST数据,怎么伪造来源地址和伪造IP,我就简单说说吧。先说说一个流程吧:一:先用WINSOCK(以下简称WSK)连接目标主机:    Winsock1.RemoteHost = “www.baidu.com”   

wjb9921的专栏 6631

windows编程--网络编程学习--winsock编程(2)

Winsock下TCP实现过程

我只是一个单纯的2的博客 1万+

计网实验(三):基本Winsock编程

git地址:https://github.com/MyUsernameIsJX/WinSock 1.实验目的及环境 1、了解Winsock编程原理; 2、熟悉Windows网络编程接口; Visual C或 C、VB等。 2. 实验要求 编写一个C/S通讯程序。 具体要求: 使用WINSOCK 通讯:WINSOCK是Windows Sockets API的简称,已经成为Wi...

Jax的博客 4404
上一篇: 关于Winsock:Winsock编程注意事项:优雅关闭、留存选项和套接字关闭
下一篇: 关于Winsock:Winsock编程注意事项:调试和跟踪设施
一世豁然
博客等级 码龄15年 1276粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值