大家好,刚工作不久,这之前接触socket方面的东西不多。所以遇到些疑问希望大家指点一条明路。谢谢大家
问题描述:
有一个c/c++的socket服务端,接收一个java客户端的数据包,然后根据这个包作处理后返回一个数据包包格式(请求接口,java给c的):
字段名称 英文名称 字段类型 字段长度 说明
报文总长度 Bwzcd Char 8 整个报文的长度(包括 « 报文总长度 »自身的8个字节的长度)
提入行行号 Trhhh Char 12 付款人开户行行号
付款人帐号 Zffkrzh Char 32 不足32位 右补空格,313301088882
凭证号码          Pzhm Char 12 提入报文中的凭证号码 
正面图象
数据长度   Zmtxcd Char 8 正面图象数据长度
正面图象    Zmtx BYTE n 变长数据包格式(响应接口,c返回给java的):
报文总长度 Bwzcd Char 8 整个报文的长度
凭证处理结果 Char Char 1 ‘1’-验票成功 ‘ 2’-验票失败,
印章详细结果 Zmtx Char 64 问题:
1.首先我不明白上面这个是用DatagramSocket发送DatagramPacket包还是用流的方式来做。因为查了下资料,好像用流也能发送接收包,我疑惑的是这两者区别是什么呢?好像是流会遇到阻塞,而发包是发了以后就不管了是吗?那是不是就是所谓长连接短连接呢?(长连接就是保持连接,短连接发送完信息就断开。用流发完就断开也属于短连接)2.我不清楚应该怎么组织上面的报文,因为查资料和看例子无一例外传输的都是简单类型。3.socket间的通讯和语言相关吗?包的解析有什么差异没有(所以想问怎么组织才能对应上面的包)如果用javabean对应上面的结构体(应该是)用DatagramPacket发送过去可以么。4.无论用那种方式我接受到的都是字节那我要怎么解析成我需要的信息呢?我是思路是挺乱的,而且没什么经验。所以希望大家看完上面的能会意,也请做过java和c/c++端socket通讯或有经验的大大们帮下我,万分感谢
邮箱是[email protected] 有什么也能直接联系

解决方案 »

  1.   

    没经验
    不过socket应该是平台无关的,基于TCP/IP协议的
      

  2.   

    DatagramSocket与Socket是不同的,DatagramSocket使用的是udp协议,Socket使用的是tcp协议,客户端与服务器端必须使用相同的协议。
      

  3.   

    另外一贴在扩展区
    有两位大大已经帮我解决了
    需要参考的同志们可以过去
    http://topic.csdn.net/u/20090406/12/703ab5a1-4c91-4cd7-b407-53f196f4b867.html
    现在散分……
    :)