📄 socket.cpp
字号:
#include "socket.h"
Cmd *ksocket::unpack()
{
Scope_lock scope_lock(lock);
Cmd *cmd;
char *buffer;
const unsigned int s = sizeof(*cmd);
if(recv_buf.getrsize() < s)
return NULL;
char buf[s];
recv_buf.fetch(buf,s);
cmd = (Cmd*)buf;
if(cmd->size > 108)
{
printf("error packet,size = %d\n",cmd->size);
recv_buf.fetch(buf,s);
cmd = (Cmd*)buf;
return NULL;
}
if(recv_buf.getrsize() < cmd->size)
return NULL;
buffer = (char*)::operator new(cmd->size);
recv_buf.get(buffer,cmd->size);
return (Cmd*)buffer;
}
int ksocket::recv(unsigned int size)
{
Scope_lock scope_lock(lock);
if(size == 0 || canRecv == false)
return 0;
size = size > recv_buf.getwsize() ? recv_buf.getwsize() : size;
io_context[0].buf = recvbuf;
io_context[0].rsize = size;
io_context[0].userdata = this;
io_context[0].handler = sockdl;
io_context[0].type = IOREAD;
Recv(sockdl,&io_context[0]);
canRecv = false;
}
int ksocket::send(char *buf,unsigned int size)
{
Scope_lock scope_lock(lock);
if(!buf || size == 0 || canSend == false)
return 0;
memcpy(sendbuf,buf,size);
io_context[1].buf = sendbuf;
io_context[1].rsize = size;
io_context[1].userdata = this;
io_context[1].handler = sockdl;
io_context[1].type = IOWRITE;
Send(sockdl,&io_context[1]);
canSend = false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -