java客户端与c++服务器端的一些问题

keff 2006-10-25 08:07:45

最近在做一个项目,关于java和c++通讯方面的.通讯时发给服务器端(c++)的数据大小不一致,后来检查发现可能是我这边的java数据包定义的有错.现在给出了c++服务器端数据包的定义:
 struct PACKAGE
{
//包头标志
UINT nBeginFlag; //包头头标志

long lPackageID; //包标识ID。(每个包的ID必须不同,不过进程重新启动后,ID可以重新开始)
UINT nPackageLen; //包的总长度
UINT nBuffLen; //包缓存区长度(byteBuff 区的大小)
char chSocketID[SOCKET_ID_LENTH];//套接的ID号。

//包尾标志
UINT nEndFlag; //包头尾标志

UINT nSessionID; //会话ID
BYTE byteBuff[INITBUFFLENTH];//数据包缓冲区
};
typedef PACKAGE* PPACKAGE;

请问一下,在客户端,我该用java怎么去定义这个数据包,才能让两边接受的数据包大小一致呢?在协议上有什么细节需要注意呢?谢谢大家!
...全文
214 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
redex 2006-11-28
  • 打赏
  • 举报
回复
接收,发送时使用DataInputStream和DataOutputStream.
redex 2006-11-28
  • 打赏
  • 举报
回复
在java端需要把欲发送的内容转换为字节数组再发送,
比较不容易出错.
jlu3389 2006-11-01
  • 打赏
  • 举报
回复
在c和c++中,int表示的整型与平台相关的。16位的8086机器上int占2字节,在32位的sun Sparc机器上,int占4字节;到inter的时候,就跟操作系统有关系了,dos和windows3.1中int占2字节,当windows使用32位模式时int占4字节。

java中所有的数值类型所占字节的数量跟平台无关。。。。
woaiwanghuan 2006-10-31
  • 打赏
  • 举报
回复
C++和Java的数据类型是不同的,比如长度,所以我觉得应该把Java的数据都转化成C++的.然后再传输!
具体没做过,没经验
NTMDQUSI 2006-10-31
  • 打赏
  • 举报
回复
大小不一緻 你這裡可能出現2個情況吧
1是傳過來的數據不完整 2是數據沒有完全還原
如果是使用Socket傳輸 Java這邊用InputStream接 情況1就不會出現
如果是情況2的話 可能就是Java這邊類的定義出問題了 協議不一緻
keff 2006-10-27
  • 打赏
  • 举报
回复
有谁有这方面的经验啊。。。
keff 2006-10-26
  • 打赏
  • 举报
回复
没人来做沙发啊,自己顶一下吧
环境:Windows XP SP3、 VC++ 6.0、 Windows 2003 SDK 使用步骤: 1、下载解压之后,使用VC++ 6.0打开两个工程:一个是SocketServer和一个ClientSocket工程。 2、首先运行服务器端工程,选默认的端口1008 3、然后运行客户端工程,选默认的端口1008和默认的服务器地址 4、再运行多个客户端进程 5、如果一切正常,可以每个客户端的消息发送,我们可以在服务端和各个客户端同步看到消息 实现一个服务器对多个客户端的关键是,在服务端的使用集合CPtrList类用保存客户端的socket对象,思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户端的socket对象,而MFC框架提供了CSocket类,它是一个异步通信的类,所以看上去代码比较Java的多线程代码简单的实现了一个对多的即时通讯功能。另外,MFC提供了CSocketFile类和CArchive类与CSocket类实现了C++的网络通讯编程功能。 本示例注释非常详细,所有的辅助类都放一个util目录中,然后在工程中分了一个目录来管理这些辅助类,使用代码非常清晰。手动书写部分的代码是按Java的规范书写,当然其它代码由IDE生成的,所以是MS的风格,所以当你看代码时,只要是使用“骆驮命名法”的方法都是本人书写的功能性代码。 参看的思路:在服务端要从回调方法onAccept读起;而客户端代码主要从OnSendButton方法读起,即可理解整个代码的意思。 阅读对象:具有Java的Socket编程经验的人员,并且希望能够书写出比Java效率更高的即时通讯程序的人员

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧