序列化和反序列化
write 和 read 实质是拷贝函数。
概述



网络版计算器
代码实现
网络功能准备
编写 TcpServer.hpp。
#pragma once
#include <cstdint>
#include "Socket.hpp"
#include "./logs/ljwlog.h"
class TcpServer {
public:
TcpServer() {}
bool InitServer();
void Start();
~TcpServer();
private:
uint16_t port;
};
Sock 接口封装
将套接字接口封装以便使用。
#pragma once
#include
std;
{ SocketErr = , BindErr, ListenErr };
backlog = ;
{
:
() {}
~() {}
{
sockfd_ = (AF_INET, SOCK_STREAM, );
(sockfd_ < ) {
(, errno, (errno));
(SocketErr);
}
}
{
local;
(&local, , (local));
local.sin_family = AF_INET;
local.sin_port = (port);
local.sin_addr.s_addr = INADDR_ANY;
((sockfd_, ( sockaddr*)&local, (local)) < ) {
(, errno, (errno));
(BindErr);
}
}
{
((sockfd_, backlog) < ) {
(, errno, (errno));
(ListenErr);
}
}
{
peer;
len = (peer);
newfd = (sockfd_, ( sockaddr*)&peer, &len);
(newfd < ) {
(, (errno), errno);
;
}
ipstr[];
(AF_INET, &peer.sin_addr, ipstr, (ipstr));
*clientip = ipstr;
*clientport = (peer.sin_port);
newfd;
}
{ (sockfd_); }
{ ; }
:
sockfd_;
};










