C/C++下socket编程?

采用TCP包时,如果用结构体装数据,结构体中不能有指针,这怎么解释?... 采用TCP包时,如果用结构体装数据,结构体中不能有指针,这怎么解释? 展开
 我来答
citizen1900
2010-07-26 · TA获得超过206个赞
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
结构体里面是可以有指针的,只是这个指针传输到对方之后没有意义。
比如结构体里面有个指针,值为0x84fe0000,这个值在本机A上是指向一个字符串“abcde”的话,使用TCP传到对方后为0x84fe0000,所指向的值在对方的进程空间内可能是一个非法无效的地址,或者随机的数据,而不是你所期望的字符串“abcde”。
+--------+
+abcde + (0x84fe0000)
+--------+ |
~ ~ |
+--------+ |
+ 指针p +++++++++
+--------+
而到对方之后
+--------+
+??? + (0x84fe0000)
+--------+ |
~ ~ |
+--------+ |
+ 指针p +++++++++
+--------+
他就不知道这个指针指的是什么了。
所以说不是不能传指针,而是可以传,但指针传过去后的值,在对方的进程空间里没有意义。
匿名用户
2010-07-26
展开全部
有指针的话,通讯也只是将那部分数据的指针(地址)4个字节发送出去,此指针分配的内存里放的数据是无法被结构体的buffer发送出去的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uj518390
2010-07-26 · TA获得超过958个赞
知道小有建树答主
回答量:2099
采纳率:0%
帮助的人:1369万
展开全部
...但linux本身提供了socket的系统调用,你如果使用的是linux系统调用,那么你的程序只能在linux下运行,这点... 从你提出的问题,我觉的你可能对编程不是很了解。 socket是用来实现进程通信(主要是网络通信)的目的...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b438542
2010-07-26 · TA获得超过237个赞
知道小有建树答主
回答量:929
采纳率:0%
帮助的人:383万
展开全部
指针的实质是地址,你把你机器的地址发给对方,对方怎么知道你的内容呢
网络传输的一般都是数据,不是内存地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式