Socket如何发送和接收一个struct,求助,急切的求助,希望大家帮忙!!!!!

jhlcss 2003-10-20 02:37:55
谢谢
...全文
90 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
三杯倒 2004-03-04
  • 打赏
  • 举报
回复
// 用 Marshal 傳回類別的 Unmanaged 大小 (以位元組為單位)
int size = Marshal.SizeOf(pAskConnect);
// 使用 GlobalAlloc 配置記憶體區塊
System.IntPtr ptr = Marshal.AllocHGlobal(size);
// 從 Managed 物件封送處理資料到 Unmanaged 記憶體區塊
Marshal.StructureToPtr(pAskConnect, ptr,true);
byte[] ba=new byte[size];
// 從 Managed 陣列將資料複製到 Unmanaged 記憶體指標
Marshal.Copy(ptr, ba, 0, ba.Length );
开心就好 2003-10-20
  • 打赏
  • 举报
回复
在发送方序列化,序列化在内存中就可以了,然后发送到接收方,在接收方反序列化,注意两者所采用的编码必须要统一。
ArLi2003 2003-10-20
  • 打赏
  • 举报
回复
cc 公主的方法不错,帮你FAQ
xixigongzhu 2003-10-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2097/2097864.xml?temp=.162121
lbywyj 2003-10-20
  • 打赏
  • 举报
回复
这样:byte[] byteData = Encoding.GetEncoding("GB2312").GetBytes(sSend);
然后在发送byteData,如果你用tcp写的话,你接受的和你发送的是同样的序列,
即使不是同样的序列,也没关系的,在你的接受端接收到数据的话,你必须要按照发送时候定义的协议来恢复你所接收到的数据阿,
例如:sRecieve是接收到的数据:你可以这样:
string sI= sRecive.Substring(0,sRecive.IndexOf("^"));
string sS =....;
用一个循环语句,从一个字符串中按一定的条件取出各个子字符串,我想你会吧?
这样是可以实现的
jhlcss 2003-10-20
  • 打赏
  • 举报
回复
就是说,发送的时候是byte型,接收也应该是byte型,如何序列化。
jhlcss 2003-10-20
  • 打赏
  • 举报
回复
求助
lbywyj 2003-10-20
  • 打赏
  • 举报
回复
楼主:
我不知道socket是怎样发送struct,觉得实现好象也不容易,不过我是这样实现的:
定义一个函数,在send() 之前吧,比如:
public struct sss
{
int i;
string s;

}
把i和s的值都转换成string 类型,然后
定义 string sSend = sss.i.ToString()+"^"+sss.s;
这时候就可以发送sSend了;
同样的在接受端:你必须按照发送端定义的协议来恢复你的struct,其中"^",是用来界定struct里边不同类型变量;
这样时可以实现的,至于还有没有别的更好的办法,还希望大家多讨论!

Go语言性能好、语法简单、开发效率高!一起来探索Go 语言吧!本课程特别适合从事PHP/Python/Ruby/Node.js等Web开发的读者,通过本课程可以了解编译型语言怎么写Web应用开发,系统底层怎么进行网络通信。 beego 简介beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。beego 的架构beego 的整体设计架构如下所示:beego 是基于八大独立的模块构建的,是一个高度解耦的框架。当初设计 beego 的时候就是考虑功能模块化,用户即使不使用 beego 的 HTTP 逻辑,也依旧可以使用这些独立模块,例如:你可以使用 cache 模块来做你的缓存逻辑;使用日志模块来记录你的操作信息;使用 config 模块来解析你各种格式的文件。所以 beego 不仅可以用于 HTTP 类的应用开发,在你的 socket 游戏开发中也是很有用的模块,这也是 beego 为什么受欢迎的一个原因。大家如果玩过乐高的话,应该知道很多高级的东西都是一块一块的积木搭建出来的,而设计 beego 的时候,这些模块就是积木,高级机器人就是 beego。至于这些模块的功能以及如何使用会在后面的文档逐一介绍。beego 的执行逻辑既然 beego 是基于这些模块构建的,那么它的执行逻辑是怎么样的呢?beego 是一个典型的 MVC 架构,它的执行逻辑如下图所示:beego 项目结构一般的 beego 项目的目录如下所示:├── conf│   └── app.conf├── controllers│   ├── admin│   └── default.go├── main.go├── models│   └── models.go├── static│   ├── css│   ├── ico│   ├── img│   └── js└── views    ├── admin    └── index.tpl从上面的目录结构我们可以看出来 M(models 目录)、V(views 目录)和 C(controllers 目录)的结构, main.go 是入口文件。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧