簡體   English   中英

winsock2發送和接收

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM