大佬教程收集整理的这篇文章主要介绍了Silverlight网页客户端测试服务器程序 服务器测试程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
因为Silverlight的安全机制,首先要访问服务器的943端口,接受策略文件比对,才能进行正常的Socket通信,所以服务器测试程序要开两个端口
943和4530(可以是其他的,不过有范围限定),两个线程。
/* if(myHandlE) SuspendThread(myHandlE);//挂起线程 if(myHandlE) ResumeThread(myHandlE);//恢复线程 if(myHandlE) TerminateThread(myHandle,0);//终止线程 */ #include <windows.h> #include <iostream> #include <winsock2.h> //#include <socket.h> using namespace std; DWORD WINAPI acceptPoly(LPVOID argv);//声明一个线程函数 DWORD WINAPI acceptDate(LPVOID argv); SOCKET m_servSocketPoly; //Poly Server SOCKET m_servSocket; SOCKET m_servSocketDate; //Date Server sockaddr_in clientAddr; //Date Client sockaddr_in polyAddr; //Poly Client HANDLE myPolyThread; HANDLE myDateThread; int main(int argc,char *argv[]) { WSADATA wsa = {0}; if(WSAStartup(MAKEWORD(2,2),&wsa)) cout<<"DLL库失败\n"; String s; myPolyThread = CreateThread(NULL,acceptPoly,(LPVOID)0,null);//创建线程 myDateThread = CreateThread(NULL,acceptDate,null);//创建线程 SuspendThread(myDateThread);//挂起线程 while(1); return 0; } DWORD WINAPI acceptPoly(LPVOID argv) { if((m_servSocketPoly = socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET) cout<<"Poly Socket Creat Failed!\n"; sockaddr_in serverAddr; memset((char*)&serverAddr,sizeof(serverAddr)); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(943); serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(m_servSocketPoly,(struct sockaddr*)&serverAddr,sizeof(serverAddr))) cout<<"Poly Socket bind Failed!\n"; if(listen(m_servSocketPoly,8)!= 0) cout<<"Poly Socket Listen Failed!\n"; cout<<"Poly Prepared ALL success!"<<endl; while(1) { char recvbuf[1000]; memset(recvbuf,1000); FILE *pfile = fopen("PolicyFile.xml","r"); assert(pfile != null); int lenAddr = sizeof(polyAddr); SOCKET _policy = accept(m_servSocketPoly,(struct sockaddr*)&polyAddr,&lenAddr); int len = recv(_policy,recvbuf,1000,0); if (memcmp(recvbuf,"<policy-file-request/>",sizeof("<policy-file-request/>"))==0) { cout<<"Send Poly success!\n"; memset(recvbuf,1000); int ReadCount = fread(recvbuf,sizeof(recvbuf),1,pfilE); send(_policy,strlen(recvbuf),0); cout<<ReadCount<<" \n"<<recvbuf<<endl; fclose(pfilE); ResumeThread(myDateThread); SuspendThread(myPolyThread);//挂起线程 } } } DWORD WINAPI acceptDate(LPVOID argv) ////Date { char recvbuf[1000]; memset(recvbuf,1000); if((m_servSocketDate = socket(AF_INET,0))==INVALID_SOCKET) cout<<"Date Socket Creat Failed!\n"; sockaddr_in serverAddr; memset((char*)&serverAddr,sizeof(serverAddr)); serverAddr.sin_family = AF_INET; serverAddr.sin_port = htons(4530); serverAddr.sin_addr.s_addr = htonl(INADDR_ANY); if(bind(m_servSocketDate,sizeof(serverAddr))) cout<<"Date Socket bind Failed!\n"; if(listen(m_servSocketDate,8)!= 0) cout<<"Date Socket Listen Failed!\n"; cout<<"Date Prepared ALL success!"<<endl; while(1) { int lenAddr = sizeof(clientAddr); SOCKET _policy = accept(m_servSocketDate,(struct sockaddr*)&clientAddr,&lenAddr); for(;;) { cout<<"等待客户端数据\n"; int len = recv(_policy,0); cout<<"The length of Accept: "<<len<<endl; cout<<recvbuf<<endl; /*cout<<"该我发数据了:"<<endl; memset(recvbuf,1000); gets(recvbuf); send(_policy,0); */ } } }
策略文件
<?xml version="1.0" encoding ="utf-8"?> <access-policy> <cross-domain-access> <policy> <allow-from> <domain uri="*" /> </allow-from> <grant-to> <socket-resource port="4502-4534" protocol="tcp" /> </grant-to> </policy> </cross-domain-access> </access-policy>
以上是大佬教程为你收集整理的Silverlight网页客户端测试服务器程序 服务器测试程序全部内容,希望文章能够帮你解决Silverlight网页客户端测试服务器程序 服务器测试程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。