?? wnservice.cpp
字號:
/***************************************************
中英文WordNet在線詞典
本軟件遵從LGPL協議,完全開放所以源代碼及設計文檔。
寧夏大學智能網格系統實驗室 張冬 康彩 2005.10
****************************************************/
///////////////////////////////////////////////////////
// //
// 寧夏大學 張冬 康彩 2006.6 //
// //
// LGPL 許可發行 Email: zd4004@163.com //
// //
// 部分資料來自互聯網 鑒定來源較困難 //
// 如有不妥之處請立刻聯系我們 //
///////////////////////////////////////////////////////
#include "sockcom.h"
#include "wncn.h"
int main()
{
WSADATA wsaData;
SOCKET serverSocket,newConnection;
SOCKADDR_IN serverAddr,clientAddr;
int Ret,clientAddrLen;
//初始化Winsock Dll
if((Ret=WSAStartup(MAKEWORD(2,2),&wsaData))!=0)
{
printf("WSAStartup failed with error %d\n", Ret);
return 0;
}
//建立服務器端socket
if((serverSocket=socket(AF_INET, SOCK_STREAM, 0))==INVALID_SOCKET)
{
printf("Create socket error\n");
WSACleanup();
return 0;
}
//填充服務器端SOCKADDR_IN結構
serverAddr.sin_family=AF_INET;
serverAddr.sin_addr.s_addr=htonl(INADDR_ANY);
serverAddr.sin_port=htons(USER_PORT);
//將服務器端socket與指定IP地址和端口綁定
if(bind(serverSocket,(SOCKADDR *)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
{
int temp;
temp=WSAGetLastError();
printf("Bind error!\n");
closesocket(serverSocket);
WSACleanup();
return 0;
}
//指定服務器端serverSocket為監聽模式
if(listen(serverSocket,5)!=0)
{
printf("Listen error!\n");
closesocket(serverSocket);
WSACleanup();
return 0;
}
printf("Init...!\n");
clientAddrLen=sizeof(clientAddr);
//讀取數據
startcom(); //初始化
while(!kbhit())
{
if((newConnection=accept(serverSocket,(sockaddr FAR*)&clientAddr,&clientAddrLen))==INVALID_SOCKET)
{
printf("Connect failed.Please try again!\n");
continue;
}
//hThreadHandle = _beginthreadex(NULL , 0 , HttpThread , (void *)&newConnection , 0 , &uThreadID);
//CloseHandle((HANDLE) hThreadHandle);
}
closesocket(serverSocket);
WSACleanup();
return 0;
}
unsigned __stdcall HttpThread(void * p)
{
BufferSocket BufSock;
InitBufferSocket(&BufSock);
BufSock.Socket = *((SOCKET *) p);
GetNewWordNetCN(BufSock);
closesocket(BufSock.Socket);
return 0;
}
void GetNewWordNetCN(BufferSocket BufSock) //得到請求數據 查找數據 發送數據
{
char buf[100],*NotFind="NXU_AGL_NULL";
int Ret;
Ret = ReadLineFromBufferSocket(&BufSock , buf , 100); //讀取數據
buf[Ret-2]='\0';
//printf("%s\n",buf);
long index=GetIt(buf);
//printf("SSS:");
//printf("%s\n",MwordNwt[index+1]);
if(index!=-999)
{
if((Ret=WriteSocket(BufSock.Socket,MwordNwt[index],strlen(MwordNwt[index]))) < 0 )
printf("Send failed.You can try again!\n");
}
else
{
if((Ret=WriteSocket(BufSock.Socket,NotFind,strlen(NotFind))) < 0 )
printf("Send failed.You can try again!\n");
}
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -