Nanashi-softプログラマ専用Windows gcc SDL


◇Windowsでgcc+SDL -SDL_netでネットワーク-

SDLにネットワーク機能を追加する、ライブラリの1つが SDL_netです
接続するだけのシンプルな設計の為、相手のサーバと全て自力で会話しなければならないのですが、余計な事をしない分ゲームで使用するには適しています

○ダウンロード

SDL_net 1.2
http://www.libsdl.org/projects/SDL_net/
ここから、SDL_net-1.2.7.tar.gzをダウンロードします

○インストール

c:\cygwin\home\ユーザ名、以下にファイルを置いて

$ tar zxf SDL_net-1.2.7.tar.gz
$ cd SDL_net-1.2.7
$ ./configure
$ make
$ make install

で行います

○使い方の基本

・インクルードする

#include "SDL_net.h"


・初期化する(SDL_Initより後で)

SDLNet_Init


〜ここで通信する〜

・終了処理する(SDL_Quitより前で)

SDLNet_Quit();

○TCP通信の基本

・サーバーIP情報を生成

IPaddress ip;
SDLNet_ResolveHost(&ip,「サーバーURLかIPアドレス」,「ポート番号」)

※この時点ではまだ接続していません

・ソケットを開く

TCPsocket sock= SDLNet_TCP_Open(&ip);


・メッセージを送信する

SDLNet_TCP_Send(sock,「メッセージバイト列」,「サイズ」);


・メッセージを受信する

char inmsg[256];
int reclen= SDLNet_TCP_Recv(sock, inmsg, sizeof(inmsg));


・ソケットを閉じる

SDLNet_TCP_Close(sock);

○ビルド時のオプション

SDLNetを使用する事を明示しなければなりません
リンク時に -lSDL_netを付けます

・コマンドラインの場合

gcc -o test test.c `sdl-config --cflags --libs` -lSDL_net


・Makefile記述の場合

LIBS	= `sdl-config --libs` -lSDL_net

○プログラム例

#include "SDL.h"
#include "SDL_net.h"

int main(int argc,char *argv[]){
  SDL_Init(SDL_INIT_VIDEO);
  SDLNet_Init();

  IPaddress ip;
  SDLNet_ResolveHost(&ip, "www.google.co.jp", 80);

  TCPsocket sock= SDLNet_TCP_Open(&ip);

  SDLNet_TCP_Send(sock, "GET /\n", 6);

  char inmsg[256];
  int reclen= SDLNet_TCP_Recv(sock, inmsg, sizeof(inmsg));

  SDLNet_TCP_Close(sock);

  printf("%s\n", inmsg);

  SDLNet_Quit();
  SDL_Quit();
}



TOPプログラマ専用Windows gcc SDL