前回の投稿をスクラッチして申し訳ありません。遅くなりました =S しかし、基本的に、作成したバッファの送信に問題があります。私がどこで間違っているのかを知る必要があるだけです =( またはもっと良い方法があるかどうか。
------ クライアント送信ユーザー名 -------
int bufferSize = 32;
char messageBuffer[bufferSize];
char* message;
if (userName.size() > 8)
{
cout << "Invalid username : Greater than 8 characters" << endl;
}
else
{
switch(regType)
{
case(REGISTER):
{
cout << "Registered name: " << userName << endl;
messageBuffer[0] = 1;
messageBuffer[1] = 0;
for (int i = 2; i < (userName.size() + 2); i++)
{
messageBuffer[i] = userName[(i - 2)];
}
for (int i = 0; i < (userName.size() + 2); i++)
{
cout << messageBuffer[i];
}
cout << "<<<< messageBuffer " << endl;
message = &messageBuffer[0];
cout << messageBuffer << endl;
//message[(userName.size() + 2)] = '\0';
int messageLen = userName.size() + 2;
if (send(sock, messageBuffer, messageLen, 0) != messageLen)
DieWithError("send() send an invalid name");
}break;
case(UNREGISTER):
{
}break;
}
}
----------- サーバー (受信側)------------ char msgRcvBuffer[RCVBUFSIZE];
int recvMsgSize;
if ((recvMsgSize = recv(clntSocket, msgRcvBuffer, RCVBUFSIZE, 0)) < 0) DieWithError("recv() 失敗");
msgRcvBuffer[recvMsgSize] = '\0';
string msgType( msgRcvBuffer );
cout << "メッセージ タイプ" << msgType << endl; <<<<<< 印刷しても何も表示されない
void handleReg(文字列メッセージ、int ソケット、文字列 ipAddr) {
// Remove the Prefix
int startIndex = 2;
// Get the username from the message
string userName = message.substr(startIndex, message.size() - startIndex);
cout << "Username " << userName << endl;
何らかの理由で、私のメッセージ文字列はただ 1 です... =S 私がやろうとしているのは、クライアントから送信されたものからメッセージを取得することです。バッファの先頭から「1」と「0」を削除しようとしています。1 と 0 は文字ではありません。
みんなの助けに感謝します=)