silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Silverlight网页客户端测试服务器程序 服务器测试程序大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

       因为Silverlight的安全机制,首先要访问服务器的943端口,接受策略文件比对,才能进行正常的Socket通信,所以服务器测试程序要开两个端口 943和4530(可以是其他的,不过有范围限定),两个线程。 /* if(myHandlE) SuspendThread(myHandlE);//挂起线程 if(myHandlE) ResumeThread(myHandl

       因为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,请注明来意。