winsock2 图片传输

windows网络编程(二)——传送图片 客户端 #define _CRT_SECURE_NO_WARNINGS #include #include #include #pragma comment(lib, "ws2_32.lib") //加载 ws2_32.dll int main(){ FILE*p = fopen("C:\\Users\\Administrator\\Desktop\\1.PNG","r 阅读详情

最近项目需要进行图片传输,以前只做过字符串的通信,其实图片和字符串差不多,只是开头多了一个解析的过程,

第一步:客户端发送指令给服务端,告诉服务端图片来了

第二部:客户端通过fread(*fp,size)    读取图片循环多次发送。

第三步:服务端通过fwrite(*fp,size)  将读取的信息逐步写入文件,写入后记得移动文件指针到文件尾

              fseek(File*fp, int offset, int origin);

                   origin:0表示文件头、1表示当前位置、2表示文件尾

 

第四部:服务器端循环读取,当读取信息=0;表示读取完毕,这是保存图片即可。

 

下面再简单介绍下winsock中的方法(以下方法都摘自winsock.h头文件):

 

Socket在通信之前需要知道彼此的地址,一般这个地址由IP和PORT决定

在winsock中使用SOCKADDR_IN来指定地址信息     

下面简单介绍下sockaddr和sockaddr_in这两个结构体的介绍,这两个结构体在ws2def.h中定义

//
// IPv4 Socket address, Internet style
//
 
typedef struct sockaddr_in {
 
 #if(_WIN32_WINNT < 0x0600)
    short  sin_family;
#else //(_WIN32_WINNT < 0x0600)
    ADDRESS_FAMILY sin_family;       //一般该字段设置为AF_INET,表示winsock此时正在使用IP地址族。地址家族,一般以AF_XXXX开头

#endif //(_WIN32_WINNT < 0x0600)
 
	USHORT sin_port;
	//将地址作为一个4字节的量存储(IP4) 
	// sin_addr.s_addr= inet_addr(“192.168.0.1”)  存储IPv4的内容
	IN_ADDR sin_addr;   
                                         
    CHAR sin_zero[8];    //只充当填充项、使SOCKADDR_IN和SOCKADDR结构长度一致
} SOCKADDR_IN, *PSOCKADDR_IN;

这个数据结构主要用在bind、connect、recvfrom、sendto等函数中,指明地址信息


//
// IPv4 Internet address
// This is an 'on-wire' format structure.
//
typedef struct in_addr 
{
	union {
		struct 
		{ 
			UCHAR s_b1,s_b2,s_b3,s_b4; 
		} S_un_b;
		
		struct 
		{ 
			USHORT s_w1,s_w2; 
		} 
		S_un_w;
		ULONG S_addr;
        } S_un;
		
#define s_addr S_un.S_addr /* can be used for most tcp & ip code */
#define s_host S_un.S_un_b.s_b2    // host on imp
#define s_net  S_un.S_un_b.s_b1    // network
#define s_imp  S_un.S_un_w.s_w2    // imp
#define s_impno S_un.S_un_b.s_b4    // imp #
#define s_lh   S_un.S_un_b.s_b3    // logical host
} IN_ADDR, *PIN_ADDR,FAR *LPIN_ADDR;
 
 
//
// Structure used to store most addresses.
//
typedef struct sockaddr {
 
#if (_WIN32_WINNT < 0x0600)
    u_short sa_family;
#else
    ADDRESS_FAMILY sa_family;          // Address family.  ADDRESS_FAMILY就是unsigned short
#endif //(_WIN32_WINNT < 0x0600)
 
    CHAR sa_data[14];                  // Up to 14 bytes of direct address.
} SOCKADDR, *PSOCKADDR,FAR *LPSOCKADDR;

 

Socket套接字:

 套接字是通信时提供的句柄,在winsock中的操作都是基于套接字实现的。在winsock中实现套接字有两种方法:

Socket和WSASocket:

SOCKET WINAPI socket(int af   // 协议地址族;一般为AF_INET

Int type //  TCP/IP是SOCK_STREAM

// UDP/IP 是SOCK_DGRAM

Int protocol    //协议标准 

TCP IPROTO_TCP

IPPROTO_UDP)

 

如果创建成功,则会返回一个有效的SOCKET句柄;

后续的bind、listen、connect、send、recv都是基于该SOCKET句柄实现的。

 

服务器端:

绑定、监听、接受连接

 

int
WSAAPI
bind(
    _In_ SOCKET s,     //要绑定的socket
    _In_reads_bytes_(namelen)const struct sockaddr FAR * name,  //指定要进行绑定的地址结构,即SOCKADDRE_IN结构
    _In_ int namelen      //参数二的长度
    );
 
 
int
WSAAPI
listen(
    _In_ SOCKET s,     //要监听的socket
    _In_ int backlog     //监听的最大数量,当超过该数量后,监听失败
    );
 
 
 
SOCKET
WSAAPI
accept(
    _In_ SOCKET s,                         //处于监听模式的socket
    _Out_writes_bytes_opt_(*addrlen)struct sockaddrFAR * addr,    //连接后的获得//对方的地址信息
    _Inout_opt_ int FAR * addrlen       //参数二的结构体长度
);

//当该函数调用成功后,会返回socket、然后通过该socket可以与客户端进行通信了

 

 

 

 

客户端:客户端在初始化一个SOCKET后,需要连接后才可以开始进行通信,这时必须调用connect函数;


int
WSAAPI
connect(
    _In_ SOCKET s,
    _In_reads_bytes_(namelen)const struct sockaddr FAR * name,
    _In_ int namelen
   );


winSock 实现文件的传输 简单的C/S架构的文件传输,使用的是阻塞模式,下次尝试非阻塞的和异步模式的。PS.最近在看,感觉读起来很累,果然是基础太差啊。 客户端 #include "stdafx.h" #include #pragma comment(lib, "ws2_32.lib") int main() { WORD wVersion; WSADATA wsaData; int er 阅读详情

相关推荐

VB6 通过winsock控件数组实现客户端和服务器多对一通信

在VB6中使用winsock控件需要引用Microsoft Winsock Control 6.0部件使用winsock控件可以实现客户端和服务器间C/S结构的通信,如果把客户端和服务器放置于同一台电脑中,并且将客户端winsock的RemoteHost设置为本机IP,则可以实现客户端程序和服务端程序间的自由通信。在应用程序之间采用winsock通信比内存共享等方法更简单快捷,同时也更安全。在客户端中添加一个窗体,拖拽一个winsock控件到该窗体上。Private Sub Form_Load() Me.

数字地质 1万+

Windows 下进程之间的通信(IPC)-管道

Windows下进程之间的通信—管道 进程间的通信(IPC、InterProcess Communication)是指在不同的进程直接传播或这交换信息。 IPC常用的通信方式有: 管道(包括匿名管道 和命名管道) :匿名管道只能在本机上的父子进程之间通信,而命名管道不仅可以在本机上实现两个进程间的通信,还可以跨网络实现两个进程间的通信 。 消息队列 信号量 共享存储 Socket Streams...

外环西路 7283

Windows下C 用 Socket 发送图片--基础

Windows下C 用 Socket 发送图片--基础转载:http://blog.youkuaiyun.com/yulinxx/article/details/51338214服务器端:#include &lt;stdio.h&gt;  #include &lt;winsock2.h&gt;  #include &lt;winsock2.h&gt;  #define SERVER_PORT 9210 //侦...

jacke121的专栏 2755

C++ 实现json形式的Socket传输图片

大致流程:客户端读取图片,经过Base64编码,转成字符串的形式,保存到json中,通过socket传到服务端,然后Base64解码,再转换成图片 一.服务端 1.main.cpp #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include "Base64_1.h" #include &lt;winsock2.h&gt; ...

weixin_42755375的博客 3540

基于Winsock的图片传输系统设计与实现

图像处理是连接物理世界与数字系统的桥梁,尤其在网络通信背景下,图像不仅需要被正确显示,还需满足跨平台兼容性、带宽效率和实时性要求。当前主流的图像处理技术主要分为两类:Windows原生支持的GDI+(Graphics Device Interface Plus)和开源跨平台的OpenCV(Open Source Computer Vision Library)。两者各有优势,适用于不同应用场景。定义如下协议头结构,用于标识图像元信息:// 标志位 'IMG' (0x494D47)

weixin_35755562的博客 702

winsock传送图片

通过winsock将客户端picture控件上的图片传送到服务器端接收并显示在picture控件中,双方可以对发,自己可以改变图片但应注意图片的大小不能超过8k

【视频传输】二、Opencv结合socket进行视频传输(TCP协议)

博文由来:笔者突发奇想,做采集4个USB摄像头画面小实验时,却遇到了在电脑上最多只能同时开启3个这样头痛的问题(个人分析认为是电脑的问题),故出此下策,在客户端挂1个,服务器挂3个摄像头,利用socket进行视频传输,本篇文章是利用的是TCP协议。笔者拙见,欢迎提出批评。 说明:在此之前笔者也从未接触过socket编程,也不懂TCP/IP、UDP等基本知识...

weixin_30872867的博客 964

使用winsock传输并显示图片包括服务器端和客户端

使用winsock传输并显示图片包括服务器端和客户端

windows基于TCP/IP的简单文件/图片传输

详细函数资料参考msdn // TransPic_Server.cpp : 定义控制台应用程序的入口点。 /* Server.cpp */ // #include "stdafx.h" #include #include #include #define BUF 256 #pragma comment(lib, "Ws2_32.lib") int _tmain(int argc,

依然那霖哥 3145

使用winsock传输并显示图片

winsock传输图片文件,适合初学网络编程的人参考借鉴,功能不是很强大,有待扩展。

使用winsock传输并显示图片的例

vc++开发winsock传输并显示图片,客户端获取并发送图片,服务器端接收并显示图片

windows c语言传输文件,windows平台c语言使用socket通信传送图片

传图片其实就是传二进制文件。定义一个数据包,每次收发数据包,即可。服务器端:#include #include #include #define SERVER_PORT 9210 //侦听端口#pragma comment(lib,"ws2_32.lib")struct Data //数据包{int number;int length;char receivemessage[2000]; //内容...

weixin_42542420的博客 517

从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进

本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。

weixin_28273593的博客 452

C++ Socket网络编程实战:JSON封装实现可靠图片传输协议

在网络编程中,TCP Socket作为基础通信机制,常用于传输二进制数据,但直接传输原始字节流存在消息边界模糊、元数据缺失等问题。为解决这一痛点,可以引入JSON作为应用层协议封装,通过将二进制数据与结构化元数据结合,实现自描述的数据包。其技术价值在于构建轻量级、可扩展的传输协议,能有效处理文件传输、客户端-服务器混合通信等场景。例如,在C++网络编程中,利用nlohmann/json库封装图片数据和元信息,配合定长头部协议,可确保可靠传输。这种JSON封装方案特别适用于需要附带复杂业务信息的图片传输场景,

germmy-神一样的开发 312

nsight-system教程

参考nsight-compute使用教程-优快云博客。

youzjuer的博客 1894

基于STM32和K210的自动驾驶小车设计

自动驾驶技术正在迅速发展,成为了汽车行业和智能交通领域的热点之一。随着科技的发展,STM32和K210这两款芯片为自动驾驶小车提供了优秀的硬件支持。本文我们将学习如何使用STM32和K210打造一个简单的自动驾驶小车。提示:以下是本篇文章正文内容,下面案例可供参考通过这篇文章,掌握了如何使用STM32和K210构建一个简单的自动驾驶小车。通过了解基本的电路设计,并编写了STM32和K210的代码。通过这个例子,可以更好地理解如何在嵌入式系统中使用STM32和K210,以及如何实现自动驾驶小车的简单功能。

Kyle_Chan_zMH的博客 2220

mfc socket发送图片_大话Socket

大话Socket更新:2020-05-09-23:41:35。注意:查看正文前,请先查看文末的评论,以确认是否有勘误。要了解Socket首先要了解 TCP,他们两个的关系可以说是:Socket 是抽象出来的使用 TCP/UDP 的概念模型,屏蔽掉了晦涩的底层协议的实现,是一个接口。最近看到了一张如此详细的 TCP 三次握手和四次挥手,打印一张放工位!摘自《图解网络硬件》249页 图5-1...

weixin_39676242的博客 442

【WorkBuddy专栏】完结篇暨付费专栏总目录(内容继续更新中)

【WorkBuddy专栏】完结篇和付费内容总目录

AI人人懂 913

摄像头监控视频传输实现(C++)

配置 这里采用的是 VS2017 之前写过一个Python的版本 https://blog.youkuaiyun.com/a19990412/article/details/80930725 首先得先下载一下opencv,然后简单配置一下。别担心,这个步骤操作就点击下三下鼠标就好了(但是如果是想换一个安装路径什么的,可能会多一点点的 不过基本上非常简单。) 根据https://blog.youkuaiyun.com/a...

gc.collect() 2万+

智慧园区——解读零碳智慧园区全域双碳管理建设方案【附全文阅读】

《零碳智慧园区全域双碳管理建设方案》为园区开发运营企业、政府部门及绿色能源服务商等提供系统性指导。方案基于"背景-理念-路径"框架,首先分析全球双碳趋势及我国园区高碳排放现状,明确零碳园区价值;其次提出"数字+绿色"双动力理念,构建数字底座与绿色能源体系;最后详细规划实施路径,包括碳排查、绿能规划、能效优化、碳交易等全流程管理,结合数字孪生技术实现可视化管控,助力园区实现碳中和目标。

cdfunlove的博客 206

深度强化学习调参技巧:以DQN、DDPG、TD3、PPO、SAC等算法为例

深度强化学习调参技巧:以D3QN、DDPG、TD3、PPO、SAC算法为例

丨汀、的博客 3444

在Visual Basic中使用WinSock控件

  WinSock控件能够通过UDP协议(用户数据报协议)或TCP协议(数据传输协议)连接到远程的机器并进行数据交换。这两种协议都能用来创建客户端和服务端应用程序。就像定时器控件一样,WinSock控件运行时没有一个可视的界面。  可能的用途  ·创建客户端应用程序,它能在信息到达中央服务器之前把用户的信息收集起来。  ·创建服务端应用程序,它能作为来自多个用户的数据一个集中处理点。  ·创建“聊

唸 尐 憂 的 天 空 706

【五分钟论文笔记】Vision Banana:图像生成器成为通用视觉学习器

图像生成训练可以像 LLM 预训练一样,让模型学习强大且通用的视觉表示感知即生成——将视觉任务输出参数化为 RGB 图像,是一种优雅且强大的统一框架视觉理解能力可以在不牺牲生成能力的情况下获得——两者可以共存于同一个模型。

专注:太空算力、AI infra、异构调度、大模型成本工程 232

基于opencv的视频传输

客户端: WinsockMatTransmissionClient.h文件: #ifndef __WINSOCKMATTRANSMISSIONCLIENT_H__ #define __WINSOCKMATTRANSMISSIONCLIENT_H__ #include "opencv2/opencv.hpp" #include "opencv2/highgui/highgui.hpp" #i

梦沁清风 1670

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Windows--TCPSocket打开图片传输图片

服务器端#include <stdio.h> #include <winsock2.h> #include <winsock2.h> #define SERVER_PORT 9210 //侦听端口 #pragma comment(lib,"ws2_32.lib") struct Data //数据包 { int length; char receivemessa

似水流年 1715

深度学习工具包 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")

上一篇: ffmpeg解码中碰到的问题
下一篇: 变量、函数声明与定义
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值