我有char* MESSAGE = new char[256];
和char* DISCONNECT = new char[256];
然而,當我使用Winsock的從客戶端發送它們,並在服務器收到他們(服務器有相同的字符名稱)出於某種原因char* MESSAGE
攔截char* DISCONNECT
任何幫助爲什麼這將是偉大的!如何發送和recv特定字符的Winsock
Cient:
private: System::Void Form1_FormClosing(System::Object^ sender, System::Windows::Forms::FormClosingEventArgs^ e) {
char* Disconnect = new char[256];
ZeroMemory(Disconnect, sizeof(Disconnect));
Disconnect = "DC";
send(sConnect, "DC", 256, NULL);
}
private: System::Void txtMessage_KeyDown(System::Object^ sender, System::Windows::Forms::KeyEventArgs^ e) {
if(e->KeyCode == Keys::Enter && txtMessage->Text != "")
{
char* MESSAGE = new char[sizeof(txtMessage->Text->Length)];
ZeroMemory(MESSAGE, sizeof(MESSAGE));
string strMESSAGE = "";
MarshalString(txtMessage->Text, strMESSAGE);
send(sConnect, strMESSAGE.c_str(), strMESSAGE.length(), NULL);
txtMessage->Clear();
}
}
服務器:
int RecieveThread()
{
ZeroMemory(MESSAGE, sizeof(MESSAGE));
for (;; Sleep(50))
{
if(recv(sConnect, MESSAGE, 256, NULL) != SOCKET_ERROR)
{
printf("<%s:> %s\n", NAME, MESSAGE);
}
}
return 0;
}
int DisconnectThread()
{
ZeroMemory(Disconnect, sizeof(Disconnect));
for(;; Sleep(50))
{
if(recv(sConnect, Disconnect, 256, NULL) != SOCKET_ERROR)
{
if (Disconnect == "DC")
{
printf("has disconnected.");
}
}
}
return 0;
}
'sizeof(Disconnect)'當然不是256. – chris
不應該在客戶端的'strMESSAGE'是'MESSAGE'? – Cyclonecode
@chris如果我可以選擇一個評論作爲答案,我會,我不能相信我做了這樣的noob錯誤,甚至沒有注意到。哈哈謝謝。也有任何理由爲什麼後斷開接收如果我比較'如果(斷開==「DC」)'顯然斷開不等於「DC」? –