📄 lientrequest.cpp
字号:
// lientRequest.cpp: implementation of the ClientRequest class.
//
//////////////////////////////////////////////////////////////////////
#include "lientRequest.h"
#include "StudentTable.h"
#include <Winsock2.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
ClientRequest::ClientRequest()
{
loadStudentTable();
displayRecords();
start();
}
void ClientRequest::loadStudentTable()
{
StudentTable::loadFile();
}
ClientRequest::~ClientRequest()
{
}
void ClientRequest::start()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2,2);
err = WSAStartup( wVersionRequested, &wsaData );
if (err!=0)
{
return;
}
if (LOBYTE(wsaData.wVersion)!=2||
HIBYTE(wsaData.wVersion)!=2)
{
WSACleanup( );
return;
}
SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);
SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);
while(1)
{
SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
char sendBuf[100];
//sprintf(sendBuf,"Welcome %s to my home!",inet_ntoa(addrClient.sin_addr));
//send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[100];
recv(sockConn,recvBuf,100,0);
if(recvBuf[0]=='q'||recvBuf[0]=='Q')
{
sprintf(sendBuf,"disconnect client!");
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
closesocket(sockConn);
}
else
{
char *token;
char *stud[2];
char seps[]= " ,\t\n";
token = strtok(recvBuf, seps );
for(int i=0;i<2 && token != NULL;i++)
{
stud[i]=token;
token= strtok( NULL, seps );
}
switch(stud[0][0])
{
case 'F':
{
string sendstr=queryRecord(stud[1]);
int length=sendstr.length();
char *buffer=new char[length+1];
for(int i=0;i<length;i++)
{
buffer[i]=sendstr[i];
}
buffer[length]='\0';
send(sockConn,buffer,length+1,0);
break;
}
//可以在后面加上插入和删除情况
default:break;
}
}
//printf("%s\n",recvBuf);
}
}
void ClientRequest::displayRecords() //显示记录
{
StudentTable::displayRecord();
}
string ClientRequest::queryRecord(string sno) //查询记录
{
return StudentTable::queryRecord(sno);
}
void ClientRequest::addRecord() //添加记录
{
}
void ClientRequest::removeRecord() //删除记录
{
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -