先週金曜に、Juliusクライアントの「いい加減版」をネットに上げました。卒研の参考程度と考え、わざと作り込みませんでした。こんなマニアックな世界に関心のある人は、いないだろうと思っていましたが、今週世の中には、あの「いいかげん版」で悩まれている方がいらっしゃることが分かりました。ネットに上げる時は、きちんとしなくてはいけないと反省し、急遽、完成版を作りました。
===
(Visual Studio C++ 2010を利用する場合をイメージしています)
1.新規に[空のプロジェクト]を追加する。
2.ソースファイルを追加する。
1)[プロジェクト]-[新規項目の追加][C++ファイル(.cpp)]を選択する。
3.リンカにソケット通信用のライブラリを追加する。
1)[プロジェクト]-[xxxのプロパティ]を選択する。
※xxxには、プロジェクト名が入ります。
2)画面左側のツリーから[構成プロパティ]-[リンカ]-[コマンドライン]を選択する。
3)追加のオプションに以下を追加する。
ws2_32.lib
//Julius Client Windows版
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
int main(void ){
SOCKET s; //ソケット
//接続するサーバの情報
struct sockaddr_in dest;
//接続するサーバのIPアドレス
char destination[] = “127.0.0.1”;
char buffer[4096];char tmp[4096];char tmp1[4096];
char recog[20][50]; int recogend=0;
char *st1;
char *p, *p1;
//ソケット通信の準備
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);
//接続先(サーバ)のアドレス情報を設定
memset(&dest, 0, sizeof(dest));
//ポート番号はサーバプログラムと共通
dest.sin_port = htons(10500);
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr(destination);
//ソケットの生成
s = socket(PF_INET, SOCK_STREAM, 0);
//サーバへの接続
if(connect(s, ( struct sockaddr *) &dest, sizeof (dest))){
printf(“%sに接続できませんでした\n” , destination);
return -1;
}
printf(“%sに接続しました\n”, destination);
for(;;){
//サーバからデータを受信
recogend=0;
recv(s, buffer, 4096, 0);
st1=strstr(buffer,”WORD=”);
if(st1) {
while ((p = strstr(buffer, “WORD=”)) != NULL) {
p += 6;
strcpy(tmp,p);
strcpy(tmp1,p);
p1=strstr(tmp1,”\””);
*p1= ‘\0’;
strcpy(recog[recogend],tmp1);
recogend++;
strcpy(buffer,tmp);
}
}
for( int k=0; k<recogend;k++){
printf(“%s\n”,recog[k]);
}
}
// Windows でのソケットの終了
closesocket(s);
WSACleanup();
return 0;
}
===
昨日の「100万円当たるクジ」の話をもう少し考えてみたんですが。
あれは、「貧富の差は拡大するものだ」ということを示しているように思えます。50%の確率で100万円が当たるクジが1万円で売られていても、「1万円が大金」の人は怖くて買えません。一方、金持ちは躊躇なく買うでしょう。金持ちは理論通りの買い物をして得をし、貧乏な人は恐怖に左右されチャンスを逃す、ってパターンですね。
野球やサッカーでも、何点もリードしているチームは色々な手が打てる、って言うのと同じかもしれませんね。
===
どこの山だかわかりますか?
キリマンジャロです。今朝の富士山は美しかったけれど、キリマンジャロも美しいですね(クリックで拡大できます)。