一个简易的用Socket API建立TCP通信程序Demo

W5500开发笔记 | 02 - 使用W5500 Socket API 建立TCP服务端、TCP客户端 系列文章 W5500开发笔记 | 01- W5500 Socket API的说明 一、实现思路 W5500内部是硬件TCP/IP协议栈,对外(MCU)只是提供了操作socket的能力,内部支持8个独立的socket,每一个socket通过Socket n寄存器区控制(0≤n≤7)。 所以在编写基于Socket的网络应用程序时,可以按照查询Socket状态寄存器实现一个状态机的思路来实现。 W5500驱动库中提供了Socket状态寄存器的读取宏: /** * @ingroup Socket_regist 阅读详情

用Socket API 建立简易TCP服务端、客户端

服务器程序工作
1.初始化 Winsock库
2.创建监听套接字(socket()函数)
3.填写要绑定的本地地址结构(bind()函数)
4.给监听套接字绑定本地IP地址
5.开始监听(listen()函数)
6.循环执行 调用accept()函数接收客户端连接请求,如果accept()函数返回成功.则调用send()函数向客户端发送数据或者调用recv()函数从客户端接收数据

客户端程序工作
1.初始化 Winsock库
2.创建通信套接字(socket()函数)
3.填写要连接的服务器的地址结构
4.与服务器建立连接(connect()函数)
5.调用recv()函数接收服务器数据,send()函数发送数据给服务器

服务器程序代码:

// Server.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <WinSock2.h>
using namespace std;

#pragma comment(lib, "WS2_32.lib")
//表示链接WS2_32.lib这个库。
#define  PORT 1024

int main()
{
	SOCKET sock_server, newsock;
	struct sockaddr_in server_addr, client_addr; 
	char msg[] = { "Hello clinet" };
	// 初始化 winsock2.dll[12/27/2017 MagicScaring]
	WSADATA wsaData;
	WORD wVersionRequested = MAKEWORD(2, 2);		//生成版本号
	if (WSAStartup(wVersionRequested, &wsaData) != 0)
	{
		cout << "加载 winsock.dll失败" << endl;
		return 0;
	}
	// 创建套接字 [12/27/2017 MagicScaring]
	if ((sock_server = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
	{
		cout << "创建套接字失败! 错误代码:" << WSAGetLastError() << endl;
		WSACleanup();					//注销WinSock动态链接库
		return 0;
	}
	// 填写需要绑定的本地地址 [12/27/2017 MagicScaring]
	int addr_len = sizeof(struct sockaddr_in);
	memset((void*)&server_addr, 0, sizeof(server_addr));
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(PORT);
	server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

	if (bind(sock_server, (struct sockaddr*)&server_addr, addr_len) != 0)
	{
		cout << "绑定失败!错误代码:" << WSAGetLastError() << endl;
		closesocket(sock_server);				//关闭已连接套接字
		WSACleanup();							//注销WinSock动态链接库
		return 0;
	}

	// 开始监听 [12/27/2017 MagicScaring]
	if (listen(sock_server, 0) != 0)
	{
		cout << "listen调用失败!错误代码:" << WSAGetLastError() << endl;
		closesocket(sock_server);
		WSACleanup();
		return 0;
	}
	else
	{
		cout << "listening...." << endl;
	}
	// 循环:接收连接请求并收发数据 [12/27/2017 MagicScaring]
	int size;
	while (true)
	{
		if ((newsock = accept(sock_server, (struct sockaddr *)&client_addr, &addr_len)) == INVALID_SOCKET)
		{
			cout << "accept 函数调用失败! 错误代码:" << WSAGetLastError() << endl;
			break;
		}
		else
		{
			cout << "成功接收到一个连接请求!" << endl;
			size = send(newsock, msg, sizeof(msg), 0);
			if (size == SOCKET_ERROR)
			{
				cout << "发送信息失败! 错误代码:" << WSAGetLastError() << endl;
				closesocket(newsock);
				continue;
			}
			else if (size == 0)
			{
				cout << "对方已关闭连接" << endl;
				closesocket(newsock);
				continue;
			}
			else
			{
				cout << "信息发送成功" << endl;
			}
			size = recv(newsock, msg, sizeof(msg), 0);
			if (size == SOCKET_ERROR)
			{
				cout << "接收信息失败! 错误代码:" << WSAGetLastError() << endl;
				closesocket(newsock);
				WSACleanup();
				return 0;
			}
			else if (size == 0)
			{
				cout << "对方已关闭连接" << endl;
				closesocket(newsock);
				WSACleanup();
				return 0;
			}
			else
			{
				cout << "The message from Client:" << msg << endl;

			}
		}
	}

    return 0;
}

客户端程序代码:

// Client.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <WinSock2.h>
using namespace std;

#pragma comment(lib, "WS2_32.lib")
//表示链接WS2_32.lib这个库。
#define  PORT 1024

int main()
{
	SOCKET sock_client;
	struct sockaddr_in server_addr;
	int addr_len = sizeof(struct sockaddr_in);
	char msgbuffer[1000];
	memset(msgbuffer, 0, sizeof(msgbuffer));
	// 初始化 winsock2.dll[12/27/2017 MagicScaring]
	WSADATA wsaData;
	WORD wVersionRequested = MAKEWORD(2, 2);		//生成版本号
	if (WSAStartup(wVersionRequested, &wsaData) != 0)
	{
		cout << "加载 winsock.dll失败" << endl;
		return 0;
	}
	// 创建套接字 [12/27/2017 MagicScaring]
	if ((sock_client = socket(AF_INET, SOCK_STREAM, 0)) == SOCKET_ERROR)
	{
		cout << "创建套接字失败! 错误代码:" << WSAGetLastError() << endl;
		WSACleanup();					//注销WinSock动态链接库
		return 0;
	}
	// 填写服务器地址 [12/27/2017 MagicScaring]
	char IP[20] = { "192.168.5.38" };
	/*char IP[20];
	cout << "输入服务器地址:" << endl;
	cin >> IP;*/
	memset((void*)&server_addr, 0, sizeof(server_addr));
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(PORT);
	server_addr.sin_addr.s_addr = inet_addr(IP);

	// 与服务器建立连接 [12/27/2017 MagicScaring]
	if (connect(sock_client, (struct sockaddr*)&server_addr, addr_len) == SOCKET_ERROR)
	{
		cout << "连接失败! 错误代码:" << WSAGetLastError() << endl;
		closesocket(sock_client);
		WSACleanup();
		return 0;
	}
	while (true)
	{
		int size;
		if ((size = recv(sock_client, msgbuffer, sizeof(msgbuffer), 0)) == SOCKET_ERROR)
		{
			cout << "接收信息失败! 错误代码:" << WSAGetLastError() << endl;
			closesocket(sock_client);
			WSACleanup();
			return 0;
		}
		else if (size == 0)
		{
			cout << "对方已关闭连接" << endl;
			closesocket(sock_client);
			WSACleanup();
			return 0;
		}
		else
		{
			cout << "The message from Server:" << msgbuffer << endl;
		}
		char send_msg[1000] = { "Hello server" };
		if((size = send(sock_client, send_msg, sizeof(send_msg),0)) == SOCKET_ERROR)
		{
			cout << "发送信息失败! 错误代码:" << WSAGetLastError() << endl;
		}
		else if (size == 0)
		{
			cout << "对方已关闭连接" << endl;
		}
		else
		{
			cout << "信息发送成功" << endl;
		}
		
	}
	closesocket(sock_client);
	WSACleanup();

    return 0;
}

服务器程序运行结果:
服务器

客户端程序运行结果:
客户端

Android平台TCP长连接通信实战Demo 对于真正需要实现端到端直连的应用(如视频通话、文件共享),可采用WebRTC生态中的ICE框架,结合STUN与TURN服务器协助完成NAT穿透。:帮助设备发现其公网映射地址和端口。:当中继不可避免时,提供数据转发服务。:综合多种候选路径,选择最优连接方式。虽然Android原生不直接支持WebRTC,但可通过libwebrtc库集成相关能力。适用于音视频聊天、远程桌面等高性能需求场景。 阅读详情

相关推荐

VC环境下SOCKET异步通信编程实战详解

特性描述本地地址未绑定,暂无IP:Port组合远程地址未指定状态CLOSED(关闭态)可操作性支持connect()或bind()等进一步操作值得注意的是,在调用connect()之前,该套接字不会占用任何公网端口。一旦发起连接请求,系统将自动为其分配一个临时端口(Ephemeral Port),范围一般为(遵循IANA建议)。此外,新创建的套接字默认处于阻塞模式。这意味着如果后续调用connect()

weixin_34718952的博客 942

Linux下socketpair系统API调用使用说明

socketpair系统API调用使用说明

hsy12342611的专栏 1310

C# 简单的tcp服务器demo

C# 简单的tcp服务器demo

TCP的socket通讯

主要介绍TCP的socket通讯,同时提供了tcp客户端与并发服务器端的几个案例

我要出家当道士 1063

c#基于TCP协议的Socket通信完整Demo(已实现多人聊天室)

c#基于TCP协议的Socket通信完整实例(实现多人聊天室),通过C#winform实现多人聊天,同时服务器可以向指定客户端发送消息

C#开发TCP通信demo

C#开发TCP通信demo,开发客户端与服务端调用源码,demo,可参考应用开发

Java【网络编程2】使用 TCP 的 Socket API 实现客户端服务器通信(保姆级教学, 附代码)

详细介绍Socket套接字的使用方式, Socket类, ServerSocket类, 手把手教会你基于 UDP 协议进行最简单的客户端服务器通信!

yzhcjl_的博客 4012

VC Spyglass调试秘籍:从Lint报错到代码修复的完整工作流

本文详细介绍了VC Spyglass调试的完整工作流,重点解析了如何高效定位和修复Lint检查中常见的XMRE-L跨模块引用错误。通过对比GUI与命令行(vc_static_shell)双模式调试技巧,并结合TCL脚本实现批量处理与规则豁免,帮助数字设计工程师系统化地提升代码调试效率与质量。

weixin_29246195的博客 575

TCP的socket的API

TCP处理连接中接收请求的当遇到空白符的时候才会读取完毕,使用这个scanner直接收到的就是字符串,如果使用inputstream的read()方法还需要将字节转化为字符串,客户端在发送请求的时候,必须在每个请求的末尾加上空白符,这个要求是程序员之间通信细节的约定,TCP是按照字节的方式来进行传输的,实际上我们希望若干个字节能构成一个应用层的数据报,区分一个应用层的数据报就是通过空白符来进行分割。等待客户端发送请求,服务器与客户端建立连接之后,返回一个socket对象,如果没有客户端发送请求就会阻塞。

2301_79288225的博客 1333

嵌入式NTC温度解算库:Steinhart-Hart定点实现与硬件解耦设计

NTC热敏电阻是嵌入式系统中最常用的模拟温度传感器,其阻值-温度关系高度非线性,需依赖Steinhart-Hart方程实现高精度转换。该方程通过三参数对数多项式建模,理论上可将误差控制在±0.1°C以内,但直接移植到MCU面临浮点开销大、定点溢出、系数精度损失等工程瓶颈。为此,归一化处理(ln(R/R₂₅))、Q24.8定点运算、查表+插值对数计算等优化技术成为资源受限场景下的关键技术路径。其核心价值在于将ADC采样与温度解算彻底解耦,适配各类HAL/裸机/RTOS环境,广泛应用于电池管理、工业PLC、Io

weixin_35756624的博客 647

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 265

C++网络(三)用Socket API建立简易TCP服务端、客户端

用Socket API建立简易TCP服务端1 建立一个socket 2 绑定接受客户端连接的端口 bind 3 监听网络端口 listen 4 等待接受客户端连接 accept 5 向客户端发送一条数据send 6 关闭socket closesocket用Socket API建立简易TCP客户端1 建立一个socket 2 连接服务器 connect 3 接收

图形图像开发之路 1089

【gridsample】地平线征程6芯片中gridsample算子的优化与部署实践

本文详细介绍了地平线征程6芯片中gridsample算子的优化与部署实践,重点探讨了PTQ和QAT量化方案在BEV感知任务中的应用。通过双线性插值优化、内存布局调整和混合精度配置等关键技术,显著提升了算子在自动驾驶场景下的性能和精度,为开发者提供了实用的部署指南和调优建议。

zero1的博客 1019

Socket 系统调用深入研究(TCP协议的整个通信过程)

TCP socket API socket 系统调用 TCP 三次握手 TCP 四次挥手 TCP 面试问题

C++ 开发者的博客 3386

使用Simulink对固定翼无人机的自动起飞与降落进行仿真

本文介绍了基于Simulink的固定翼无人机自动起飞与降落控制系统设计方法。系统包含飞行器动力学模型、控制系统、环境模拟等模块,通过简化动力学方程描述无人机运动特性。详细说明了从创建模型、设置动力学方程、设计PID控制器(包括自动起飞和降落控制策略)到添加环境模拟的完整仿真流程。重点阐述了升降舵和发动机推力的控制律设计,以及性能评估要点。本方法可有效验证控制系统设计,优化飞行稳定性和安全性参数,为无人机自主控制提供仿真支持。

amy_mhd的博客 223

小程序真机调试蓝牙可以使用,线上发布版本蓝牙无法使用

小程序提示请打开蓝牙,微信小程序蓝牙无法连接,小程序真机调试蓝牙可以使用,线上版本蓝牙无法使用,测试环境蓝牙正常,开发环境蓝牙正常,发布后蓝牙无法使用

renkai721的专栏 826

Linux之socket详解

目录 一、什么是Socket 1.1 Socket建立 1.2 Socket配置(绑定) 1.3 连接建立 1.4 数据传输 1.5 结束传输 二、编程DEMO 2.1 TCP编程 2.2 UDP编程 一、什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口 Socket接口设计者最先是将接口放在Unix操.

月月鸟呀的博客 5210

从地方政府网站抓取政务公开数据:Python爬虫技术详解

在本文中,我们通过具体实例介绍了如何使用Python编写爬虫,从地方政府门户网站抓取政务公开数据。我们使用了requestsSelenium等最新技术,结合SQLite数据库存储抓取的数据,最后使用matplotlib进行数据可视化分析。通过本项目,您可以掌握如何抓取政府网站的公开数据,并将其进行清洗、存储和分析。这些技术对于进行政府政策分析、公共服务分析等方面具有重要的实际意义。希望通过本文的介绍,您能够更好地理解政务数据抓取的流程和方法,并能在实际工作中运用这些技术进行数据采集和分析。

2201_76125261的博客 1701

Linux上socket编程理解,附实例demo(TCP)

Linux上socket编程理解,附实例demo(TCP)1、什么是socket2、网络编程要解决的问题3、socket操作(函数使用)4、参考博客5.demo实例 环境:Linux x86_64 1、什么是socket 首先socket是在网络编程中的概念。 说到网络,就无法避开OSI模型,或者TCP/IP四层(或三层或五层)模型。 具体的几个层这里就不说了,总之,各个层都定义了一定的数据格式。...

CharlesJhonson的博客 4305

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

YOLO11改进|YOLO11中引入注意力和卷积融合模块CAFMAttention

A1983Z的博客 1219

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

socket网络编程(TCP UDP)demo

一、socket 在Linux中的网络编程是通过socket接口来进行的。人们常说的socket接口是一种特殊的I/O,它也是一种文件描述符。每一个socket都用一个半相关描述{协议,本地地址、本地端口}来表示;一个完整的套接字则用一个相关描述{协议,本地地址、本地端口、远程地址、远程端口}。socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过socket来实现的。 二、socket常用API 1.创建套接字 int socket(i

will_wu99的博客 817

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

Linux 上手 UDP Socket 程序编写(含完整具体demo)

本文详细介绍了Linux下UDP Socket编程的核心技术点与实现步骤。主要内容包括:UDP通信模型的无连接、不可靠但低时延特性;服务端开发流程(创建socket、绑定地址、循环收发数据);客户端实现方法(创建socket、组织目标地址、发送接收数据);关键系统调用(socket/bind/sendto/recvfrom)的使用细节;地址结构处理与字节序转换;以及错误处理、业务解耦等实战建议。通过完整的C++代码示例演示了UDP服务端/客户端开发过程,重点讲解了如何利用回调机制实现网络层与业务逻辑的解耦。

TTKunn的博客 1604

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

linux socket ip层配置,Linux下Socket通信(TCP实现)

近期在做的项目中,涉及到了进程间数据传输,系统的原本实现是通过管道,但是原有的实现中两个进程是在同一台机器,而且两个进程的关系为父子关系,而我们要做的是将其中一个进程移植到服务器上,因此两个进程要分开,所以管道必然是不可行的方案,而对于其它的进程通信方式,FIFO,消息队列,信号量和共享内存,显然也是不可行的。因此采取了通过socket的通信方式,即网络套接字,用来做数据的传输。接下来,将对自己对...

weixin_33773670的博客 875

AndroidTcp通信demo:Android平台下的稳定通信解决方案

AndroidTcp通信demo:Android平台下的稳定通信解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在Android应用开发中,网络通信是不可或缺的组成部分。AndroidTcp通信demo 是一个专门为Android平台设计的Tcp通信示例项目,旨在帮助开发者快速理解和实现Tcp通信功能。这个项目提供了客户端和服务端两个部分,支持一对一的通信模式...

gitblog_06735的博客 1013

java整合socket通信全流程

Socket通信是计算机网络中常用的一种通信机制,它是基于TCP/IP协议实现的,提供了两个应用程序之间通过网络进行数据交换的能力

小金的博客 1209

android socket通信框架_通用的高性能 TCP/UDP/HTTP开源网络通信框架——HP-Socket

介绍HP-Socket是国人开发的一套高性能的TCP/UDP/HTTP网络通信框架,包含了服务端、客户端以及Agent组件,可用于各种不同应用场景的通信系统,并且提供了C/C++、C#、Delphi、E、Java、Python等编程语言接口。 HP-Socket 对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧...

weixin_28687251的博客 3864
上一篇: error MSB6006: "CL.exe"已退出,代码为-1073741515
下一篇: 文件传输程序设计
MagicScaring
博客等级 码龄11年 18粉丝 28原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值