只要用到网络开发啊,就一定会用到序列化反序列化。
1,自定义结构体
struct test
{
int len;
int type;
char data[10];
}
test* data=(test*) buffer.
缺点:明文,只支持基本类型,不支持变长结构
2,在1的基础上,自定义一个缓冲类,存放一个消息。把消息写入缓冲,通过支持string, vector, map, userdata等,来实现各种结构体格式。
inline BytesBuffer& operator<<(BytesBuffer& buffer, const std::basic_st...
Socket编程阅读全文
1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));
2. 如果要已经处于连接状态的soket在调用closesocket后强制关闭,不经历 TIME_WAIT的过程: BOOL bDontLinger = FALSE; setsockopt(s,SOL_SOCKET,SO_DONTLINGER,(const char*)&bDontLinge...
Socket编程阅读全文
server.cpp #include #include #pragma comment(lib, "ws2_32.lib") void main() { // 初始化 WSADATA wsaData; int iResult = WSAStartup( MAKEWORD(2,2), &wsaData ); if ( iResult != NO_ERROR ) printf("Error at WSAStartup()\n"); // 建立socket SOCKET server; server = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP ); if ( server == INVA...
Socket编程阅读全文