ネットワークプログラミング相談室 Port16
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/12/31(土) 14:07:24Programming UNIX Socket FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/sock-faq/indexj.html
Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
関連リンクは>>2-10辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port15
http://pc8.2ch.net/test/read.cgi/tech/1128088448/
0652デフォルトの名無しさん
2006/03/21(火) 20:12:260653648=651
2006/03/21(火) 21:54:42Little-endianのCPUなんでしょ。
01011000 00000000 00000001 11110100
^^^^^^^^^ここが常に壊れる。
0654デフォルトの名無しさん
2006/03/22(水) 13:19:50なんでわざわざ受信(送信)したバイト数を返してくるのか、とか。
0655645
2006/03/22(水) 14:15:04ああ!シコるほど!
> totalBytesRcvd: 7
になってしまうのがいかんかったんですね。
if ((bytesRcvd = recv(sock, &msgStruct, sizeof(msgStruct) - 1, 0)) <= 0)
の-1はEchoBufferでテキストメッセージを送る場合に最後の\nのためにあったんですが
構造体ではいらんかったですね。
消したら
Received:
totalBytesRcvd: 8
deposits: 500
withdrawals: 600
と正常位になりました。
ありがとうございました!
0656デフォルトの名無しさん
2006/03/22(水) 16:09:210657デフォルトの名無しさん
2006/03/22(水) 16:20:48プログラム書いたときにまたこのスレのお世話になることになるぞ。
0658デフォルトの名無しさん
2006/03/22(水) 16:51:22私は愛していますが、、
あ、私は655さんではないですよ。ポッ
0659デフォルトの名無しさん
2006/03/22(水) 20:31:30> と正常位になりました。
それまでは騎乗位だったのですか?
0660デフォルトの名無しさん
2006/03/22(水) 21:57:22いや、>>651 で FA なのはいいんだけど、Ethereal
とかでで送信/受信のどっちが悪いか切り分けられるよう
になってないと、>>657 が言ってるような事になると思
うんだけどな。
0661デフォルトの名無しさん
2006/03/22(水) 22:09:50OSもAPIも間のルータかスイッチも仕様どおりに動いた。
プログラムも仕様どおりに動いた。
645も神様か親DNA由来の仕様どおりに動いた。
ところで645の人は647のソースをどっからかコピペしてきて
改変したんだろうけど、元のソースでちゃんと
while (totalBytesRcvd < sizeof(msgStruct))
{
...
totalBytesRcvd += bytesRcvd
}
っていう構造になってるのに、それを改悪して「動作が変」とか言ってるんだよね。
元のソースがどういう動作をするようになっているのか、recvの戻り値の意味も
考えてよく考察するようにした方が良いと思う。
0662デフォルトの名無しさん
2006/03/22(水) 22:26:51奥が浅すぎだよね。
0663デフォルトの名無しさん
2006/03/22(水) 22:34:350664デフォルトの名無しさん
2006/03/22(水) 23:30:55まあ、初心者ははまりやすいとこだし。
個人的にはなんでそんな仕様にする必要があったのかよくわからんし。
0665デフォルトの名無しさん
2006/03/23(木) 04:36:40TCPレベルで何バイト送られるかが不確定であり、バイト列の切れ目というのを
表現する機能がないから自然とこういう仕様になるんじゃない?
0666デフォルトの名無しさん
2006/03/23(木) 05:39:500667デフォルトの名無しさん
2006/03/23(木) 07:57:330668デフォルトの名無しさん
2006/03/23(木) 11:38:450669デフォルトの名無しさん
2006/03/23(木) 13:00:31サーバー側でログインしているクライアントの数を数えてるファイルがあります。
クライアントの数は固定(今のところ3人)で
ログインした者の削除フラグは0、ログアウトした者の削除フラグは1にしています
(ユーザーIDと削除フラグから成っている構造体です)。
でクライアント側から'who'なるコマンドを送って
現在ログインしている者のリストをクライアント側で表示したいと思ってるんですが
皆さんならどんな風に処理しますか?
例えば、クライアント側でforループを回して
whoコマンドに該当する番号を3回送って
サーバー側は誰がログインしてようがお構いなく3人分のデータをクライアントに返す。
でクライアント側で削除フラグの立ってない奴だけ表示する。
…というのを考えているんですけど、やる前から効率悪そうだなと思ってます。
他にもっと良い方法があれば教えてください。
0670デフォルトの名無しさん
2006/03/23(木) 13:03:580671669
2006/03/23(木) 13:17:43構造体のデータ一つ分だけ送る方法しか知らないんですが↓こんな感じで。
/* Send received datagram back to the client */
if (sendto(sock, &msgStruct, recvMsgSize, 0,
(struct sockaddr *) &echoClntAddr, sizeof(echoClntAddr)) != recvMsgSize)
本当に3人分送れるんなら嬉しいですけど。
あ、実は構造体にはIPアドレスとポート番号も含まれてます、今回の件には関係ないですが。
typedef struct {
int recNum;
char userID[8];
int delFlag;
char ip[16];
unsigned short portNum;
} user;
0672デフォルトの名無しさん
2006/03/23(木) 13:23:550673669
2006/03/23(木) 13:27:25本当に3人分送れるんですか?
0674デフォルトの名無しさん
2006/03/23(木) 13:37:25こんな状態でUDP使うとは。
0675669
2006/03/23(木) 13:41:41というかやろうと思えばやれるのは分かるんでいいかと。
で結局、3人分送れるというのは嘘ですか?
0676デフォルトの名無しさん
2006/03/23(木) 13:43:44おまいさ、こんなとこで人に質問したりボケたりする前にC/C++の参考書とか読めよ。
世の中をなめて生きてゆくのも否定はしないけど、まだ若そうだから今のうちにちゃんと
努力したほうが後々ラクになるよ。
0677669
2006/03/23(木) 13:46:533人分送れるというのは嘘ですか?
0678デフォルトの名無しさん
2006/03/23(木) 13:49:410679669
2006/03/23(木) 13:52:38そう言ってもらわないとさすがに分からないですよ、いくらC知ってても。
0680669
2006/03/23(木) 13:54:58やっぱそうですよねぇ…。どうしましょ?
0681669
2006/03/23(木) 13:56:42ありがとうございました。
0682デフォルトの名無しさん
2006/03/23(木) 13:57:13何か「言われなくてもわかること」はあるのか?
0683デフォルトの名無しさん
2006/03/23(木) 13:58:25馬の耳に念仏だ。
0684デフォルトの名無しさん
2006/03/23(木) 14:00:36こいつの同僚に同情するヨ
0685デフォルトの名無しさん
2006/03/23(木) 14:08:58でいいんじゃないの?
0686デフォルトの名無しさん
2006/03/23(木) 16:09:290687デフォルトの名無しさん
2006/03/23(木) 18:12:420688デフォルトの名無しさん
2006/03/23(木) 18:21:410689デフォルトの名無しさん
2006/03/23(木) 19:51:150690デフォルトの名無しさん
2006/03/23(木) 22:40:11何バイト欲しいか指定してるんだから、そのバイト数がたまる
まで待ってりゃいいじゃん。
て言うか、普通 >>661 が書いてるようなループ作るだろ。
だったら、システムコール (もしくはライブラリ) 内でやっと
いてくれと思う。
0691デフォルトの名無しさん
2006/03/24(金) 00:22:14http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#ss2.8
0692デフォルトの名無しさん
2006/03/24(金) 01:05:25で取得したデータを解凍するにはどうしたらいいですか?
C言語でhttpクライアントの実験をしています。
0693デフォルトの名無しさん
2006/03/24(金) 02:02:120694デフォルトの名無しさん
2006/03/24(金) 03:13:14つーかネットワーク関係無いし
0695デフォルトの名無しさん
2006/03/24(金) 07:33:03zlib
0696デフォルトの名無しさん
2006/03/24(金) 07:33:230697デフォルトの名無しさん
2006/03/24(金) 08:22:45もっともだなw
0698デフォルトの名無しさん
2006/03/24(金) 08:35:250699デフォルトの名無しさん
2006/03/24(金) 13:27:54fwrite() で書き込んで pclose() してそれから hoge を読め。
0700デフォルトの名無しさん
2006/03/24(金) 19:05:01釣りか?
0701デフォルトの名無しさん
2006/03/24(金) 19:43:44だな
0702デフォルトの名無しさん
2006/03/26(日) 07:35:15思っているのですが、SNTPではラウンドトリップにかかった時間のちょうど半分がサーバー
というかオリジナルとなる時刻を持ってる側からクライアントにデータが届くまでかかった時間
ってことにしているようなのですが、これはどの程度正確なのでしょうか?
通信の↑の方の層のある程度の持続性のある性質として、行きは遅いが帰りは速いとか、
その逆とかいうことがありうるんでしょうか?
もしそうした場合に片側方向の遅延を検出できるアルゴリズムはどういったものになるのか
…は自分でもこれから考えてみますが、教えていただければうれしいです。
0703デフォルトの名無しさん
2006/03/26(日) 16:25:11#↑はスループットの話でラウンドトリップタイムとはまた別かも
0704デフォルトの名無しさん
2006/03/26(日) 20:54:22通信時間を測定することはできると思うけど、双方のシステム時刻があっていない状態
では、往復時間÷2で推測するしかないと思うけど。
0705デフォルトの名無しさん
2006/03/26(日) 23:34:280706デフォルトの名無しさん
2006/03/28(火) 12:13:39正確さより、いかに現実的な計測が出来るかを追求したら?
0707デフォルトの名無しさん
2006/03/28(火) 13:01:34そういうアルゴリズムは存在しません。
証明はここに書くには長すぎるのでry
0708デフォルトの名無しさん
2006/03/28(火) 22:57:460709デフォルトの名無しさん
2006/03/28(火) 23:11:43ネット環境がない状態で通信するプログラムを作りたいんですが
ルーターを使わずにIPを取得してプログラムのテストをする方法はありますか?
簡易DHCPサーバーなども考えてみましたが、ルーターがないとIPは割り振られないみたいで・・
0710デフォルトの名無しさん
2006/03/28(火) 23:26:42そんなわけねー。
0711デフォルトの名無しさん
2006/03/28(火) 23:32:080712デフォルトの名無しさん
2006/03/28(火) 23:34:07169.254/16なアドレスが自動で振られる。
・そのためのIPv6
・有効なインターフェースが無いとTCP/IPスタックがアンロードされて
127.0.0.1も消え去ってしまう話なのか?
0713デフォルトの名無しさん
2006/03/29(水) 03:03:14鯖との最初の通信で認証が通らない場合
次のポートに繋ぎに行くのを繰り返す、みたいな。
迷惑ですかね。
0714デフォルトの名無しさん
2006/03/29(水) 03:22:05最悪通報される
0715デフォルトの名無しさん
2006/03/29(水) 11:25:56もしMicrosoft の Windows を使っているなら、
ハードウェアの追加で Microsoft Loopback Adapter ってのを追加すると、
LANケーブル等が無いときにも使えるループバック専用の仮想NICが作成されます。
詳しくはgoogleとかで。
0716デフォルトの名無しさん
2006/03/29(水) 12:20:48…ああ、
「ネット環境がない状態で」「通信するプログラムを作りたい」のか。
「ネット環境がない状態で通信する」プログラムを作りたいなんて
無茶な奴だ、とオモタ。
0717デフォルトの名無しさん
2006/03/29(水) 19:42:16遅レスだけど、もしかすると使ってるところもあるかもしれない POP サーバの
qmail-pop3d には、「LIST/STAT で返されるメールのサイズが不正」というバグが
あるようです。
参考) ttp://ya.maya.st/mail/qmail-violations.html
0718デフォルトの名無しさん
2006/03/29(水) 19:43:16片方項だけど、CRT の一部を明滅させて小型PDAに
データを転送するというプログラムも過去にはあったような気が・・・
0719デフォルトの名無しさん
2006/03/31(金) 13:25:57クライアント自身のIPアドレスとポート番号を知るにはどうすればいいですか?
サーバー側ではクライアントをaccept()したときに得られるみたいですが。
0720デフォルトの名無しさん
2006/03/31(金) 13:38:440721719
2006/03/31(金) 13:44:45感謝感激!
0722デフォルトの名無しさん
2006/03/31(金) 17:35:58特殊なプロトコルを使って通信してるじゃないですか。
peercast://
call://
こんなやつ。
あれってどうやって作ってるんですかね。
0723デフォルトの名無しさん
2006/03/31(金) 18:45:56正確にはスキーム。
プラットフォーム依存になるが、Windowsなら、CLSIDをレジストリに登録して、
クラスモニカをパースできるようにするんじゃなかったっけ。
0724デフォルトの名無しさん
2006/03/32(土) 13:36:30次のポートに繋ぎに行くのを繰り返すと、ポートスキャンと見なされてIDS/FWのログに残る。
0725デフォルトの名無しさん
2006/03/32(土) 17:13:46ZoneAlarmのように
他のプログラムのネット接続を即切断したり
また繋ぎ直したり・・・は
どうやったらできるでしょうか。
ZoneAlarmが余りに不安定なので
自作した方が軽くて早くて安定な気はしていますが
ネット系のプログラミングは殆どやったことないので
分からないこと多いです。
プログラミング歴だけなら
Win3.1のVC++1辺りからやっては居ます。
0726デフォルトの名無しさん
2006/03/32(土) 19:11:20無理矢理してるなら不安定なのは当たり前。
切断してる時に、相手からパケット来たら答えられずに接続切られるでしょ?
0727デフォルトの名無しさん
2006/03/32(土) 19:28:400728デフォルトの名無しさん
2006/03/32(土) 23:45:39どんな情報も飯のネタになるだろ・・・尻の穴の(ry
0729デフォルトの名無しさん
2006/04/02(日) 00:53:450730デフォルトの名無しさん
2006/04/02(日) 09:02:29どのようにすれば作れるのでしょうか?
例えばこのようなページに、ブラウザで開かずに、直接プログラムから記入してそうインしたいのですが。
http://www.miyagawaakira.com/inquiry2.html
0731デフォルトの名無しさん
2006/04/02(日) 09:09:520732デフォルトの名無しさん
2006/04/02(日) 09:37:06まずはGETするプログラムから始めて見たら?
ちょっと機能加えるだけでパーソナルファイヤウォールとか銘打って稼げそうではあるね。
出来が悪いと、損害賠償受けたり、サポート大変だろうけど。
0733デフォルトの名無しさん
2006/04/02(日) 09:46:28荒らしツールでも作る気か?
0734デフォルトの名無しさん
2006/04/02(日) 10:23:36> HTTPの仕様を満たして、
HTMLの仕様も知る必要あり
0735デフォルトの名無しさん
2006/04/02(日) 12:54:30が書いたHPのソースコードの75行目に
<form action="http://www.moukarumail.com/user/successp/autostep/append.php?SNCD=4" meTDod="post" name ="form1" onSubmit="return check()">
とあるが、CGIでサーバ叩いたら(postメソッド投げれば)簡単にできねーか?
0736デフォルトの名無しさん
2006/04/03(月) 02:04:46あちこちのFORMに宣伝とかの書き込みするのかな?
0737デフォルトの名無しさん
2006/04/03(月) 18:25:06ネットワーク系の実装は、ボタンの掛け方一つでMAD Programになるからな
これ以上は教えないよ
0738デフォルトの名無しさん
2006/04/03(月) 18:31:500739デフォルトの名無しさん
2006/04/03(月) 18:41:460740デフォルトの名無しさん
2006/04/03(月) 19:28:230741デフォルトの名無しさん
2006/04/03(月) 19:30:05Hello Worldでもなんでもいいから
サーバークライアント間で通信する。
簡単なプログラム組んでくれませんか?
http://xml-rpc.net/
これ。
どうも使い方がわかりづらい…
0742デフォルトの名無しさん
2006/04/04(火) 00:31:49wgetでpostのほうが面倒だ。
.NETのサポートはMSにお問い合わせください。
0743デフォルトの名無しさん
2006/04/04(火) 11:20:22IEでプロキシサーバの自動検出機能がありますが、
どのように検出させているのでしょうか?
8080や3128ポートのパケットについて
ブロードキャストさせているだけですか?
0744デフォルトの名無しさん
2006/04/04(火) 12:28:29「WebブラウザのProxy設定を行うための4つの方法 − WPADのススメ −」
http://www.atmarkit.co.jp/fwin2k/win2ktips/031autoproxy/autoproxy.html
0745デフォルトの名無しさん
2006/04/04(火) 12:40:30なるほど、WPADプロトコル(を実装したプロキシ)を
使うわけですね。
ありがとうございます。
0746デフォルトの名無しさん
2006/04/05(水) 13:57:54自前でACK/RSTパケットを送出したいです。
WinXP+VB6なのですが、VC++でも構わないので
どこかに良さげなサンプルはありませんでしょうか?
よろしくおねがいします。
0747デフォルトの名無しさん
2006/04/05(水) 16:36:100748デフォルトの名無しさん
2006/04/05(水) 17:55:350750デフォルトの名無しさん
2006/04/09(日) 09:51:12試験したいときは どうすればいいかな。
同一サブネットでの試験したいときに困った
10台程度なら根性で実機用意するにしても
200台とか2000台はちょっとむりぽ
0751デフォルトの名無しさん
2006/04/09(日) 10:30:39■ このスレッドは過去ログ倉庫に格納されています