일단 iocp는 완성한 듯 윈도우에서만 되면 될 듯
This commit is contained in:
@@ -23,14 +23,11 @@ int main() {
|
||||
Chattr::ThreadPool threadPool(0);
|
||||
Chattr::IOCP iocp;
|
||||
iocp.init(&threadPool, _IOCPClient);
|
||||
// struct Chattr::WSAManager wsaManager;
|
||||
|
||||
Chattr::TCPSocket sock;
|
||||
struct Chattr::Address serveraddr;
|
||||
Chattr::TCPSocket clientSock;
|
||||
struct Chattr::Address clientAddr;
|
||||
bool enable = true;
|
||||
sock.setsockopt(SOL_SOCKET, SO_KEEPALIVE, (const char*)&enable, sizeof(enable));
|
||||
if (config.ipVersion == 4) {
|
||||
sock.init(AF_INET);
|
||||
serveraddr.set(AF_INET, INADDR_ANY, config.listenPort);
|
||||
@@ -64,7 +61,7 @@ int main() {
|
||||
ptr->wsabuf.len = 1500;
|
||||
ptr->IOCPInstance = &iocp;
|
||||
|
||||
iocp.registerSocket(ptr->socket.sock);
|
||||
iocp.registerSocket(ptr);
|
||||
|
||||
int returnData = iocp.recv(ptr);
|
||||
}
|
||||
@@ -76,17 +73,8 @@ void _IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDATA* data) {
|
||||
int totalRedSize = 0;
|
||||
int redSize = 0;
|
||||
|
||||
// spdlog::info("Receving from: [{}]", (std::string)sock.remoteAddr);
|
||||
|
||||
//while (totalRedSize < packetSize) {
|
||||
// redSize = data->socket.recv(&pack.serialized, 1500 - totalRedSize, 0);
|
||||
//
|
||||
// if (redSize <= 0) {
|
||||
// // spdlog::info("Client disconnected. [{}]", (std::string)sock.remoteAddr);
|
||||
// return;
|
||||
// }
|
||||
// totalRedSize += redSize;
|
||||
//}
|
||||
if (data->wsabuf.len == data->sendbytes)
|
||||
return;
|
||||
|
||||
memcpy(pack.serialized, data->wsabuf.buf, data->wsabuf.len);
|
||||
|
||||
@@ -94,7 +82,6 @@ void _IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDATA* data) {
|
||||
bool packetError = false;
|
||||
Chattr::DataPostPacket dataPostPacket;
|
||||
|
||||
|
||||
Chattr::ResponsePacket packet;
|
||||
std::queue<Chattr::ResponsePacket> responsePackets;
|
||||
|
||||
@@ -166,7 +153,18 @@ void _IOCPClient(Chattr::ThreadPool* thread, Chattr::IOCPPASSINDATA* data) {
|
||||
break;
|
||||
}
|
||||
|
||||
int returnData = data->IOCPInstance->recv(data);
|
||||
packet.__data.packetType = Chattr::PacketType::PACKET_RESPONSE;
|
||||
packet.__data.requestType = Chattr::RequestType::DATA;
|
||||
packet.__data.dataType = Chattr::DataType::TEXT;
|
||||
packet.__data.packetLength = sizeof(Chattr::ResponseStatusCode);
|
||||
packet.__data.responseStatusCode = Chattr::ResponseStatusCode::BAD_REQUEST;
|
||||
packet.convToN();
|
||||
|
||||
memcpy(data->wsabuf.buf, packet.serialized, data->wsabuf.len);
|
||||
|
||||
int returnData = data->IOCPInstance->send(data, 0);
|
||||
|
||||
// int returnData = data->IOCPInstance->recv(data);
|
||||
}
|
||||
|
||||
void _TCPSendClient(Chattr::ThreadPool* thread, Chattr::TCPSocket sock, std::queue<Chattr::ResponsePacket> packets) {
|
||||
|
||||
Reference in New Issue
Block a user