?? dictclient.cpp
字號:
/************************************************************************************
文件名稱:RemoteLookup
項目名稱:遠程字典服務(RemoteLookup) TCP
創(chuàng)建者: 胡峰令
創(chuàng)建時間:2005-4-19
最后修改時間:2005-5-16
功能: 向服務器發(fā)送一個單詞,并返回相應結(jié)果
*************************************************************************************/
#include "sock_common.h"
#define SERVER_PORT 5150
#define BUFFER_SIZE 100
/****************************************************************
Trim用來去除左右空格
*****************************************************************/
void Trim(char ServerAddr[])
{
unsigned int i , k = 0;
char *ptemp = new char[strlen(ServerAddr)];
for(i = 0 ; i < strlen(ServerAddr) ; i++)
{
if((ServerAddr[i] != ' ') ||
(i >= 0 && i < strlen(ServerAddr) - 1 && ServerAddr[i-1] != ' ' && ServerAddr[i + 1] != ' '))
{
ptemp[k] = ServerAddr[i];
k++;
}
}
ptemp[k] = '\0';
strcpy(ServerAddr , ptemp);
}
/****************************************************************
CheckAddr用來檢測IP地址格式是否正確
*****************************************************************/
int CheckAddr(char ServerAddr[])
{
unsigned int i , k = 0;
Trim(ServerAddr);
if(!strcmp(ServerAddr,"\0"))
return 0;
for(i = 0 ; i < strlen(ServerAddr) ; i++)
if(ServerAddr[i] == '.')
k++;
if(k != 3)
return 0;
return 1;
}
/****************************************************************
ConnectToServer用來連接到服務器
*****************************************************************/
int ConnectToServer(char ServerAddr[] , SOCKET *clientSocket)
{
WSADATA wsaData;
sockaddr_in serverAddr;
int Ret;
//加載Winsock.dll
if((Ret=WSAStartup(MAKEWORD(2,2),&wsaData))!=0)
{
// printf("WSAStartup failed with error %d\n",Ret);
return 0;
}
//創(chuàng)建客戶端socket
if((*clientSocket = socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
{
// printf("Create socket failed!\n");
return 0;
}
//填充服務器端sockaddr_in 結(jié)構(gòu)
serverAddr.sin_family=AF_INET;
serverAddr.sin_addr.s_addr=inet_addr(ServerAddr);
serverAddr.sin_port=htons(SERVER_PORT);
//連接到服務器
if(connect(*clientSocket,(sockaddr *)&serverAddr,sizeof(serverAddr))==SOCKET_ERROR)
{
// printf("Connect failed.\n");
closesocket(*clientSocket);
WSACleanup();
return 0;
}
return 1;
}
/****************************************************************
WriteSocket 用來從網(wǎng)絡中寫n個字節(jié)
****************************************************************/
int WriteSocket(SOCKET s,char FAR *buf,int n)
{
int count = 0;
int sc;
while(count < n)
{
sc = send(s,buf + count,n - count,0);
if(sc < 0)
return sc;
if(sc == 0)
Sleep(100);
count += sc;
}
return count;
}
/****************************************************************
SeachWord 用來查找給定單詞并返回結(jié)果
****************************************************************/
int SeachWord(SOCKET clientSocket , char* buf , char *recbuf)
{
int Ret;
if(WriteSocket(clientSocket,buf,strlen(buf))==SOCKET_ERROR )
return 0;
if((Ret=recv(clientSocket,recbuf,BUFFER_SIZE,0))==SOCKET_ERROR)
return 0;
recbuf[Ret-1]='\0';
closesocket(clientSocket);
WSACleanup();
return 1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -