我搜索论坛但找不到合适的答案。我要做一点登录程序,所以我希望发送数据在编辑框中作为登录,然后将数据作为密码发送到第二个编辑框中。
int ldata2 = send(Socket, buffs, len, 0);//send login via socket
//send pass via socket
int passData = send(Socket, buffPass, lenPass, 0);
以上说明由客户处理。在服务器端,当我打电话给recv时,就是这样:
int dt = recv(SocketM[i],
strings,
128,
0);
int errsock = WSAGetLastError();
if(errsock != WSAEWOULDBLOCK && errsock != 0)
{
std::cout << "ERR CODE " << errsock;
//shutdown(SocketM[Client]);
closesocket(SocketM[Client]);
break;
}
int passdt = recv(SocketM[i],
passstrings,
128,
0);
std::cout << strings << std::endl;//Log and Password in the same buff :(
std::cout << passstrings //nothing in buffer why?
我从buffs中获取值字符串数据,并从buffPass获取数据,而不是仅从buffs获取exape:如果在登录编辑框中是&#34; Log&#34;在Pass编辑框中 - &#34; Pass&#34;我得到了LogPass 但我希望从日志到一个字符串的单独数据和从传递到第二个的数据。请帮我 请帮我。
答案 0 :(得分:1)
TCP是一种字节流协议。如果你想分开消息,你可以通过分隔符,长度字前缀,自描述协议(如XML,类型 - 长度 - 值协议,......)来完成这些操作。
请注意,除非 错误,否则检查WSAGetLastError()
无效:即在这种情况下recv()
返回-1。