2010-12-06 20 views
0

Windowsソケット経由でint(サードパーティのライブラリを使用しない)を送信するにはどうすればいいですか?送信: パラメータとして(const char *)が必要です。intをwinsock経由で送信するsend

私の試みは、このようにint型を送信することでした:

unsigned char * serialize_int(unsigned char *buffer, int value) 
{ 
    /* Write big-endian int value into buffer; assumes 32-bit int and 8-bit char. */ 
    buffer[0] = value >> 24; 
    buffer[1] = value >> 16; 
    buffer[2] = value >> 8; 
    buffer[3] = value; 
    return buffer + 4; 
} 

が、送信は、()(のconstのchar *)望んでいます。私はこだわっています...

答えて

1

ああ、これは簡単に修正されます。コンパイラはchar*(今のところはconstを無視します)を望んでいますが、unsigned char*を渡していますが、唯一の違いは、コンパイル時にコンパイラが各バイトをどのように解釈するかです。したがって、ポインタをunsigned char*からchar*に簡単にキャストすることができます。この方法:

(char*)serialize_int(...) 
+0

本当に助けて!サーバ側で追加した自信:) それが見えるように: \t \t \t unsigned char型配列[4] = {PerIoData->緩衝液[0]、PerIoData->緩衝液[1]、PerIoData->緩衝液[ 2]、PerIoData-> Buffer [3]}; \t \t \t \t \t \t =うちunsigned int型((配列[0] << 24)|(配列[1] << 16)|(配列[2] << 8)|(配列[3])) ; – anton

1
const int networkOrder = htonl(value); 

const result = send(socket, reinterpret_cast<const char *>(&networkOrder), sizeof(networkOrder), 0); 
関連する問題