请教C#网络编程高手,如何在C#.net环境中用Socket发送和接收一个Struct类型的数据包!!

peterlanhaijun 2006-02-07 01:45:37

请教C#网络编程高手,小弟最近做一个C#的网络项目。网络服务端是用C++做的,已经做好。现在要用C#做一个客户端,需要用Socket发送和接收struct类型的数据包到服务器。

小弟已在网上找过很多C#网络编程方面的资料,好像都是用Send(byte[],int,int)这样的方法发送。

那位大哥大姐有解决办法或者其他解决方案???
...全文
274 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peterlanhaijun 2006-02-07
  • 打赏
  • 举报
回复
谢谢各位老大,接分!
代码蜗牛sky 2006-02-07
  • 打赏
  • 举报
回复
发送的就只能是byte[],就我所知应该没有其他什么方案的
jiezhi 2006-02-07
  • 打赏
  • 举报
回复
1.讲对象序列化成byte[]
2.将字节数组发送之。

记住:你发送的永远都是byte[]
broadury 2006-02-07
  • 打赏
  • 举报
回复
同意楼上的,将class或struct完整的发送,可以进行串行化
lidong6 2006-02-07
  • 打赏
  • 举报
回复
参考一下这个:
序列化:
1、定义结构
[Serializable()]
public struct structname
{
...
}
2、序列化
public static byte[] ObjectToByteA(object obj)
{
MemoryStream fs = new MemoryStream();
byte[] tmp = null;
try
{
// 序列化
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, obj);
tmp = fs.ToArray();
}
catch(Exception e)
{
MessageBox.Show(e.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
fs.Close();
}
return tmp;
}
3、反序列化
public static object ByteAToObject(byte[] ba)
{
MemoryStream fs = new MemoryStream();
object obj = null;
try
{
// 反序列化
fs = new MemoryStream(ba);
fs.Position = 0;
BinaryFormatter formatter = new BinaryFormatter();
obj = formatter.Deserialize(fs);
}
catch(Exception e)
{
MessageBox.Show(e.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
fs.Close();
}
return obj;
}
4、using引用
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
lidong6 2006-02-07
  • 打赏
  • 举报
回复
先把struct类型转换为byte[]再发送.有一个方法是专门将结构转换为byte[]的.
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创作助手写篇文章吧