18,356
社区成员
发帖
与我相关
我的任务
分享
WORD VersionRequested;
WSADATA WsaData;
GuidToCommuKey.clear();
GuidToCommuTime.clear();
VersionRequested = MAKEWORD(2, 0);
if (WSAStartup(VersionRequested, &WsaData))
{
anchor::dprintf("加载socket库失败!\n");
return -1;
}
assert(SDR_OK == SDF_OpenDevice(&pDeviceHandle));
assert(SDR_OK == SDF_OpenSession(pDeviceHandle, &pSessionHandle));
SOCKADDR_IN local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(PORT);
SOCKET Listen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (Listen == INVALID_SOCKET)
{
anchor::dprintf("socket初始化失败!\n");
closesocket(Listen);
WSACleanup();
return -1;
}
if (bind(Listen,(sockaddr*)&local, sizeof(local)) != 0)
{
anchor::dprintf("socket绑定失败!\n");
closesocket(Listen);
WSACleanup();
return -1;
}
if (listen(Listen, LISTEN_NUM) != 0)
{
anchor::dprintf("socket监听失败!\n");
closesocket(Listen);
WSACleanup();
return -1;
}
// 从本地配置文件中读取数据库配置信息
//GetDataBaseParam();
//
//if (! DataBase::GetInstance()->Initialize())
// return -1;
//if (! DataBase::GetInstance()->ConnectDataBase(host, user, passwd, database, port))
// return-1;
// 从数据库中读取服务器运行参数
if (! GetServerRunParam())
return -1;
while (1)
{
SOCKET NewSocket = accept(Listen, NULL, NULL);
if (INVALID_SOCKET == NewSocket)
{
anchor::dprintf("\n接受socket连接请求失败:%d\n", WSAGetLastError());
closesocket(NewSocket);
continue;
}
else
{
int TimeOut = SOCKET_TIME_OUT;
if (setsockopt(NewSocket, SOL_SOCKET, SO_SNDTIMEO, (char*)&TimeOut, sizeof(TimeOut)) == SOCKET_ERROR)
continue;
if (setsockopt(NewSocket, SOL_SOCKET, SO_RCVTIMEO, (char*)&TimeOut, sizeof(TimeOut)) == SOCKET_ERROR)
continue;
}
unsigned int ThreadId;
HANDLE handle = (HANDLE)_beginthreadex(NULL, 0, CommuicateWithClient, (void*)NewSocket, 0, &ThreadId);
if (handle)
CloseHandle(handle);
}
closesocket(Listen);
WSACleanup();
return 0;