熟悉tcp消息通訊的高手請幫忙,關於組裝消息包的實踐 C#里面的Socket好像无法完全自定义数据包,程序会自动给数据加上一段包头建议用以他语言写好组件……再在程序里面调用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#里面有TcpClient对象,帮你封装好了TCP头,你只用专心写消息内容就行了。 這個包實際就是中国移动通信互联网短信网关接口协议,包頭是這協議要求的必須部分,而非tcp本身的那個包頭,請各位高手了解我想消息頭也好,消息體也好,封送的方法應該是一致的,我想讓大家幫忙看我那段封包的代碼是否正確,如果正確,用它封裝消息體也類似了,如果不對,那消息内容也是不對的 这种想法是可以实现的.无非是要自定义一种通讯接口协议.就是把你的包头,包体用一个类来实现.C#中的socket是以byte数组来发送数据的,所以你的这个类进行数据封装的时候,要把所有的数据类型转化成byte存进去,再发送.你定义了这种接口,在发送方和接收方都要调用这个接口来压包和解包.比如规定包头为12byte,4byte为Total_Length,4btye为Command_Id,4byte为Sequence_Id,分别取出4个byte到一个byte数组,再把这个数组进行转换,成uint(C#中的unsigned int)或者是取出一个uint转化成4个byte的数组再填到包头中.转化的函数当然要自己写.然后再根据包头中的包体长度数据来读取后面的byte,至于包体对应到什么结构,你自己应该是定义好的,再根据各种数据类型读出相应的byte数目到一个byte数组,再转化成需要的类型就可以了. 楼主,恐怕要自己写个tcpclient,tcplistener之类的东西 恩,如果赶时间完成任务也可以不用,看看这个能不能给你点感觉http://www.c-sharpcorner.com/network/ping.asp 我写过一个ping的程序(多线程),相信会对楼主有所帮助。要不要阿? C# 多进程,多线程问题 C#调用dll中的一个c写的访问文件的函数,出现Accessviolationexception异常 怎么样让连接的页面在主框架里面显示? c#的难点是哪里?精髓是哪里?请求高人明示 求算法,已知长方形的长和宽,其内要装N个圆,求最优最大的圆半径? 能不能通过C#来调用shell command? (不用interop) C# Excel 导入数据库 关于C#里Winform程序中发送EMAIL的问题,急!!! c# 占用内存问题 如何得到硬盘信息? c#.net里面如何使用com接口,比如IDispatch? 将一个 中文 转为 uicode 的方法
我想消息頭也好,消息體也好,封送的方法應該是一致的,我想讓大家幫忙看我那段封包的代碼是否正確,如果正確,用它封裝消息體也類似了,如果不對,那消息内容也是不對的
C#中的socket是以byte数组来发送数据的,所以你的这个类进行数据封装的时候,要把所有的数据类型转化成byte存进去,再发送.
你定义了这种接口,在发送方和接收方都要调用这个接口来压包和解包.
比如规定包头为12byte,4byte为Total_Length,4btye为Command_Id,4byte为Sequence_Id,分别取出4个byte到一个byte数组,再把这个数组进行转换,成uint(C#中的unsigned int)或者是取出一个uint转化成4个byte的数组再填到包头中.转化的函数当然要自己写.
然后再根据包头中的包体长度数据来读取后面的byte,至于包体对应到什么结构,你自己应该是定义好的,再根据各种数据类型读出相应的byte数目到一个byte数组,再转化成需要的类型就可以了.
http://www.c-sharpcorner.com/network/ping.asp