CSocket编程编程实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
编程编程编编编告CSocket
班 编,网学学号工三班 生姓名,编昊天 ,101215134046
编编目的和要求,
,学会方法的基本原理~1WinsockI/O
,使用学会方法编编编的编编用程序~写网2Winsock I/O 熟悉中编程~3.MFCSocket
熟悉基本的编通信原理。网4.
编编要求,
编编通信的系编~1.C/SMIS
服编器端可以采用控制台编用程序提供服编~2.
客编端必编编编界面化的编程;,3.MFC编编容分析编编,内与
根据上一编编中的通信模式~编编一个模式的编信息编编系编~改前面编编四中的系编~编一网写1.C/S步完善编系编的功能。
在生信息管理系编中~编一服编器端作编主机~的功能主要是编编生信息的编索~学写个它学帮2.
助客编端编系编中生信息的编编。学
编编步编编编编程,与
,打编编程编境~1Visual c++ 6.0,点编文件新建、编编建立新的工程~编编编编建立工程名编2->Win32 Console Application
“的一空工程~个CSocket”
,编编点编文件新建、编编建立新的文件~编编编编建立在“服编器”工程下的名3->C++ Source File
编“的文件~CSocket”
,编建包含的编文件4
,引用的编文件5
,常量和编量的定编6
,初始化编境的代编7socket
,编建用于编的听的代编8socket
,编定到本地地址的代编9socket sServer,在上编行编的代编听10socket sServer,编编~编放编源。11socket
编编编果,
,编编了在服编器客编端之编编送和接受据。与数1
,行服编器后~服编器编于编编运听状2
,服编器编用程序编是在启将端口上编。听3tcp9990,收到客编端编用程序编送的据后~服编器编用程序向客编端编送一
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示收到据的字来数将个数4
符串。
,如果服编器收到字符串编退出编用程序。8quit
,编编通信的系编~5C/SMIS
,服编器端采用了控制台编用程序提供服编~6
,客编端必编编编界面化的编程;,。7MFC
疑编小编,
通编本次编编~了解了编程的一些基编知编~编到了用学编服编器编用程序。编写学CSocketCSocket到了编置服编器地址~用编客编端编用程序~以及如何接受自客编端的编求写来。CSocketCSocket
学编到了如何编置编非阻塞模、程序是如何编接收自客编端的编求的~以及来socketCSocket
是如何在服编器客编端之编编送和接受据的。然后提示用编编入向服编器编送的字符与数CSocket
串~更加深刻的理解服编器客编端与的特点。同编~在编编编程中~回编编本上的理编知编~CSocket
巩固了我的知编。
主要算法和程序编,清
#include
#pragma comment(lib,"wsock32.lib")#include
int main(int argc,_TCHAR* argv[]){
编包含的信息构体//WSADATA
WSADATA wsaData;
初始化//winsock2.2
if(WSADATAtartup(MADEWORD(2,2),&wsaData)!=0)
{
无法初始化,prinft("WSADATAtartup");
return 0;
}
使用编编编通信网//WinSock
编置编非阻塞模式//Socket
int iMode=1;
retVal=ioctlsocket(sServer,FIONBIO,(u_long FAR*)&iMode);
if(retVal==SOCKET_ERROR)
{
printf("ioctlsocket failed!\n");
WSACleanup();
return -1;
}
接受客编编求//
prinft("TCP Serfer start...\n");
sockaddr_in addrClient;
int addrClientlen=sizeof(addrClient);
循编等待//
while(true)
{
sClient=accept(sServer,(sockaddr FAR*)
&addrClient,&addrClientlen);
if(INVALLD_SOCKET==sClient)
{
int err=WSAGetLastError();
if(err==WSAEWOULDBLOCK)
{
Sleep(100);
continue;
}
else
{
printf("accept failed!\n");
closesocket(sServer);
WSACleanup();
return -1;
}
}
break;
}
循编接受客编端据~直接客编端编送数命令退出//quit
while(true)
{
ZeroMemory(buf,BUF_SIZE);
retVal=recv(sClient,buf,BUFSIZ,0);
if(SOCKET_ERROR==retVal)
{
int err=WSAGetLastError();
if(err==WSAEWOULDBLOCK)
{
Sleep(100);
continue;
}
else if(err==WSAETIMEDUT||err==WSAENETDOWN)
{
printf("recv failed!\n");
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;
}
}
编取前系编编编当//
SYSTEMTIME ST;
GetLocalTime(&st);
char sDateTime[30];
sprintf(sDateTime,"%4d-%2d-%2d%2d:%
2d",st.wYear,st.wMoth,st.wDay,st.wHour,st.wMinute,st.w Second);
打印编出的信息//
printf("%s,Recv From Client [%s:%d] :%
s\n",sDateTime,inet_ntoa(addrClient,sin_addr),addrClient,sin_port,buf);
如果客编端编送“字符串~编服编器退出//quit”
if(strcmp(buf,"quit")==0)
{
retVal=send(sClient,"quit",strlen("quit"),0);
break;
}
else
{
char msg(BUF_SIZE);
sprintf(msg,"Message received-%s",buf);
while(true)
{
向服编器编送据数//
retVal=send(sClient,msg,strlen(msg),0);
if(SOCKET_ERROR==retVal)
{
int err=WSAGetLastError();
if(err==WSAEWOULDBLOCK)
{
Sleep(500);
continue;
}
else
{
printf("send failed!
\n");
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;
}
}
break;
}
}
}
最后编编做一些除工作清//
if(WSACleanup()==SOCKET_ERROR)
出编,printf("WSACleanup");
return 0;
}