Vidocq の回答履歴

全15件中1~15件表示
  • C言語でオススメの本

    初めてC言語をやろうと思っています わかりやすく、オススメの本などはありますか?

  • recvfrom関数の戻り値がおかしいんですが…

    初めて投稿させていただきます。 現在、Cにてあるクライアントプログラムを作成している者です。 構成は以下の通り。 《構成》 サーバ:PLC(シーケンサと書けば大体の方はわかりますか?) クライアント:Linux Ubuntu9.10 通信方式:TCP/IP 《開発環境》 言語:C IDE:eclipse コンパイラ:gcc 4.x 《質問》 クライアントプログラムからASCIIデータをサーバへ送信し、サーバはクライアントから受信したASCIIデータに応答し、ASCIIデータ伝文を返信してきます。 このサーバからのASCIIデータ応答伝文をrecvfrom関数で受信し、応答伝文のASCIIデータを'buf'変数に格納し、標準出力関数で表示させるといったプログラムです。 このプログラムでは、ユーザ関数内でrecvfrom関数をコールしているのですが、ユーザ関数内でrecvfrom関数をコールした場合、受信データの先頭4byteしか受信できておらず、困っています。 ちなみに、main関数内でrecvfrom関数をコールすると、応答伝文全体のデータをきちんと受信できています。 ちなみに、サーバの応答ASCIIデータ伝文は、仕様通り(期待通り)のデータが返信されています。(ネットワークモニタ:wiresharkで確認済み) recvfrom関数をコールする場所によって、変数に格納するデータ量が変わるといったことがあるのでしょうか。 ソースの一部を添付します。 参照の上、アドバイス等いただけないでしょうか。 《ソース》 ◆mainソース #include ... :<-#include定義 int main{   :<-変数定義、変数初期値代入処理等 ユーザ関数1()コール<-ユーザ関数1内でソケット通信処理を動作させている。 ユーザ関数2()コール<-同上 } ◆ユーザ関数用ソース #include...   :<-#include定義 unsigned char ユーザ関数名1;<-ユーザ関数プロトタイプ宣言 unsigned char ユーザ関数名2:<-同上 char 変数1[5]; char s_buf[4096]; char buf[4096]; /*データ受信用バッファ*/ char 変数2[256]; size_t len; long l; int sock_fd; /*ソケット用ファイル記述子*/ struct sockaddr_in cl_addr; /*CPU用ソケットアドレス*/ socklen_t cl_len = 0; /*cl_addrのサイズ格納用*/ ssize_t n = 0; unsigned char ユーザ関数1(char *引数1,…char *引数5){   :送信データ生成処理 //* ソケット作成 *// if ((sock_fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); return 1;   } //* 接続先定義*// memset(&cl_addr, 0, sizeof cl_addr); cl_addr.sin_family  = AF_INET; /*プロトコル定義*/ cl_addr.sin_addr.s_addr = inet_addr("***.***.***.***"); /*IPアドレス定義*/ cl_addr.sin_port  = htons(****); /*Port定義*/ //* 接続 *// if (connect(sock_fd, (struct sockaddr *)&cl_addr, sizeof cl_addr) < 0) { perror("connect"); return 1;   } //* データ送信 *// if(send(sock_fd, s_buf, strlen(s_buf), 0) < 0){ fprintf(stderr, "could not send message : %s\n", s_buf); exit(EXIT_FAILURE); } printf("\nSendMessage\n%s\n",s_buf); //* データ受信 *// cl_len = sizeof cl_addr; //*↓↓このrecvfrom関数でbuf内にサーバ応答伝文の先頭4byteのみが格納されている。↓↓*// if (( n = recvfrom(sock_fd, buf, sizeof buf,0, (struct sockaddr *)&cl_addr, &cl_len)) < 0) { perror("recvfrom"); return 1; } fprintf(stderr ,"TCP from addr = %s, port = %d\n", inet_ntoa(cl_addr.sin_addr), ntohs(cl_addr.sin_port) );

    • 締切済み
    • noname#107905
    • C・C++・C#
    • 回答数6
  • recvfrom関数の戻り値がおかしいんですが…

    初めて投稿させていただきます。 現在、Cにてあるクライアントプログラムを作成している者です。 構成は以下の通り。 《構成》 サーバ:PLC(シーケンサと書けば大体の方はわかりますか?) クライアント:Linux Ubuntu9.10 通信方式:TCP/IP 《開発環境》 言語:C IDE:eclipse コンパイラ:gcc 4.x 《質問》 クライアントプログラムからASCIIデータをサーバへ送信し、サーバはクライアントから受信したASCIIデータに応答し、ASCIIデータ伝文を返信してきます。 このサーバからのASCIIデータ応答伝文をrecvfrom関数で受信し、応答伝文のASCIIデータを'buf'変数に格納し、標準出力関数で表示させるといったプログラムです。 このプログラムでは、ユーザ関数内でrecvfrom関数をコールしているのですが、ユーザ関数内でrecvfrom関数をコールした場合、受信データの先頭4byteしか受信できておらず、困っています。 ちなみに、main関数内でrecvfrom関数をコールすると、応答伝文全体のデータをきちんと受信できています。 ちなみに、サーバの応答ASCIIデータ伝文は、仕様通り(期待通り)のデータが返信されています。(ネットワークモニタ:wiresharkで確認済み) recvfrom関数をコールする場所によって、変数に格納するデータ量が変わるといったことがあるのでしょうか。 ソースの一部を添付します。 参照の上、アドバイス等いただけないでしょうか。 《ソース》 ◆mainソース #include ... :<-#include定義 int main{   :<-変数定義、変数初期値代入処理等 ユーザ関数1()コール<-ユーザ関数1内でソケット通信処理を動作させている。 ユーザ関数2()コール<-同上 } ◆ユーザ関数用ソース #include...   :<-#include定義 unsigned char ユーザ関数名1;<-ユーザ関数プロトタイプ宣言 unsigned char ユーザ関数名2:<-同上 char 変数1[5]; char s_buf[4096]; char buf[4096]; /*データ受信用バッファ*/ char 変数2[256]; size_t len; long l; int sock_fd; /*ソケット用ファイル記述子*/ struct sockaddr_in cl_addr; /*CPU用ソケットアドレス*/ socklen_t cl_len = 0; /*cl_addrのサイズ格納用*/ ssize_t n = 0; unsigned char ユーザ関数1(char *引数1,…char *引数5){   :送信データ生成処理 //* ソケット作成 *// if ((sock_fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); return 1;   } //* 接続先定義*// memset(&cl_addr, 0, sizeof cl_addr); cl_addr.sin_family  = AF_INET; /*プロトコル定義*/ cl_addr.sin_addr.s_addr = inet_addr("***.***.***.***"); /*IPアドレス定義*/ cl_addr.sin_port  = htons(****); /*Port定義*/ //* 接続 *// if (connect(sock_fd, (struct sockaddr *)&cl_addr, sizeof cl_addr) < 0) { perror("connect"); return 1;   } //* データ送信 *// if(send(sock_fd, s_buf, strlen(s_buf), 0) < 0){ fprintf(stderr, "could not send message : %s\n", s_buf); exit(EXIT_FAILURE); } printf("\nSendMessage\n%s\n",s_buf); //* データ受信 *// cl_len = sizeof cl_addr; //*↓↓このrecvfrom関数でbuf内にサーバ応答伝文の先頭4byteのみが格納されている。↓↓*// if (( n = recvfrom(sock_fd, buf, sizeof buf,0, (struct sockaddr *)&cl_addr, &cl_len)) < 0) { perror("recvfrom"); return 1; } fprintf(stderr ,"TCP from addr = %s, port = %d\n", inet_ntoa(cl_addr.sin_addr), ntohs(cl_addr.sin_port) );

    • 締切済み
    • noname#107905
    • C・C++・C#
    • 回答数6
  • recvfrom関数の戻り値がおかしいんですが…

    初めて投稿させていただきます。 現在、Cにてあるクライアントプログラムを作成している者です。 構成は以下の通り。 《構成》 サーバ:PLC(シーケンサと書けば大体の方はわかりますか?) クライアント:Linux Ubuntu9.10 通信方式:TCP/IP 《開発環境》 言語:C IDE:eclipse コンパイラ:gcc 4.x 《質問》 クライアントプログラムからASCIIデータをサーバへ送信し、サーバはクライアントから受信したASCIIデータに応答し、ASCIIデータ伝文を返信してきます。 このサーバからのASCIIデータ応答伝文をrecvfrom関数で受信し、応答伝文のASCIIデータを'buf'変数に格納し、標準出力関数で表示させるといったプログラムです。 このプログラムでは、ユーザ関数内でrecvfrom関数をコールしているのですが、ユーザ関数内でrecvfrom関数をコールした場合、受信データの先頭4byteしか受信できておらず、困っています。 ちなみに、main関数内でrecvfrom関数をコールすると、応答伝文全体のデータをきちんと受信できています。 ちなみに、サーバの応答ASCIIデータ伝文は、仕様通り(期待通り)のデータが返信されています。(ネットワークモニタ:wiresharkで確認済み) recvfrom関数をコールする場所によって、変数に格納するデータ量が変わるといったことがあるのでしょうか。 ソースの一部を添付します。 参照の上、アドバイス等いただけないでしょうか。 《ソース》 ◆mainソース #include ... :<-#include定義 int main{   :<-変数定義、変数初期値代入処理等 ユーザ関数1()コール<-ユーザ関数1内でソケット通信処理を動作させている。 ユーザ関数2()コール<-同上 } ◆ユーザ関数用ソース #include...   :<-#include定義 unsigned char ユーザ関数名1;<-ユーザ関数プロトタイプ宣言 unsigned char ユーザ関数名2:<-同上 char 変数1[5]; char s_buf[4096]; char buf[4096]; /*データ受信用バッファ*/ char 変数2[256]; size_t len; long l; int sock_fd; /*ソケット用ファイル記述子*/ struct sockaddr_in cl_addr; /*CPU用ソケットアドレス*/ socklen_t cl_len = 0; /*cl_addrのサイズ格納用*/ ssize_t n = 0; unsigned char ユーザ関数1(char *引数1,…char *引数5){   :送信データ生成処理 //* ソケット作成 *// if ((sock_fd = socket(PF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); return 1;   } //* 接続先定義*// memset(&cl_addr, 0, sizeof cl_addr); cl_addr.sin_family  = AF_INET; /*プロトコル定義*/ cl_addr.sin_addr.s_addr = inet_addr("***.***.***.***"); /*IPアドレス定義*/ cl_addr.sin_port  = htons(****); /*Port定義*/ //* 接続 *// if (connect(sock_fd, (struct sockaddr *)&cl_addr, sizeof cl_addr) < 0) { perror("connect"); return 1;   } //* データ送信 *// if(send(sock_fd, s_buf, strlen(s_buf), 0) < 0){ fprintf(stderr, "could not send message : %s\n", s_buf); exit(EXIT_FAILURE); } printf("\nSendMessage\n%s\n",s_buf); //* データ受信 *// cl_len = sizeof cl_addr; //*↓↓このrecvfrom関数でbuf内にサーバ応答伝文の先頭4byteのみが格納されている。↓↓*// if (( n = recvfrom(sock_fd, buf, sizeof buf,0, (struct sockaddr *)&cl_addr, &cl_len)) < 0) { perror("recvfrom"); return 1; } fprintf(stderr ,"TCP from addr = %s, port = %d\n", inet_ntoa(cl_addr.sin_addr), ntohs(cl_addr.sin_port) );

    • 締切済み
    • noname#107905
    • C・C++・C#
    • 回答数6
  • newしないオブジェクトについて

    C++で オブジェクト生成時、NEW しない場合、 どこにメモリ領域が作られているのでしょうか? また、newはmallocと同じで、動的にメモリを確保ということはわかるのですが、 では、newしない場合、静的ということになるのでしょうか? そうだとすると、静的なオブジェクトとは一体どのようなものをいうのでしょうか? よろしくおねがいします。

  • 超初心者の質問です。今、MFCでプログラムを作成しています。問題は、O

    超初心者の質問です。今、MFCでプログラムを作成しています。問題は、OnTimer関数が呼ばれないことです。 Cxxxsocket::test (){ (CMainFrame *)afxGetMainWnd()->SetTimer(1, 100, Null); } CxxxsocketはCsocketのクラスでSetTimerおよびOnTimerは使えません。この関数でSetTimerを呼び出したい。 afxGetMainWnd()はアプリケーションのアクティブなメイン ウィンドウへのポインタをさしており、恐らくCFrameWndのCMainFrame もしくは、CWinAPPのCxxxAppのポインタをさしていると思います。CFrameWndの場合、OnTimerが定義されているので、SetTimerのイベントは本OnTimerにて処理されると考えていたのですが、全くOnTimerがCallされません。 CMainFrameで利用しているOnTimerを使いたいのですが、SetTimerの呼び出し方法に問題あるのでしょうか?

  • Flashのようなビジュアルを実現

    初めまして. CもしくはC++を使用して, Flashで実現できるような綺麗なビジュアルを持ったアプリケーションを構築したいのですが,何か良い方法はありますでしょうか? 現在はDirectX(Dxlib)を使用していますが,満足のいくものではありませんでした. アプリケーションはローカルPC上での動作を対象としてます. よろしくお願いします.

  • パソコン本体からサウンドが聞こえなくなった

    私は普段、パソコンにイヤホンを挿し、イヤホンで全ての音を聞いています。 マンションに住んでいて、周りに音が漏れるのが嫌なのでそうしているのですが…。 先日、他に作業をしたくて、イヤホンを外してパソコンのスピーカーから音楽を流そうとしたところ、パソコンから音が流れませんでした。 ネット上の音楽、パソコン本体に保存されている音楽、CDの音楽なども全て、パソコンのスピーカーからは聞くことができませんでした。 また、ネットで何かしらを聴いていて、何かの拍子にイヤホンが抜けてしまうと、再びイヤホンを挿しても聴こえないのです。 一度ネットをすべて閉じて、そのページを開き直すとまた聞こえるようになるのですが…。 どうやら、自分でも気付かないうちに変な所をいじってしまった可能性が高いと思うのですが、なにぶんパソコン初心者のため、心当たりが分かりません。 このようなケースになってしまう原因がおわかりになる方は、教えてもらえないでしょうか? よろしくお願いします。

  • 男性に質問!弱い部分

    男性の方々に質問です。出会ってから、ずっと長い間弱い部分を見せなかった彼が最近私が驚く程弱い部分を見せてくれます。 男性って弱い部分を見せないような感覚だったのですが…… 質問です。あなたは彼女・奥さんに弱い部分を見せますか? 女性の方々は彼・旦那さんのどんな弱い部分を見ましたか? どんな風に感じましたか?

  • Direct3Dによるシミュレートについて

    現在下記のような環境で、3D物体のシミュレートを行っています。 開発環境:Visual Studio 2008(C++)、Direct3D 物理エンジンはtokamakです。 描画した物体はキーの入力で位置を変更できたり、マウスドラッグで視点を変更できるようにしていますが、その操作履歴をデータとして保存し、次回にその保存データを読み込むことで動きを再現(シミュレート)できるようにしたいと思っています。 そこで、操作履歴を残す方法にはどのような方法があるのでしょうか?逐一物体のポジションなどを記憶させているとあっという間にバッファーがオーバーしてしまいそうなので・・・ 今まで3Dプログラミングはあまりやったことがなかったのでいいものが思いつきません。 ご教授お願いいたしますm(_ _)m

  • パソコン本体からサウンドが聞こえなくなった

    私は普段、パソコンにイヤホンを挿し、イヤホンで全ての音を聞いています。 マンションに住んでいて、周りに音が漏れるのが嫌なのでそうしているのですが…。 先日、他に作業をしたくて、イヤホンを外してパソコンのスピーカーから音楽を流そうとしたところ、パソコンから音が流れませんでした。 ネット上の音楽、パソコン本体に保存されている音楽、CDの音楽なども全て、パソコンのスピーカーからは聞くことができませんでした。 また、ネットで何かしらを聴いていて、何かの拍子にイヤホンが抜けてしまうと、再びイヤホンを挿しても聴こえないのです。 一度ネットをすべて閉じて、そのページを開き直すとまた聞こえるようになるのですが…。 どうやら、自分でも気付かないうちに変な所をいじってしまった可能性が高いと思うのですが、なにぶんパソコン初心者のため、心当たりが分かりません。 このようなケースになってしまう原因がおわかりになる方は、教えてもらえないでしょうか? よろしくお願いします。

  • 法人向け安価なプロバイダ

    法人企業です。先日やっとインターネットの出来るようにしてもらいました(前任者が回線IPアドレス?をむちゃくちゃにしてた為) プロバイダ選びですがどこか安価で安全なサービス会社ご存知ないでしょうか。プロバイダ決定後ホームページも開設したいと思っています。プロバイダ契約後ホームページのアドレスや開設に当たっての必要手順はどうしたら良いでしょうか?お願いします

  • CPU周波数の違いとコスト

    core i7 Bloomfieldで例えて質問します。 960は3.20ghz、920は2.66ghzとなっていますがもちろん周波数が違いますし、価格も違います。 これらは同じシリーズですが構造がまったく同一であくまで周波数を制限して価格設定をしているのか、やはり高周波数はそれ相応に耐えられるように構造が強く高コストで作られているのか疑問に思いました。 わかりにくい文ですがよろしくお願いします。

  • C言語を学ぶ上で

    C言語を、一から学びたいと思っているのですが、 何か、学ぶ上で分かりやすい本とかはないでしょうか?

  • スペックの低いパソコンでも使えるウイルス対策ソフトって・・・

    当方WindowsXP(Professional)サービスパック2でハードディスクが20GB メモリが現在は128MB(最大512MBまで増やせます) うちのスペックとパソコンの詳細は http://www.dynabook.com/pc/catalog/equium/020524eq/lineup.htm 2000からXPに変わった直後の機種なのでマシンスペックがかなり足りません。 なので、これでも使えるウイルス対策ソフトって何でしょう? 出来れば一つでファイアウオールやスパイウエア、個人情報対策など総合セキュリティーソフトがいいのですが・・・ ちなみに現在はキングソフト・インターネットインターネットセキュリティーを入れています。 F-Secureアンチウィルス クライアントセキュリティはダメですか?