C#里面的Socket好像无法完全自定义数据包,程序会自动给数据加上一段包头建议用以他语言写好组件……再在程序里面调用

解决方案 »

  1.   

    C#里面有TcpClient对象,帮你封装好了TCP头,你只用专心写消息内容就行了。
      

  2.   

    這個包實際就是中国移动通信互联网短信网关接口协议,包頭是這協議要求的必須部分,而非tcp本身的那個包頭,請各位高手了解
    我想消息頭也好,消息體也好,封送的方法應該是一致的,我想讓大家幫忙看我那段封包的代碼是否正確,如果正確,用它封裝消息體也類似了,如果不對,那消息内容也是不對的
      

  3.   

    这种想法是可以实现的.无非是要自定义一种通讯接口协议.就是把你的包头,包体用一个类来实现.
    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数组,再转化成需要的类型就可以了.
      

  4.   

    楼主,恐怕要自己写个tcpclient,tcplistener之类的东西
      

  5.   

    恩,如果赶时间完成任务也可以不用,看看这个能不能给你点感觉
    http://www.c-sharpcorner.com/network/ping.asp
      

  6.   

    我写过一个ping的程序(多线程),相信会对楼主有所帮助。要不要阿?