[英]winsock2 sending and receiving
我已經搜索了論壇,但找不到適合我問題的正確答案。 我將進行一些小的登錄過程,因此我想將數據發送到編輯框中作為登錄名,然后將數據發送到第二個編輯框中作為密碼。
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?
我從buff中獲取值字符串數據,從buffPass中獲取數據,而不是僅從buff中獲取數據:例如,如果在“登錄”編輯框中為“ Log”,而在“通過”編輯框中為“ Pass”,則得到LogPass,但我希望從日志中獲取單獨的數據到一個字符串,數據從傳遞到第二個。 請幫助我請幫助我
TCP是字節流協議。 如果要分隔消息,則可以由分隔符,長度字詞前綴,諸如XML的自描述協議,類型-長度-值協議等來決定。
NB它是無效的檢查WSAGetLastError()
除非有一個錯誤:即,在這種情況下,如果recv()
返回-1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.