I am using an Fsocket to receive data from a remote client. The socket is setup much the same way as in this example:
I am now only testing over localhost/127.0.0.1 and receiving data from a python script.
The data is recieved when a user presses a key and the function TCPReceiveData, listed below, is called.
TArray<uint8> ANetwork::TCPReceiveData(uint32 BytesToRead)
{
if (!ConnectionSocket) {
return TArray<uint8>();
} else if ( ConnectionSocket == (FSocket*)0xdddddddddddddddd) {
return TArray<uint8>();
}
TArray<uint8> ReceivedData;
FTimespan BlockTime(0, 0, 5); // block wait for 5 secs
if ( ConnectionSocket->Wait(ESocketWaitConditions::WaitForRead, BlockTime )) {
ReceivedData.Init(BytesToRead);
int32 Read = 0;
ConnectionSocket->Recv(ReceivedData.GetData(), BytesToRead, Read);
} else {
return TArray<uint8>();
}
if (ReceivedData.Num() <= 0) {
return TArray<uint8>();
}
return ReceivedData;
}
After reading from the socket anywhere between 10 and 50 times the connection breaks and it enters the following if statement:
if ( ConnectionSocket == (FSocket*)0xdddddddddddddddd) {
UE_LOG(LogTemp, Log, TEXT("ConnectionSocket == 0xdddddddd"));
return TArray<uint8>();
}
And I cannot read from the socket anymore.
This happens very unregularly and I cannot for the life of me figure out how to solve this