標籤:style blog color os io ar 檔案 art div
最近在做一個flash小遊戲,
眾所周知,flash串連伺服器socket的時候,需要向伺服器請求策略檔案。
以下是一個簡單的策略檔案伺服器的代碼c++:
1 #include <Winsock2.h> 2 #include <stdio.h> 3 #pragma comment(lib,"WS2_32.lib") 4 #define _CRT_SECURE_NO_WARNINGS 5 void main() 6 { 7 WSADATA wsd; 8 SOCKET server; //伺服器socket 9 SOCKADDR_IN addrSrv;10 SOCKADDR_IN addrClient;11 SOCKET client; //串連的用戶端socket12 char szPolicy[1024] = "";13 strcat_s(szPolicy, 1024, "<?xml version=‘1.0‘?>");14 strcat_s(szPolicy, 1024, "<cross-domain-policy>");15 strcat_s(szPolicy, 1024, "<site-control permitted-cross-domain-policies=‘all‘/>");16 strcat_s(szPolicy, 1024, "<allow-access-from domain=‘*‘ to-ports=‘*‘/>");17 strcat_s(szPolicy, 1024, "</cross-domain-policy>");18 int len;19 if (WSAStartup(MAKEWORD(2, 2), &wsd) != 0)20 {21 printf("start up failed!\n");22 return;23 }24 server = socket(AF_INET, SOCK_STREAM, 0); //建立socket25 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); //設定地址26 addrSrv.sin_family = AF_INET;27 addrSrv.sin_port = htons(843); //設定連接埠號碼28 bind(server, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR)); //綁定29 printf("flash策略檔案伺服器已啟動!\n"); 30 31 listen(server, 5); //設定最多串連數32 int count = 0;33 len = sizeof(SOCKADDR);34 while (1)35 {36 client = accept(server, (SOCKADDR*)&addrClient, &len); //接收用戶端串連37 char buff[1024] = ""; 38 recv(client, buff, 1024, 0); 39 szPolicy[strlen(szPolicy)] = ‘\0‘;40 send(client, szPolicy, strlen(szPolicy), 0); 41 closesocket(client);42 count++;43 printf("已成功返回%d個用戶端!", count);44 }45 WSACleanup();46 }
簡單的flash策略檔案伺服器!