我有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”? –