如何在c+中连接套接字的两个部分+;窗户? 我正在研究C++中的一个项目,它使用套接字从服务器获取数据并使用它。 我有一个问题,因为当我从服务器收到一条很长的消息时,我的项目无法读取它,因为它被分为两部分,而我从来没有收到它,或者只是最后一

如何在c+中连接套接字的两个部分+;窗户? 我正在研究C++中的一个项目,它使用套接字从服务器获取数据并使用它。 我有一个问题,因为当我从服务器收到一条很长的消息时,我的项目无法读取它,因为它被分为两部分,而我从来没有收到它,或者只是最后一,c++,windows,sockets,visual-studio-2012,hyperlink,C++,Windows,Sockets,Visual Studio 2012,Hyperlink,如何在c+中连接套接字的两个部分+;窗户? 我正在研究C++中的一个项目,它使用套接字从服务器获取数据并使用它。 我有一个问题,因为当我从服务器收到一条很长的消息时,我的项目无法读取它,因为它被分为两部分,而我从来没有收到它,或者只是最后一部分。 有人能帮我解决这个问题吗? 谢谢 #包括 #包括 #包括 #包括 #包括//Esta puta da problemas,mejor usar#包括 #包括 #包括 #包括 #包括 #pragma注释(lib,“ws2_32.lib”)

如何在c+中连接套接字的两个部分+;窗户?

我正在研究C++中的一个项目,它使用套接字从服务器获取数据并使用它。 我有一个问题,因为当我从服务器收到一条很长的消息时,我的项目无法读取它,因为它被分为两部分,而我从来没有收到它,或者只是最后一部分。 有人能帮我解决这个问题吗? 谢谢

#包括
#包括
#包括
#包括
#包括//Esta puta da problemas,mejor usar#包括
#包括
#包括
#包括
#包括
#pragma注释(lib,“ws2_32.lib”)
//达托斯德拉塞特酒店
int st=1000;
int sendCTR=10000;
void main(){
//启动插座
WSADATA WSADATA;
if(::WSAStartup(MAKEWORD(2,2),&wsaData)&&wsaData.wVersion!=MAKEWORD(2,2)){
标准::cout

如果您使用的是TCP,您应该知道它只能传输一个字节的“消息”。任何更长的内容都需要TCP之上的协议。TCP/UDP?,协议?,代码?您可以更改服务器还是只更改客户端?我使用TCP,现在我将添加部分代码。如果recv()返回1,即只接收到一个字节,会发生什么?我不知道您的意思
#include <iostream>
#include <sstream>
#include <string>
#include <ctime>
#include <WinSock2.h> //Esta puta da problemas, mejor usar #include <Windows.h>
#include <queue>
#include <mutex>
#include <regex>
#include <process.h>
#pragma comment(lib, "ws2_32.lib")

//Datos de la Socket
int st = 1000;
int sendCTR = 10000;

void main() {

        //start sockets
        WSADATA wsaData;
        if (::WSAStartup(MAKEWORD(2, 2), &wsaData) && wsaData.wVersion != MAKEWORD(2, 2)) {
                std::cout
                        << "Cannot start up socket library: " << ::WSAGetLastError() << std::endl;
                std::getchar();
                exit(EXIT_FAILURE);

        }


        sockaddr_in gameAddr;
        gameAddr.sin_family = AF_INET;
        gameAddr.sin_addr.S_un.S_addr = inet_addr(NT_GAME_SERVER_IP);
        gameAddr.sin_port = htons(NT_GAME_SERVER_PORT);
        gameSocket = socket(AF_INET, SOCK_STREAM, 0);
        if (connect(gameSocket, (SOCKADDR*)&gameAddr, sizeof(gameAddr)) == SOCKET_ERROR) {
                std::cout
                        << "Cannot connect to GameServer (" << NT_GAME_SERVER_IP << ":" << NT_GAME_SERVER_PORT << "), retrying..." << std::endl;
                goto GAME;
        }

        Send(gameSocket, std::to_string(Session));
        Sleep(500);
        Send(gameSocket, NT_USER, Session);
        Sleep(300);
        Send(gameSocket, NT_PSSW, Session);
        long long lastPulse = time(NULL), pulseCounter = 0;
        Sleep(300);

        //log packets
        std::vector<unsigned char> gameBuffer(0x4000);
        int gameRecvLen;
        ses = Session;
        std::thread t(Order);
        while ((gameRecvLen = recv(gameSocket, (char*)&gameBuffer.front(), gameBuffer.size(), NULL)) > 0 && gameRecvLen < 0x4000) {
                for each(std::string gamePacket in decryptit(gameBuffer, gameRecvLen)) {
                        if (gamePacket == "") continue; //Null stuff...
                        std::vector<std::string> Packet = Crypto::split(gamePacket, ' ');
                        //MAIN STUFF

                }
        }


}