2014-01-29 35 views
-1

我有一个TCP/IP套接字程序,客户端程序是用C++编写的。服务器程序是用Java编写的。从客户端发送到服务器套接字的消息是一个字节,一个整数和一个IP地址的序列。为了减少消息的大小,我只想发送字节并仅接收字节,然后在服务器端进行转换。差异值之间没有分隔符。C++客户端和Java服务器消息

  1. 要做到这一点什么代码应该在客户端执行将所有这些值转换成字节数组发送?

  2. 如果我们要从C++发送int,我会在服务器端得到什么?

  3. 如何发送和接收IP地址?

我知道,如果我事先知道一个数据类型的字节数(例如int是++在C 4个字节),在我的服务器我可以使用字节缓冲区的未来4个字节数组转换到一个int。

请让我知道如果任何人有一个基本的解决方案。谢谢,

EDITED 所以我写这样的事情来转换说的int字节数组中的C++客户端::

#include <vector> 
using namespace std; 

vector<unsigned char> intToBytes(int paramInt) 
{ 
    vector<unsigned char> arrayOfByte(4); 
    for (int i = 0; i < 4; i++) 
     arrayOfByte[3 - i] = (paramInt >> (i * 8)); 
    return arrayOfByte; 
} 

和Java服务器我使用的ByteBuffer转换回。 这是正确的方法吗?

+1

为什么倒投票? – kavita

回答

0

只需确定将发送哪些字节,然后将代码双方编码。如果整数必须在0到30,000的范围内,那么你可以决定先使用两个高字节的字节。你可以选择你想要的任何东西,只需在两边适当地编码。

+0

是真的,这就是我想要做的。但是,C++客户端如何以字节形式发送int? – kavita

+0

但是你想要。你可以决定。你可以说“这将是三个字节,从低位到高位”。或者任何符合协议要求的东西。 –

+0

据此编辑Q.请确认 – kavita

相关问题