c++ socket 结构体
使用socket传输组织好的不同类型数据,有四种不同的方式(我知道的嘿嘿):
a. 结构体
b. Json序列化
c. 类对象
d. protobuf
下面逐一整理一下,方便以后进行项目开发。
1. 使用结构体
假设需要传送的结构体如下:
1 2 3 4 5 6 |
|
可在发送数据的地方对数据进行处理,将其转换成一个字符串进行传送,而在接受方定义相同的结构体对这个字符串进行解析即可。
发送方代码:
1 2 3 4 5 6 7 8 9 10 |
|
或者
1 2 3 4 5 6 |
|
接收方代码:
同样需要定义字符串和相同的结构体对象
1 2 3 4 5 6 7 8 |
|
2. 使用Json序列化
有时间写
3. 使用类对象
有时间写
4. protobuf
设置缓冲区的长度和结构体长度保持一致,否则收的数据可能不对。
SOCKADDR_IN addrSrv;addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(port);SOCKET sockClient = socket(AF_INET, SOCK_STREAM, 0);int nRecvBuf = 1516;//设置为32Kint nSendBuf = 0;//设置为32Ksetsockopt(sockClient, SOL_SOCKET, SO_RCVBUF, (const char*)&nRecvBuf, sizeof(int));setsockopt(sockClient, SOL_SOCKET, SO_SNDBUF, (char *)&nSendBuf, sizeof(int));inet_pton(AF_INET, ip, &addrSrv.sin_addr.s_addr);if (connect(sockClient, (struct sockaddr*)&addrSrv, sizeof(addrSrv)) == -1)return -2;if (SOCKET_ERROR == sockClient) {printf("Socket() error:%d", WSAGetLastError());return -3;}
c++ socket 结构体相关推荐
- linux sock结构体,struct socket结构体详解
在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题. 由这个图可知,内核中的进程可以通过使用struct ...
- 网络协议栈3:sock结构体
sock结构体是我们在网络编程中遇到的第一个庞大的结构体 struct sock { struct options *opt;/*IP选项缓存于此处*/ volatile unsi ...
- socket编程之addrinfo结构体与getaddrinfo函数
1. 概述 IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间.IP ...
- C++ socket传输结构体
我遇到的问题是,接收的数据转成结构体后,结构体读取值不对,只有ret是对的,代码如下: int ret = recv(deviceInfo.sockClient, (char *)(&rece ...
- socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空
socket传输结构体,c++,发送OK,recv返回字节大小正确但接受数据为空 服务端在ubuntu服务器下,客户端在windows下,采用socket进行通信,在客户端接收数据时,出现了诡异的情况 ...
- 三、初识Socket套接字结构体
一.初识Socket套接字结构体 1.通用套接字结构体类型 struct sockaddr{sa_family_t sa_family; //协议簇char sa_data[14]; //协议簇数据} ...
- C# Socket 入门5 UPD 结构体 与 C++ 通信
这篇文章本来是星期五晚写好了, 因6日去旅游了, 没来得急发上来 1. 同样, 我们先看看这一个比简单的 结构体 代码 using System; using System.Collections.G ...
- qt socket 传递结构体 结构体中有list_计算机网络应用--Socket编程实验(二)
本节关于socket部分函数库列表,具体基于socket的实例实现代码见下节.给出基于winSocket的简单websever实例. 2.1 WSAStartup() [函数原型] int WSASt ...
- Linux C Socket编程发送结构体、文件详解及实例
利用Socket发送文件.结构体.数字等,是在Socket编程中经常需要用到的.由于Socket只能发送字符串,所以可以使用发送字符串的方式发送文件.结构体.数字等等. 本文:http://www.c ...
最新文章
- python automl_分享一篇比较全面的AutoML综述
- 2019年6月SAP发布的未来ABAP平台的发展方向
- 深度学习《变分自编码器》
- 吴江智慧城市产业化“航母”起航
- Android调用默认浏览器打开指定url
- 二维数组越界_中国电子学会青少年软件编程等级考试2级(C/C++)专题二:一维数组...
- HTML(超文本标记语言)-----WEB开发基础之二
- Task04 Python操作PDF
- llS 10.0详细错误-404.0 - NotFound
- matlab里qmul,哈工大四系导航原理 大作业 INS部分
- Win10忘记登录密码,系统U盘/光盘轻松重置
- mini2440 sd卡支持
- 编译Android源码(9.0)
- printf(\033[1;33m Hello World. \033[0m \n);有趣的串口之超级终端的玩法
- 帝国cms html5 编辑器,帝国CMS修改默认编辑器为百度编辑器UEditor的方法
- DevOps实践|快速提升团队软件开发成熟度,提升研发效能
- 免费申请.tk国际顶级域名-攻略
- mount -o rw,remount /system /system’ not in /proc/mounts
- Python金融大数据分析-数据获取与简单处理
- Mimikatz学习笔记
热门文章
- 新手建议学php吗,关于PHP新手学习的一些指导和建议,新手来我的
- python import from区别_python import 与 from .... import ...区别-阿里云开发者社区
- 动态追踪技术思想及应用
- 一个通用的任务管理模型-golang
- C Capture Full IE Document
- 宝安区2021年高考成绩查询入口,宝安区2021年初一学位网上预申请系统http:bajjk.sz.edu.cn/visitbagbcyjz...
- [总结篇1]openstack neutron 中是如何做到二层隔离的
- linux内核线程创建销毁机制
- shell脚本中使用seq生成连续整数
- ajax怎么创建json对象,ajax jsonp我写的方法怎么调用不了? 为什么用$.getJSON方法能生成数据?...