c++とflashを併用してゲームサーバを書く


c++flashはよく知られているものですが、自分で自分のゲームサーバーを作ることを考えたことがありますか?実は入門段階は本当に人々が想像していたほど難しくありません.後でスレッドやサーバ最適化などのコンテンツがありますが、しかしそれらはすべて后の话で、あなた自身の补给と进歩を通じてすべて克服することができると信じて、あなたは自由にコンパイラを选ぶことができますここはvcをダウンロードしたくないためです(大きすぎます)だからもう一つの業界でも有名なコンパイラDevを紹介します.ネット上でクライアントにダウンロードできるのはもちろんflashです.)まずDevに新しいプロジェクトを新規作成します.私のところはSocketと申します.それからConsoleを生成します(コンソールアプリケーションはここが最初なので些細なグラフィックインタフェースを避けてこれを選択すれば十分です).コンパイラが対応するコードを生成しているのがわかります
#include <iostream> //               
using namespace std;// std               std::   
int main(int argc, char *argv[])  //     
{
    system("PAUSE");//                           
    return EXIT_SUCCESS;//  
}

基本的なフレームワークは、これらの骨がすでに存在していることです.今、肉を追加します.まず、ネットワークプログラミングに必要な頭ファイルに参加します.
#include <winsock2.h>

   main       
WSADATA wsaData;//WSADATA              dll       
SOCKET listeningSocket;//     socket
SOCKET newConnection;//     socket
SOCKADDR_IN serverAddr;//        
SOCKADDR_IN clientAddr;//        
char message[256];//             

 
に続く
//  dll  
WSAStartup(MAKEWORD(2,2),&wsaData);
//                    TCP  
listeningSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
//    SOCKADDR_IN  ,    bind  30006        
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(30006);
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);

//  bind               
bind(listeningSocket,(SOCKADDR*)(&(serverAddr)),sizeof(serverAddr));
//                  5
listen(listeningSocket,5);

//struct sockaddr_in     
int ClientAddrLen = sizeof(struct sockaddr_in);
//              
//     socket
//  1     socket
//  2             
//  3  2                  


newConnection = accept(listeningSocket,(SOCKADDR*)(&clientAddr),&ClientAddrLen);

//          flash                   
// flash          "socket is ok"           
//flash            

// flash              socket  2     
// 3         4       0
send(newConnection,"socket is ok\0",(int)strlen("socket is ok\0")+1,0);

//                     
//         soclet  2    char    
// 3           4      0   2           0
recv(newConnection,message,256,0);
//        
cout<<"flash      "<<message<<endl;

//    socket   
closesocket(newConnection);
closesocket(listeningSocket);
WSACleanup();

crtl+f 9でコンパイルするのはおかしいですが、どうして間違いがありませんか?下のコンパイラはツールでコンパイルオプションを選択して下の接続コマンドラインにチェックを入れて下に入力する必要があります-lwsock 32はokをコンパイルしてcrtl+f 10プログラムで実行しました今flashを書きますflash私は簡単に興味のある友达を持ってよく研究しています:)flash AS 3のプロジェクトを創立します
import flash.utils.ByteArray;
import flash.net.Socket;
var socket:Socket = new Socket();
socket.connect("127.0.0.1",30006);
socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );
var byteArray:ByteArray = new ByteArray();
function onSocketData(event:ProgressEvent ):void {
    socket.readBytes(byteArray);
    trace("c++     :"+byteArray);
    socket.writeUTFBytes("good bye");
    socket.flush();

}

 
フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフでもjavaで以上のコードを書くのはもっと簡単ですね:)そして、私がjavaの簡単なsocketを書いているのを信じないのが分かりやすいです.