前言:
在完成了TCP的服务端Demo之后,现在开始尝试开发客户端方面的项目。在做客户端之前先想下,客户端和服务端是不是公用一些类,头文件,创建socket,关闭socket,recv,send。这些客户端和服务端应该是公用的。应该放在XTcp.h,XTcp.cpp中。如果我们直接把这些文件加入到我们的项目中,这个方案非常不灵活,每次编译项目的时候,都要加一大推文件。还要重新编译这部分代码。如果解决这个问题呢?这里提出一个动态库的概念。
本博客重点将linux下将服务器的建立绑定连接socket功能接口的过程。
如下代码:
创建so的makefile
libxsocket.so:XTcp.h XTcp.cpp
g++ $+ -o $@ -fpic -shared -std=c++11
编译生成动态链接库的生成文件XTcp.cpp
#include "XTcp.h"
#ifdef WIN32
#include <Windows.h>
#define socklen_t int
#else
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
#include <arpa/inet.h>
#define closesocket close
#endif
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <thread>
using namespace std;
XTcp::XTcp()
{
#ifdef WIN32
static bool f