不好意思抓我的最後一篇文章,它的方式來晚= 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;
}
}
---- -------服務器(接收機)------------ 炭msgRcvBuffer [RCVBUFSIZE];
INT recvMsgSize;
如果((recvMsgSize =的recv(clntSocket, msgRcvBuffer,RCVBUFSIZE,0))< 0) DieWithError(「recv()failed」);
msgRcvBuffer [recvMsgSize] ='\ 0';
string msgType(msgRcvBuffer);
COUT < < 「消息類型」 < < MSGTYPE < < ENDL;印刷
當出現< < < < < <沒有無效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 = ... =什麼我試圖做的只是從客戶端發送的消息中獲取消息。我只是試圖從緩衝區開始刪除'1'和'0'。 1和0不是字符。
非常感謝每個人的幫助=)
有什麼問題嗎? – Hasturkun 2009-11-08 10:47:34