towad の回答履歴

全11件中1~11件表示
  • VC6.0ソケット通信プログラムについて

    お世話になります。 VC6.0でソケット通信の社内の既存のプログラムを改善しております。 クライアントより、サーバにソケットで大量に電文を送信した時に、サーバ側の処理が重くなってしまいます。 NETSTATコマンドで確認したところ、 サーバ側では、CLOSE_WAITが大量に出力されており クライアント側では、FIN_WAIT_2が大量に出力されます。 クライアント側のFIN_WAIT_2は、時間が経つと消えるのですが、サーバ側のCLOSE_WAITは残ってしまっております。 サーバ側のEXEを再起動すると、CLOSE_WAITは消えます。 サーバ側のソケットの受信後の処理に問題があるのではと考えておりますが、何処が問題なのかわからない状態です。 コードを以下に記述致します。 WINAPI K010cListener{ /*Winsock初期化*/ WSAStartup(wVersionRequested,&wsaData); /*SOCKET作成*/ fd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP) /*ポートの設定*/ addr.sin_addr.s_addr = htonl(INADDR_ANY); addr.sin_family = AF_INET; addr.sin_port = htons(usPortNo); addrlen = sizeof(addr); /*BIND*/ bind(fd,(struct sockaddr*)&addr,addrlen) /*LISTEN*/ listen(fd,0) while(1){ /*ACCEPT*/ fd2 = accept(fd,(struct sockaddr*)&addr,&addrlen) //データ受信 waitReceiveThread(fd2, &rcv_msg); //DBオープン ConnectDB() //DB登録 AddTable(&rcv_msg) //DBクローズ CloseDB() } /*Winsock終了*/ WSACleanup(); } void waitReceiveThread(SOCKET fd, SockRcvMsg *rcv_msg) { while (1) { /*データ受信待ち*/ rcvSize = recv(fd,rcvBuf,sizeof(rcvBuf),0); if (rcvSize <= 0) { continue; } else { /* 返信電文の準備 */ memset(sndBuf,0x20,sizeof(sndBuf)); memcpy(sndBuf ,"RCMORDER00004800000000",22); /* 返信電文の送信 */ send(fd,(char*)sndBuf,sizeof(sndBuf),0); /* バッファの初期化 */ bufsize=0; memset(buf,'\0',sizeof(buf)); break; /*ループを抜ける*/ } } } 恐れ入りますが、ご教授いただければ幸いです。 宜しくお願い申し上げます。

    • ベストアンサー
    • noname#164045
    • C・C++・C#
    • 回答数1
  • VC 2008 C# 複数プロジェクトの連携

    同一ソリューションになる複数プロジェクトで連携する方法を教えてください。 調べるためのヒントをいただければと思います。 プロジェクトが A,B,C と三つ作成予定です。 A,B,C 単体で利用できるプログラムとして作成します。 また B,C は A から呼び出しされる形で起動させる場合があります。 その際に A は B,C に必要な情報を渡します。 B,C で作業を完了すると A に結果を返します。 以上のことをやりたいと思っています。 今の知識でやろうとすると、A,B,C 単体で動かすのはそのままでOK。 B,CがAからの呼び出しかどうかを、起動時の引数などで判断。 呼び出し軌道の場合は、引き渡す情報を一時ファイルでやりとりする。 という形になりそうです。 基本的に A から B,C を呼び出した時点で制御はB,Cに移行してAでは作業できないようにしたいと思っています。 一時ファイルで作成するのもよいのですが、プロジェクト内で別なフォームを呼び出すような感じで処理できないか調べているところです。 どのような情報を調べていけばよいかよろしくお願いします。

  • VC 2008 C# 複数プロジェクトの連携

    同一ソリューションになる複数プロジェクトで連携する方法を教えてください。 調べるためのヒントをいただければと思います。 プロジェクトが A,B,C と三つ作成予定です。 A,B,C 単体で利用できるプログラムとして作成します。 また B,C は A から呼び出しされる形で起動させる場合があります。 その際に A は B,C に必要な情報を渡します。 B,C で作業を完了すると A に結果を返します。 以上のことをやりたいと思っています。 今の知識でやろうとすると、A,B,C 単体で動かすのはそのままでOK。 B,CがAからの呼び出しかどうかを、起動時の引数などで判断。 呼び出し軌道の場合は、引き渡す情報を一時ファイルでやりとりする。 という形になりそうです。 基本的に A から B,C を呼び出した時点で制御はB,Cに移行してAでは作業できないようにしたいと思っています。 一時ファイルで作成するのもよいのですが、プロジェクト内で別なフォームを呼び出すような感じで処理できないか調べているところです。 どのような情報を調べていけばよいかよろしくお願いします。

  • [C#]別フォームとの連動について

    Visual C# 2008 を使っています。 子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 といったプログラムを作成しているところです。 しかし、子フォーム上のボタンのクリックイベントハンドラの中に、 親フォームのリストボックスへ内容を追加するプログラムを書くと、「現在のコンテキスト内には存在しません」とエラーが出てきます。 試してみたことは ・子フォームのコントロールをprivateからpublicに変えた ・子フォーム内から親フォームを参照するためのポインタを指定 ・子フォームの定義部に親フォーム参照のためのポインタを指定 です。 誰か解決策を教えていただけないでしょうか? よろしくお願いします。

  • [C#]別フォームとの連動について

    Visual C# 2008 を使っています。 子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 といったプログラムを作成しているところです。 しかし、子フォーム上のボタンのクリックイベントハンドラの中に、 親フォームのリストボックスへ内容を追加するプログラムを書くと、「現在のコンテキスト内には存在しません」とエラーが出てきます。 試してみたことは ・子フォームのコントロールをprivateからpublicに変えた ・子フォーム内から親フォームを参照するためのポインタを指定 ・子フォームの定義部に親フォーム参照のためのポインタを指定 です。 誰か解決策を教えていただけないでしょうか? よろしくお願いします。

  • [C#]別フォームとの連動について

    Visual C# 2008 を使っています。 子フォームのテキストボックスに書かれた内容を、子フォーム上のボタンを押すことで、親フォームのリストボックスに追加する。 といったプログラムを作成しているところです。 しかし、子フォーム上のボタンのクリックイベントハンドラの中に、 親フォームのリストボックスへ内容を追加するプログラムを書くと、「現在のコンテキスト内には存在しません」とエラーが出てきます。 試してみたことは ・子フォームのコントロールをprivateからpublicに変えた ・子フォーム内から親フォームを参照するためのポインタを指定 ・子フォームの定義部に親フォーム参照のためのポインタを指定 です。 誰か解決策を教えていただけないでしょうか? よろしくお願いします。

  • C言語のプログラムについて

    C言語のプログラムについて 3桁の自然数の中で、自分自身を含めた約数が奇数になるものがいくつあるかを求めるプログラムを作りたいのですが、swich文を使って、6通りの方法で出そうとしていまして、 while 文、 for文、 do while文に加え、 for文のを、1つの関数として独立させたもの、 さらに、for文のを重ループ部分のそれぞれのループに対応して、2つの関数として独立させたもの、 そして、この2つの関数のどちらともをループを用いずに再帰呼び出しを用いたもの の6通りで出したいのですが、swich文を使うところは自力でできたのですが、あとの6つそれぞれのプログラムの組み方がわかりません。 教えていただけないでしょうか?ややこしい書き方をしてすいません・・・。

  • C言語のプログラムについて

    C言語のプログラムについて 3桁の自然数の中で、自分自身を含めた約数が奇数になるものがいくつあるかを求めるプログラムを作りたいのですが、swich文を使って、6通りの方法で出そうとしていまして、 while 文、 for文、 do while文に加え、 for文のを、1つの関数として独立させたもの、 さらに、for文のを重ループ部分のそれぞれのループに対応して、2つの関数として独立させたもの、 そして、この2つの関数のどちらともをループを用いずに再帰呼び出しを用いたもの の6通りで出したいのですが、swich文を使うところは自力でできたのですが、あとの6つそれぞれのプログラムの組み方がわかりません。 教えていただけないでしょうか?ややこしい書き方をしてすいません・・・。

  • c 言語初心者です。

    c 言語初心者です。 私は下記の構造体配列をつくりました。 しかしバッファオーバーランが起きてエラーが起きてしまいます。 ヒープ領域に問題があるのかもしれませんが、プログラム上どこに原因があるのかが良くわかりません。 どなたかよろしければ教えていただけないでしょうか? #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include<memory.h> struct s { int i; char name[25]; char huri[25]; char num[23]; }; void touroku(struct s *p); void hyouji(struct s *p); int main(void) { struct s data; touroku( &data ); hyouji( &data ); //data.num *= 1; /* dataはポインタではないのでドット演算子 */ hyouji( &data ); return 0; } /* 構造体のメンバを設定する */ void touroku(struct s *p) { int i=0; for(i=1;i<3;i++) { printf( "25文字以内の名前を入力して下さい\n" ); memset(p[i].name, 0, sizeof(p[i].name)); fgets( p[i].name,sizeof(p[i].name) , stdin ); if(strchr(p[i].name,'\n')==NULL)//バッファ処理 { while(getchar() != '\n'); } if(p[i].name[strlen(p[i].name)-1]=='\n')//改行解除 { p[i].name[strlen(p[i].name)-1] = '\0'; } printf("25文字以内のふりがなを入力してください\n"); memset(p[i].huri, 0, sizeof(p[i].huri)); fgets(p[i].huri,sizeof(p[i].huri),stdin); if(strchr(p[i].huri,'\n')==NULL)//バッファ処理 { while(getchar() != '\n'); } if(p[i].huri[strlen(p[i].huri)-1]=='\n')//改行解除 { p[i].huri[strlen(p[i].huri)-1] = '\0'; } printf( "整数を入力して下さい\n" ); memset(p[i].num, 0, sizeof(p[i].num)); fgets(p[i].num,sizeof(p[i].num),stdin ); if(strchr(p[i].num,'\n')==NULL)//バッファ処理 { while(getchar() != '\n'); } if(p[i].num[strlen(p[i].num)-1]=='\n')//改行解除 { p[i].num[strlen(p[i].num)-1] = '\0'; } } } /* 構造体のメンバを出力する */ void hyouji(struct s *p) { int i=0; for(i=1;i<3;i++) printf("%-8s %3s %3s %d\n" ,p[i].name , p[i].huri , p[i].num , i); puts("----------------------------------------------------------------"); return ; }

  • プログラミングについて質問です。

    プログラミングについて質問です。 ゲームのプログラミングの一部を作っているところで たとえば H13 D5 C2 D6 H1 S12 と表示されているとき、D6とキーボードで入力すると、その文字だけ消えて、 H13 D5 C2 H1 S12 と表示しなおされる(全ての文字が消えるまで繰り返す)、というプログラミングを書きたいと思っています。 しかしどうやったらいいのかわからないので、教えていただけたら嬉しいです。 使っているのはC++言語です。 授業でハングマンのゲームをやったときに キーボード入力された文字が、配列の文字と一致するか調べる、というものをやったので それが応用できるかなと思うのですが… そのハングマンのプログラミングは #include <iostream> #include <string.h> using namespace std; void tryAndSee() { char x[100], y[100], c; strcpy(x, "hippopotamus"); strcpy(y, "____________"); cout << "character?"; cin >> c; for(int i=0;i<100;i++){ if(x[i]=='\0'){ break; } else if(x[i]==c){ y[i]=c; } } cout << y << "\n"; } main() { tryAndSee(); } です。 ほんとに初心者なので、解説付きで教えていただけると嬉しいです。 よろしくお願いします。

  • 特定の文字列が一致する行から、文字列を抽出する方法

    ファイルから、特定の文字列を検索し、その文字列に対応する文字列を取得したいのですが、どなたか方法を教えていただけないでしょうか? 処理: test.txt中に以下の文字列が記載されています。 ----- TEST011:FILE00 TEST01:FILE01 TEST02:FILE02 XTEST01:FILE01 XTEST02:FILE02 ----- test.txtから、TEST01に対応する文字列FILE01を取得したいです。 当初、strchrを利用すれば良いかと考えていたのですが、 TEST011の行が先に抽出されてしまい、うまくいきません。 どなたか解決方法を教えていただけないでしょうか。