⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dictclient.cpp

📁 通过在远端主机上搭建一个远程字典服务服务器
💻 CPP
字号:
/************************************************************************************
文件名称:RemoteLookup
项目名称:远程字典服务(RemoteLookup) TCP
创建者:  胡峰令  
创建时间:2005-4-19
最后修改时间:2005-5-16
功能:    向服务器发送一个单词,并返回相应结果
*************************************************************************************/

#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;
	}

	//创建客户端socket
	if((*clientSocket = socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)
	{
	//	printf("Create socket failed!\n");
		return 0;
	}

	//填充服务器端sockaddr_in 结构
	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 用来从网络中写n个字节
****************************************************************/
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 用来查找给定单词并返回结果
****************************************************************/
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 + -