社区
C#
帖子详情
C#将二进制内容读入结构体,通过socket发送后读出结构体内容
lem12
2007-12-12 04:41:36
C#将二进制内容读入结构体,通过socket发送后读出结构体内容.
...全文
194
6
打赏
收藏
C#将二进制内容读入结构体,通过socket发送后读出结构体内容
C#将二进制内容读入结构体,通过socket发送后读出结构体内容.
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuadam
2007-12-14
打赏
举报
回复
string是引用
fuadam
2007-12-13
打赏
举报
回复
我给你的链接里有啊
lem12
2007-12-13
打赏
举报
回复
如何将
二进制内容读入结构体
lem12
2007-12-13
打赏
举报
回复
测试没反应
结构体
public struct My_Test
{
public string Ip;
public string Port;
public string str_Msg;
}
客户端
发送事件
Stream str = new NetworkStream(sok);
My_Test myobj = new My_Test();
myobj.Ip = this.textBox1.Text;
myobj.Port = this.textBox2.Text;
myobj.str_Msg = this.richTextBox2.Text;
int size = Marshal.SizeOf(myobj);
IntPtr buffer = Marshal.AllocHGlobal(size);
Marshal.StructureToPtr(myobj, buffer, true);
byte[] sendbyte = new byte[size];
Marshal.Copy(buffer, sendbyte, 0, size);
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(str, myobj);
sok.Send(sendbyte);
Marshal.FreeHGlobal(buffer);
服务端
int size = Marshal.SizeOf(myobj);
IntPtr buffer = Marshal.AllocHGlobal(size);
byte[] byt = new byte[size];
Marshal.Copy(byt, 0, buffer, size);
string strip=((My_Test)Marshal.PtrToStructure(buffer, myobj.GetType())).Ip;
string strmsg = ((My_Test)Marshal.PtrToStructure(buffer, myobj.GetType())).str_Msg;
newsok.Receive(byt, byt.Length, 0);
string str = "";
//委托将数据显示到文本框
GetControl getcon = new GetControl(GetStr);
this.BeginInvoke(getcon, new object[] { strmsg });
Marshal.FreeHGlobal(buffer);
Ellen88
2007-12-12
打赏
举报
回复
将从socket接收的Byte[]转换为struct
public object GetStruct(SocketHelper.CMDType cmdType, Byte[] _buffer)
{
int headsize = SocketHelper.DataHeadSize;
IntPtr ptr = Marshal.AllocCoTaskMem(headsize);
Marshal.Copy(_buffer, 0, ptr, headsize);
_struct = Marshal.PtrToStructure(ptr, typeof(SocketHelper.DataHeader));
}
public class SocketHelper
{
public const int DataHeadSize=11;
public struct DataHeader
{
public DataHeader(int str)
{
Mark = "ABCDEFGHIJ".ToCharArray();
nCmdType = '0';
}
public char[] Mark;//10
public char nCmdType;
};
}
fuadam
2007-12-12
打赏
举报
回复
http://topic.csdn.net/u/20071212/09/43435abe-df16-42cd-801b-64f29a12f6fc.html
看这帖子里我的回复
张赐荣 |
C#
TCP 通信粘包、半包问题解决方法
C#
TCP 通信粘包、半包问题解决方法 [作者:张赐荣,地址:https://www.cnblogs.com/netlog/p/16194812.html] 问题形成原因 TCP是一种面向连接,基于字节流的可靠流式传输协议。 因为TCP是流模式协议,面向字节流,所以没有数据块,
发送
的数据没有边界,好比一根水管,水流没有边界。 与UDP协议不同,UDP是基于报文的传输协议,UDP的消息是基于数据块的,
发送
端一次
发送
多少数据,客户端一次就要接收多少数据。 TCP则不同,
发送
端可以连续不断的发多次包,接收端
“深入浅出”系列之Linux篇:(13)
socket
编程实战+TCP粘包解决方案
从日常使用的APP,到背后支撑的各类服务器,网络通信无处不在,而
socket
作为实现网络通信的关键技术,更是开发者们必须掌握的核心知识。但在
socket
编程的道路上,TCP粘包问题宛如一只拦路虎,让无数开发者头疼不已。它隐蔽又棘手,导致数据传输混乱,程序运行异常。不过别担心,本文将为你全面剖析
socket
编程实战细节,并奉上超硬核的TCP粘包解决方案,一次性帮你解决所有难题,带你突破网络编程瓶颈,赶紧跟着文章开启这场技术之旅吧!!!加油!!!
32位与64位编程注意事项总结
http://www.oschina.net/p/flowvisor http://www.cnblogs.com/centimeter/articles/2395405.html http://www.360doc.com/content/13/0520/21/7662927_286868466.shtml http://zhidao.baidu.com/link?url
面试八股知识总结
总结了一些面试基础知识,欢迎大家提出意见和补充
linux串口编程
串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是RS-232-C接口(又称EIA RS-232-C)它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行
二进制
数据交换接口技术标准"该标准规定采用一个25个脚的DB25连接器,对连接
C#
111,095
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章