FLASH安全沙箱服务器端程序代码(跨平台,C++/JAVA)
Main.cpp (Win/*nix)
#include "FlexSecurityBox.h"
int main(int argc, char ** argv) {
char * address;
short port;
if (argc == 2)
{
address = "0.0.0.0";
port = atoi(argv[1]);
} else if (argc == 3)
{
address = argv[1];
port = atoi(argv[2]);
} else
{
printf("You have not to set listening port, we set default port is 843.\n");
address = "0.0.0.0";
port = 843;
}
FlexSecurityBox flexsecuritybox(address, port);
if (!flexsecuritybox.Open() )
{
printf("Socket Initialize Error");
exit(-1);
}
else
flexsecuritybox.DoWork();
}
FlexSecurityBox.h (Win平台)
#ifndef _FLEXSECURITYBOX_H
#define _FLEXSECURITYBOX_H
#include <winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
class FlexSecurityBox
{
private:
const char * ListenAddress;
const short Port;
bool IsOpened;
SOCKET sockSrv;
SOCKET sockConn;
SOCKADDR_IN addrSrv;
public:
FlexSecurityBox(const char * listenAddress, const short port) : ListenAddress(listenAddress), Port(port), IsOpened(false)
{
}
bool Open()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化套接字
if ( err != 0 )
{
return IsOpened = false;
}
if ( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return IsOpened = false;
}
if ((sockSrv = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("Socket create error!\n");
return IsOpened = false;
}
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(Port);
if (strcmp(ListenAddress, "0.0.0.0"))
{
struct hostent * hostname = gethostbyname(ListenAddress);
if (hostname != 0)
memcpy(&addrSrv.sin_addr.s_addr, hostname->h_addr_list[0], hostname->h_length);
}
if (bind(so
相关文档:
当读者有一定c/c++基础
推荐的阅读顺序:
level 1
从<<essential c++>>开始,短小精悍,可以对c++能进一步了解其特性
以<<c++ primer>>作字典和课外读物,因为太厚不可能一口气看完
level 2
然后从<<effective c++>>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻
......
高质量C++编程 Note
定义1:能长期稳定地编写出高质量程序的程序员称为编程老手。
定义2:能长期稳定地编写出高难度、高质量程序的程序员称为编程高手。
版权和版本的声明位于头文件和定义文件的开头 ,主要内容有:
(1)版权信息。
(2)文件名称,标识符,摘要。
(3)当前版本号,作者/修改者,完成日期。
......
Java线程是Java语言中一个非常重要的部分,Java5之前,多线程的语言支持还是比较弱的,内容也较少,写一个复杂的多线程程序是相当有挑战性的。
在Java5以后,Java对多线程做了很多扩展,扩展部分称之为并发包。这部分内容大大增强了Java多线程编程的能力,通过使用Java5线程新特征的API,可以很容易的做出复杂的 ......
今天看了一位前辈的文章http://blog.csdn.net/psyl/archive/2010/01/24/5250562.aspx
第一题就不会。哎,晕啊。基础太差,需要加强。
Google了一下 http://www.ibm.com/developerworks/cn/java/l-javaassertion/index.html 这篇文章介绍assertion,感觉不错,转下地址。
Spring也提供了断言的功能
org.springframew ......
●已知圆的面积Area=π*r*r,求半径r。
import javax.swing.JOptionPane;
public class T6 {
public static void main(String args[]) {
String s = JOptionPane.showInputDialog("请输入圆面积:");
double Area = Double.parseDouble(s);
double r;
r = Math.sqrt(Area / M ......