跨平台Socket封装 odsocket

[寒江孤叶丶的Cocos2d-x之旅_34]ODSocket(BSDSocket)如何在切换网络状态时自动重连 用于监听IOS网络状态切换(WIFI和移动蜂窝网络)有什么作用在Socket网络游戏中,经常会用到BSDSocket。用户切换网络状态时,Socket链接会断开,如果通过Receive的返回值来判断网络是否断开,需要等待很长时间(4-20s) 这个时候就需要监听IOS网络状态切换,当发现用户切换网络状态时,直接重连Socket。 如何在Cocos中使用首先将NetworkInfo.h 和 Net 阅读详情

 

odsocket.h:

/*  
* define file about portable socket class.   
* description:this sock is suit both windows and linux  
* design:odison  
* e-mail:odison@126.com>  
*   
*/   

#ifndef _ODSOCKET_H_ 
#define _ODSOCKET_H_   

#ifdef WIN32  

#include <winsock.h>  
typedef int    socklen_t; 
#else  
#include <sys/socket.h>  
#include <netinet/in.h>  
#include <netdb.h>  
#include <fcntl.h>  
#include <unistd.h>  
#include <sys/stat.h>  
#include <sys/types.h>  
#include <arpa/inet.h>  

typedef int    SOCKET;    

//#pragma region define win32 const variable in linux  
#define INVALID_SOCKET -1  
#define SOCKET_ERROR -1  

//#pragma endregion 
#endif     

class ODSocket
{   
 public:  
  ODSocket(SOCKET sock = INVALID_SOCKET);  
  ~ODSocket();    
  
  // Create socket object for snd/recv data  
  bool Create(int af, int type, int protocol = 0);    
  
  // Connect socket  
  bool Connect(const char* ip, unsigned short port);  
  
  #region server  
  // Bind socket  
  bool Bind(unsigned short port);    
  
  // Listen socket  
  bool Listen(int backlog = 5);     
  
  // Accept socket  
  bool Accept(ODSocket& s, char* fromip = NULL);  
  
  #endregion     
  
  // Send socket  
  int Send(const char* buf, int len, int flags = 0);    
  
  // Recv socket  
  int Recv(char* buf, int len, int flags = 0);     
  
  // Close socket  
  int Close();    
  
  // Get errno  
  int GetError();     
  //#pragma region just for win32  
  // Init winsock DLL   
  static int Init();   
  // Clean winsock DLL  
  static int Clean();  
  //#pragma endregion    
  // Domain parse  
  static bool DnsParse(const char* domain, char* ip);    
  
  ODSocket& operator = (SOCKET s);    
  
  operator SOCKET ();   
  
 protected:  
  SOCKET m_sock;   
};   

#endif

===========================================================================

odsocket.cpp

 

/*  
* Source file about portable socket class.   
*  
* design:odison  
* e-mail:odison@126.com>  
*   
*/       

#include  
#include  
#include "odsocket.h"   

#ifdef WIN32  
#pragma comment(lib, "wsock32") 
#endif     

ODSocket::ODSocket(SOCKET sock) 
{  
 m_sock = sock; 
}   

ODSocket::~ODSocket() 
{ 
}   

int ODSocket::Init() 
{ 
#ifdef WIN32  
/*   http://msdn.microsoft.com/zh-cn/vstudio/ms741563(en-us,VS.85).aspx    
 typedef struct WSAData
 {    
  WORD wVersion;       
  //winsock version   
  WORD wHighVersion;      
  //The highest version of the Windows Sockets specification that the Ws2_32.dll can support   
  char szDescription[WSADESCRIPTION_LEN+1];    
  char szSystemStatus[WSASYSSTATUS_LEN+1];    
  unsigned short iMaxSockets;    
  unsigned short iMaxUdpDg;    
  char FAR * lpVendorInfo;   
 }WSADATA, *LPWSADATA;   
*/ 
 WSADATA wsaData;  
 //#define MAKEWORD(a,b) ((WORD) (((BYTE) (a)) | ((WORD) ((BYTE) (b))) << 8))   
 WORD version = MAKEWORD(2, 0);  
 int ret = WSAStartup(version, &wsaData);
 
 //win sock start up  
 if ( ret )
 {   
  cerr << "Initilize winsock error !" << endl;    return -1;  
 } 
#endif     
 return 0; 
} 
//this is just for windows 
int ODSocket::Clean() 
{ 
#ifdef WIN32   
 return (WSACleanup()); 
#endif   
 return 0; 
}   

ODSocket& ODSocket::operator = (SOCKET s) 
{  
 m_sock = s;  
 return (*this); 
}   

ODSocket::operator SOCKET () 
{  
 return m_sock; 
} 

//create a socket object win/lin is the same 
// af: 
bool ODSocket::Create(int af, int type, int protocol) 
{  
 m_sock = socket(af, type, protocol);  
 if ( m_sock == INVALID_SOCKET )
 {   
  return false;  
 }  
 
 return true; 
}   

bool ODSocket::Connect(const char* ip, unsigned short port) 
{  
 struct sockaddr_in svraddr;  
 svraddr.sin_family = AF_INET;  
 svraddr.sin_addr.s_addr = inet_addr(ip);  
 svraddr.sin_port = htons(port);  
 
 int ret = connect(m_sock, (struct sockaddr*)&svraddr, sizeof(svraddr));  
 
 if ( ret == SOCKET_ERROR )
 {   
  return false;  
 }  
 
 return true; 
}   

bool ODSocket::Bind(unsigned short port) 
{  
 struct sockaddr_in svraddr;  
 svraddr.sin_family = AF_INET;  
 svraddr.sin_addr.s_addr = INADDR_ANY;  
 svraddr.sin_port = htons(port);    
 
 int opt =  1;  
 
 if ( setsockopt(m_sock, SOL_SOCKET, SO_REUSEADDR, (char*)&opt, sizeof(opt)) < 0 )    
  return false;    
  
 int ret = bind(m_sock, (struct sockaddr*)&svraddr, sizeof(svraddr));  
 if ( ret == SOCKET_ERROR )
 {   
  return false;  
 }  
 
 return true;
} 

//for server 
bool ODSocket::Listen(int backlog) 
{  
 int ret = listen(m_sock, backlog);  
 if ( ret == SOCKET_ERROR )
 {   
  return false;  
 }  
 return true; 
}   

bool ODSocket::Accept(ODSocket& s, char* fromip) 
{  
 struct sockaddr_in cliaddr;  
 socklen_t addrlen = sizeof(cliaddr);  
 SOCKET sock = accept(m_sock, (struct sockaddr*)&cliaddr, &addrlen);  
 
 if ( sock == SOCKET_ERROR )
 {   
  return false;  
 }    
 
 s = sock;  
 if ( fromip != NULL )   
  sprintf(fromip, "%s", inet_ntoa(cliaddr.sin_addr));    
 
 return true; 
}   

int ODSocket::Send(const char* buf, int len, int flags) 
{  
 int bytes;  
 int count = 0;    
 
 while ( count < len )
 {     
  bytes = send(m_sock, buf + count, len - count, flags);   
  
  if ( bytes == -1 || bytes == 0 )    
   return -1;   
   
  count += bytes;  
 }     
 
 return count; 
}   

int ODSocket::Recv(char* buf, int len, int flags) 
{  
 return (recv(m_sock, buf, len, flags)); 
}   

int ODSocket::Close() 
{ 
#ifdef WIN32  
 return (closesocket(m_sock)); 
#else  
 return (close(m_sock)); 
#endif 
}   

int ODSocket::GetError() 
{ 
#ifdef WIN32  
 return (WSAGetLastError()); 
#else  
 return (errno); 
#endif 
}   

bool ODSocket::DnsParse(const char* domain, char* ip) 
{  
 struct hostent* p;  
 if ( (p = gethostbyname(domain)) == NULL )   
  return false;      
  
 sprintf(ip,    
   "%u.%u.%u.%u",   
   (unsigned char)p->h_addr_list[0][0],    
   (unsigned char)p->h_addr_list[0][1],    
   (unsigned char)p->h_addr_list[0][2],    
   (unsigned char)p->h_addr_list[0][3]);     
 
 return true; 
}

Cocos2d-x中的Socket连接技术指南 Cocos2d-x是一个开源的游戏开发框架,其设计旨在为游戏开发者提供一个快速、高效且易于使用的编程环境。该框架支持多种操作系统,包括iOS、Android、Windows以及Linux等,使得开发者能够创建跨平台的游戏应用。Cocos2d-x基于C++编写,同时提供了对JavaScript和Lua语言的支持,使得更多非专业C++的开发者也能够轻松上手。其采用了场景(Scene)、层(Layer)、精灵(Sprite)和时间调度器(Director)等直观的概念来组织游戏架构。 阅读详情

相关推荐

C++ socket 基本功能跨平台封装(好用)

真正可以使用的平台无关性的 C++ socket wrapper,没有做任何多余的事情,仅仅对 socket 的基本功能进行了平台无关性的封装,简洁原生。封装了:setoption, connect, close, send, recv, sendto, recvfrom, accept,bind 等基本方法。C++11 标准,macos/linux/windows 均进行了完全测试。

c++ 跨平台封装socket

odsocket.h: /*    * define file about portable socket class.     * description:this sock is suit both windows and linux    *     */    #ifndef _ODSOCKET_H_   #define _ODSOCKET_H_    #ifd

weihongchang的专栏 2209

ODSocket.zip

原生socket封装的第三方库,比较好用,非http请求。引入工程后可直接调用。亲测有效。需要的可直接拿去使用

odsocket 简单使用

#include "ODSocket.h" #include #include #include   ODSocket _socket; void revc(){ while(true){   char data[126] =""; //字节大小很重要,需要全部读取到才返回结果 int len = _socket.Recv(data,126,0);   if(len b

qq275394303的专栏 1964

ODSocket_odsocket_cocos2dx_

封装好的socket工具,底层代码直接封装,非基于http的网络请求

SAP Business One自定义表与字段实战:从零构建企业专属数据模型

本文详细介绍了如何在SAP Business One中创建自定义表与字段,从零构建企业专属数据模型。通过实战案例和避坑指南,帮助用户掌握业务适配、流程优化和权限隔离等关键技巧,提升系统灵活性和数据管理效率。特别适合需要扩展标准功能的SAP Business One用户。

weixin_28730927的博客 362

Cocos2d-x网络篇03:Socket连接(1)

【前言】 在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信。而HTTP一般用于网页或者网页游戏。 使用第三方Socket通信库:ODSocket。 【参考】 Socket详解 Socket编程原理 【源码下载】 ODSocket库源码  本节Demo源码  【Socket简介】 1、套接字(sock

Darin-LoveStory 815

别再让PyCharm吃光你的C盘!保姆级教程:安全迁移config、plugins和remote sources到D盘

本文提供了一份详细的PyCharm配置与缓存文件迁移指南,帮助开发者将config、plugins和remote sources等占用大量C盘空间的文件安全转移到D盘。通过修改data.properties文件和正确迁移顺序,确保PyCharm功能不受影响,同时释放宝贵的系统盘空间。

weixin_28836989的博客 423

cocos2dx3.2 lua 独立自定义socket类绑定问题

故障报错如下: txxxxmac:tolua txxxx$ ./genbindings_mysocket.py  PYTHON_BIN not defined, use current python. generating userconf.ini... Generating bindings for mysocket... Using userconfig    [('andro

aizhiqiang2的博客 1447

Win10环境下VS2019离线部署OnnxRuntime的完整指南

本文提供了在Windows 10系统下,为Visual Studio 2019进行OnnxRuntime离线部署的完整教程。针对网络受限环境,详细讲解了如何获取正确的离线安装包、配置本地NuGet源,并逐步指导项目配置与测试,确保AI模型在C++环境中顺利运行。

weixin_29205061的博客 400

在abaqus中利用point-based 来快捷定义螺栓连接

abaqus中可以通过point-based方式定义连接点的位置,并对连接方式进行定义,可以进行螺栓连接的模拟。 可以通过逐点输入坐标或导入外部的坐标位置 也可以通过阵列的方式定义点 定义完点后就利用create fasteners,选择point-based,选取刚才创建好的点阵列,然后定义连接的属性,如下图 定义connector section时,类型选择translator,相当于只有1方向可以动,定义弹性模量以及破坏准则。 案例操作 假如有两个板,通过...

fiber_tape的博客 7342

跨平台Socket封装

odsocket.h: /*  * define file about portable socketclass.  * description:this sock is suit bothwindows and linux  * design:odison  * e

jmshl的专栏 5845

Hierarchical Flow Partition(Top-down&&Bottom-up)

hierarchy flow是将设计切分成多个block,分别处理单个block,然后完成后,将它们进行拼接以完成最终的chip。一般划分为三个阶段:chip planning;physical budget就是pin assignmenthierarchy flow实现的方法有两种,一种是top-down,另一种是bottom-up,无论是哪种,都是都要通过flatten的方法分别全局范围进行优化实现。

qq_39493558的博客 3072

跨平台socket封装

socket封装 ========== SocketWrapper.h ================ C语言的socket跨平台包装 https://github.com/maxiaojun/SocketWrapper/blob/master/SocketWrapper.h odsocket.[h,cpp] ================ C++封装 http://...

chuqingq的专栏 275

工业缺陷检测的新范式:2025-2026年零样本检测技术全景扫描

摘要: 工业视觉领域面临缺陷样本稀缺、标注成本高等痛点,零样本缺陷检测(Zero-Shot Defect Detection)成为研究热点。2025-2026年的技术进展主要分为三类:1)视觉-语言模型(VLM)路线,如CLIP适配器跨域对齐热成像数据;2)数字孪生路线,通过CAD模型生成理想状态对比检测缺陷;3)基于CLIP的提示学习,如Crane模型通过上下文提示提升泛化能力。尽管实验室效果显著(如IoU达70%),但在真实工业场景(如MIRAD数据集)中性能平均下降29.78%,凸显跨域泛化仍是挑战。

blanokvaffy的博客 1144

财务惊呼“不可能”!Python 自动识别 PDF 发票,数据秒级录入系统

电子发票(原生 PDF):这种最爽,文字是可以选中的。我们用 PyPDF2 直接提取文本,速度快,准确率 100%。 纸质扫描/拍照发票:这种是图片。必须上 OCR(光学字符识别)。我们要用百度开源的 PaddleOCR,这是目前中文识别效果最好的开源库之一,吊打早已过气的 Tesseract。

BUG猿的博客 1024

cocos2dx上的通用socket通信(一)

原文链接:http://blog.youkuaiyun.com/sozell/article/details/8915110 前言:之前一直在捣鼓socket通信模块,当然,到现在为止我还没有彻底弄好,不过数据至少是有去有回了,只是在Android上跑容易崩掉罢了,汗。在网上找了好多关于cocos2dx上跨平台的socket通信库的文章,都只有皮毛,不见有真正好用的,好吧,我确实比较懒,当然,官方没

私はうどん 1794

web逆向伪瑞数案例:宝武资源有限公司(面向对象补环境)

声明:该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关前言:之所以称伪瑞数案例,是因为该网站,无论是补环境的方法、还是环境都和瑞数差不多,因为第一次遇到这种网站,不确定是不是瑞数的一种,所以这里称伪瑞数,有知道的道友,可以评论区评论下,共同进步。,这里就不做多介绍了1.瑞数中的是t​s,而该网站是_ss。2.外链js代码不能格式化,否则补环境时会遇到一个超过数组长度的报错。3.call执行后的虚拟文件中有超多的debugger。

老衲爱洗头的博客 2534

Cocos网络篇[3.2](3) ——Socket连接(1)

【唠叨】在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信。而HTTP一般用于网页或者网页游戏。使用第三方Socket通信库:ODSocket。【参考】http://blog.youkuaiyun.com/sight_/article/details/8138802(Socket详解)http://blog.csdn...

weixin_33936401的博客 485

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

cocos2d-x ODSocket学习笔记

在build过程中出现如下报错: Undefined symbols for architecture x86_64:   "ODSocket::ODSocket(int)", referenced from:       ODSocketTest::ODSocketTest() in ODSocketTest.o   "ODSocket::~ODSocket()",

windvally的专栏 1643

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

cocos2d-x客户端与Java服务器的通信(一)

(⊙o⊙)…貌似自己已经有一段时间没有写博客了,其实主要原因还是觉得自己水平有限,加上上班实在是太忙,实在抽不出时间来写博客。大家都知道,在网络游戏开发中, 网络通信一直是个比较大的难题,一个服务器可能要同时处理几千上万甚至上百万的用户数据,当然,仅仅是通信那是比较简单,但要设计到一个很好的通信架构确实还是比较难的,当然这些设计结构不是这篇博文的内容,哈哈,只是实现cocos2d-x客户端和Ja

移动开发爱好者 -- ^_^ 6325

VC中sqlite的使用

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

cocos2dx长连接BSDSocke网络通信

一、Socket网络通信一般流程 服务器Socket的一般流程: (1)创建服务器Socket(Create); (2)绑定端口(Bind); (3)开启监听(Listener); (4)接收客户端请求(Accept)。 (5)给客户端发送和接收数据(Send,Recv) 客户端的一般流程: (1)创建客户端Socket(Create); (2)连接服务器(Connect);

码之有道 2916

Cocos网络篇 ——Socket连接

【唠叨】 在客户端游戏开发中,使用HTTP进行网络通信的比较少,一般使用的都是Socket进行通信。而HTTP一般用于网页或者网页游戏。 使用第三方Socket通信库:ODSocket。 【参考】 http://blog.youkuaiyun.com/sight_/article/details/8138802(Socket详解) http://blog.cs...

Willow_Chen的博客 3304
上一篇: win32/linux下网络编程十点需要注意的地方
下一篇: cocos2dx eclipse 设置C++ include 包含目录
sdsabc2000
博客等级 码龄19年 32粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值