ネットワークプログラミング相談室 Port10

このエントリーをはてなブックマークに追加
2デフォルトの名無しさん:04/07/21 13:58
図書コーナー!

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
The Implementation (TCP/IP Illustrated, Volume 2)
http://www.amazon.co.jp/exec/obidos/ASIN/020163354X/
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
TCP/IPによるネットワーク構築〈Vol.3〉―クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
Webプロトコル詳解―HTTP/1.1、Webキャッシング、トラフィック特性分析
http://www.amazon.co.jp/exec/obidos/ASIN/4894715414
WinSock2.0プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756142362
3デフォルトの名無しさん:04/07/21 13:59
4デフォルトの名無しさん:04/07/21 14:00
問題ありのサイト

ネットワークプログラミングの基礎知識
http://X68000.q-e-d.net/~68user/net/
>>3
お勧めサイトにここが抜けてる
http://X68000.q-e-d.net/~68user/net/

問題ありだけど役には立つ
質問です。
自分専用の日記帳プログラム(DB使用)をJSPで作ろうかなーと思ってるんですが、
ふと疑問に思ったのが、対応しているレンタル鯖が少ないし、他言語に比べて重い(?)のに
JSPを使うメリットって何がありますか?

JSPを選んだ理由はJSPが一番慣れてるからっていうだけで、
あんまメリットが無いならほかの言語でつくろうかなとも考えてるんですが。(候補PHP4 or 5)
お勧めの言語とかもあれば教えてください。理由も書いていただけるとありがたいです。
76:04/07/21 14:59
しまった・・・。微妙にスレ違いディスカ?
候補のすべての言語で作れ
そんで、一番好みのものを採用しとけ
9デフォルトの名無しさん:04/07/21 18:27
age
あんまり問題有りとか書かれて閉鎖されると困るから勘弁してくれ
そんな書かれ方されたら気にしない振りしてもストマックブローになるだろうしなw
そんな事より前スレの>>950は逃げたのかな?
そろそろ成果物の1つぐらいうpしてほしい頃なんだけど・・・
>>12
仲間を疑うことは俺が許さん。
きっとうんこの切れが悪くて手間取ってるだけだ。
14デフォルトの名無しさん:04/07/22 07:30
>>10
このスレは見ていないだろ。
2chは口だけ達者な香具師が多いからな。
誰かselect/epollのラッパーライブラリ作ってよ。
wxWidgetsあたりにソースを提供して欲しいな
>>16
んなもん使う奴はパフォーマンスを気にする奴だから
作っても無駄になる可能性大

あとOS非依存性を確保するのがかなり難しい
19bu:04/07/22 12:30
<input type="file">のときに、その他のhiddenパラメータなども一緒に
受け取ることはできますか?

<FORM ACTION="upload.cgi" ENCTYPE="multipart/form-data" METHOD="POST">
<INPUT TYPE="file" NAME="File" SIZE="50"><BR>
<input type="hidden" name="testkey" value="これを取得できたらいいな">
<input type="submit" name="btnSend" value="送信">
</FORM>

STDINからCONTENT_LENGTH分読み込むと、添付ファイルだけなんすよー。
なお、毛ジュールは使ってません。できれば、使わないで取得する方法希望。
WebProg板へどぞ。
21デフォルトの名無しさん:04/07/23 05:36
age
22デフォルトの名無しさん:04/07/24 01:05
HTTPクライアントが与えられたURLのWeb文章を検索しようとしている。
HTTPサーバのIPは分からない。
このURLのWeb文章には、元のドキュメントと同じサーバにある
GIFイメージが組み込まれている。
この場合、HTTP以外、どんなトランスポート層と
アプリケーション層プロトコルが必要か?
宿題は宿題スレへ
>>22
マルチは放置
25デフォルトの名無しさん:04/07/24 01:13
>>24
答えられないのですね。
そうですか。
>>23
>>24

( ´,_‥`)どうせ分からんのだろ?
マルチポストがどうのじゃなくて。



って、俺も分からんが。
                |
                |
                |
                |
     /V\        ,J
    /◎;;;,;,,,,ヽ
 _ ム::::(;;゚Д゚)::| ジー
ヽツ.(ノ::::::::::.:::::.:..|)
  ヾソ:::::::::::::::::.:ノ
   ` ー U'"U'
「URLのWeb文章」に、ftp://server/hoge.gifなんてimgタグが
はってある場合、「元のドキュメントと同じサーバ」にあるともいえるから、

ftp, https, tcp, dns, nbt, nfs, telnet, sstp, bgp4, udp ,nntp, mms, httpu, tftp
まー このくらいあったら十分なんでないかい多分。
29デフォルトの名無しさん:04/07/24 01:41
>>28
マジで有難うございました。
AF ってのは AddressFamilyの略で
PF ってのは ProtocolFamilyの略ですよね。
sockaddr とかの familyは AFでいいですよね。
socket(2) の第一引数や addrinfoの ai_familyなんかは manを見ると PFらしい
んですが、「UNIXネットワークプログラミング Vol.1」では AFを使っています。
これは単に本が古いからでしょうか。PFで統一しちゃっていいですか?
いきなりAFするのは危険だな
>>30
manに従いましょう。

struct addrinfoは、protocolが特定されるんでPF_*なんです。
そこがstruct hostentと違います。
>>30
UNP で AF に統一されているのは、古いからというよりも著者のポリシー。
AF_xxx versus PF_xxx っていう節があるから一読しておくと良いよ。
(そもそも POSIX 仕様自体が、addrinfo を PF にも AF にも使うようになってるじゃん、とか)

統一するかどうかはポリシー次第で決めればよいと思うけど、
どうせ統一するなら AF の方が良いような気がする。

34デフォルトの名無しさん:04/07/26 19:12
test
ldapで、
123-45-6789
と入力しても
123456789
と入力しても
12-345-6789が検索できるようにしたい!
telephone="'" + telephone + "'"
だとなぁ・・・
ldapのクエリでそれを実現するにはどうすれば?
"convert(telephone, '-', '') = '" + telephone + "'"
みたいな?
serverは何よ?
( 2.5.13.21 NAME 'telephoneNumberSubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
じゃまずい?
3835:04/07/27 01:31
>>36
そうです
ついでに言うと、
convert(telephone,'-','') = '" + convert(telephone,'-','') + "'"
という風に、LDAPのクエリで使う関数と、それを実装する言語上での関数を使い
-を全部取っ払って比較したいです。
実装する言語上での関数は絶対に何とかなるので、問題はLDAPのクエリで使える関数ですよね
3935:04/07/27 01:37
>>37
実は知らないんです・・・・。
あてずっぽうでNetscapeかActiveDirectoryじゃないかと。
ホスト名、ポート、ベースDNのみローカルに公開されているLDAPサーバで、
ADSI使ってVBScriptでクエリを実行してみたら簡単な上納の検索は成功したんですよ。
ただLDAPのサーバが何を使っているかはわかりません。

4035:04/07/27 01:56
>>37
分割したレスですいません。
2.5.13.21 NAME 'telephoneNumberSubstringsMatch'
SYNTAX 1.3.6.1.4.1.1466.115.121.1.58 )
の意味がさっぱりとわかりません。むずい・・・。
RFCを見るべきなのでしょうか。
できれば分かり易く解説しているURL、なければ英語でも良いので参考になるURLを
教えていただけないでしょうか。

      r;ァ'N;:::::::::::::,ィ/      >::::::::::ヽ
.      〃  ヽル1'´        ∠:::::::::::::::::i
       i′  ___, - ,. = -一   ̄l:::::::::::::::l
.      ! , -==、´r'          l::::::/,ニ.ヽ
      l        _,, -‐''二ゝ  l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
        レー-- 、ヽヾニ-ァ,ニ;=、_   !:::l ) } ト
       ヾ¨'7"ry、`   ー゙='ニ,,,`    }::ヽ(ノ  チラシの裏にでも書いてろ
:ーゝヽ、     !´ " ̄ 'l,;;;;,,,.、       ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{   __)`ニゝ、  ,,iリ::::::::ミ    
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ ,  な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
42デフォルトの名無しさん:04/07/27 03:01
>>41
なんでこんなところにガンダムキャラがw
44デフォルトの名無しさん:04/07/27 08:00
?
ムチャワラタ
>>950まだ?
48デフォルトの名無しさん:04/07/28 19:46
TcpClientでtelnetもどきをつくろうとしているんだが、
鯖へメッセージ送信は自分の好きなときにできるからよいとして、
鯖からの受信処理はどうやったらいいの?
selectかノンブロッキングか非同期でやる
スレッド分けといた方がいいよ
受信したときにイベントでもあると分かりやすいんだけどなあ。
whileなんかでsleepさせながらずっとまわしたりすればいいの?
WSARecvFrom()を使って、オーバーラップドI.Oで非同期処理をしたいのですが
完了時に指定した関数を呼び出すオプション使った場合
その呼び出されたオプションの引数に、WSABuffを指定したり出来ませんか?
その関数内で、受信内容を処理したいのですが・・・・
>>51
select系でいいんじゃない?
telnet擬きという事だから、
入力とサーバからの出力をselectだよ。
54デフォルトの名無しさん:04/07/29 07:41
受信に対する応答を早くしたい場合って
コールバック出来た方が有難いのですが…
気にするな。
>>54
だから非同期系のAPI使うかスレッドでやれっつうの
57デフォルトの名無しさん:04/07/29 09:44
>>48
.NET Framework の TcpClient なら、BeginRead 使えばイイデソ。
mmsプロトコル教えて!
頼む!
>>58
FAXのプロトコルの事か?
メディアプレイヤーのです
62デフォルトの名無しさん:04/07/30 02:29
URLを入力すると、ファイルをダウンロードするプログラムを作りたいのですが、
当方ネットワークの知識があまりありません。
まず何から勉強すればよいでしょうか?
言語はなんだ
64デフォルトの名無しさん:04/07/30 02:33
一応、VC++の予定です
wgetのソース読め
>>62
インターネット・ネットワーク全般の知識を書籍で身に着けろ。
HTTPのダウンロードにはWinInet使え。
>>62
socket
>>62
知識が無いなら得ればいい。
HTTPのRFCも読んでおきましょう。
>>65,67,68
あほ
>>69
おいおい、66が抜けてるぞ
69=66
69=66=あほ
またお前らか
だから VC++ は言語じゃねぇっつの
75デフォルトの名無しさん:04/07/30 12:58
>>62
これでオシマイ。
#include <windows.h>
#include <Urlmon.h>

int main(int argc, char* argv[])
{
 URLDownloadToFile(
  NULL,
  argv[0],
  argv[1],
  0,
  NULL);
 return 0;
}
>>74
「VC++はC++と互換性はあるけど別の言語なのだ!」
というのが正しい解釈だと、漏れは最近思っている。
常用してる人って、非標準のキーワードとか好んで使うし...。
久しぶりスレみたらなんか実用的な情報が減ってるな
78デフォルトの名無しさん:04/07/30 16:27
WindowsのLANなんかで、
IP固定のマシン(非Win)を接続したいとき、
既にIPが使われててイーサネットに入れない、
ということを検知する方法はありますか?
>>78
つーかイーサには入れっぺ?
>>78
・別のマシンからそのIPにpingを打つ
・DHCPでMACアドレスを指定して固定IPを割り当てる
Windowsならほっといても,「IP被ってるぞ」のダイアログ出てくる。
82デフォルトの名無しさん:04/07/30 23:05
なんか面白いP2P作りたいんだけどアイデアない?
Winnyメンテしろ
>>83
ファイル交換以外がいい
>>82
P2Pプロキシ。
基本は多段プロキシだが
プロキシサーバーのリストをP2Pで交換。
ああ、そのリストを貰って自宅のblogサーバの拒否リストにしたいよ。
2chにいくつでもスレ立てられるP2Pとかどうだろ
1000ノード以上あつまれば誰でも立てられる
8887:04/07/30 23:25
あ・・全員違うプロバイダじゃないといけないから無理か・・・
スレ違いだあほ
ADSI経由のLDAPアクセスで全属性を検索する方法をご存知の方おられましたら教えてください。
現状結果としてはADsPathしか返ってきません
これだけのコードなのですが、デバッガで実行すると AccessViolation が起きます。
WSADATA wsad;
WSAStartup( 0x0101, &wsad );
gethostbyname( "name" );
inet_addr( "name" );
何が悪いのでしょうか。
WSAStartupの戻り値をチェックしてみたら
返値は以下のようでした。
デバッガで実行したときのみ例外が発生します。
普通に実行した場合には例外は発生しないようです。
環境は WinXP, VC++ です。
どこが悪いのか本当に全く分かりません。
どなたか宜しくお願いします。

<ソースコード>
#include <windows.h>
#include <stdio.h>
int main( void )
{
WSADATA wsad;
int result = WSAStartup( 0x0101, &wsad );
printf( "%04x, %04x, %04x\n", result, wsad.wVersion, wsad.wHighVersion );
gethostbyname( "name" ); // Access Violation
return 0;
}

<出力結果>
0000, 0101 0202
gethostbyname の仕様嫁
以下のページを参考にしているのですが、原因となりそうな部分が見つかりません。
このページに書かれている Example Code も、やはり同じように Access Violation を起こすようです。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/winsock/gethostbyname_2.asp
>>95
SP6あてて新規プロジェクトでやっても駄目なら環境が腐ってる
なんだっけ。
hostsファイルがおかしいとwsock32.dllだかで落ちるとかどっかで
見たような。
98デフォルトの名無しさん:04/08/04 00:08
>>97
前スレ
これか。コピペしとこう。

From: [664] デフォルトの名無しさん <>
Date: 04/06/15 21:18

プログラムと直接関係なくてすまないんだが、Windows XP の hosts ファイルに
ホスト名の重複した 3 つのエントリ (上下 2 つは同一の IP アドレス) を記述
した場合、そのホスト名へのアクセスでブラウザやら ping やらが以上終了する
見たいなんだけど、もまいらのマシンもそう?

192.168.1.1 aaa
192.168.1.2 aaa
192.168.1.1 aaa

上記の順で書いた時 ping aaa や http://aaa/ へのアクセスでプロセスが異常
終了するみたい。まぁそもそも同一ホスト名に別アドレス割り当てる事自体
イレギュラーなんだけどね。http://support.microsoft.com/default.aspx?scid=kb;ja;177075
動作は未定義って事なんだろうけど、プロセス異常終了とは…


From: [672] デフォルトの名無しさん <sage>
Date: 04/06/16 11:59

>>664
winsock が msvcrt の wcslen に NULL 渡して落ちてるね・・・
お粗末だなー

お粗末て失礼な!
仕様だよ…
今時hostsファイルなんて使ってる奴がDQN
102デフォルトの名無しさん:04/08/04 12:32
CAsyncSocketを使っているのですが
自分と接続先のIPアドレスとポート番号を取得するにはどうすればいいのでしょうか?
>>101
いや、最新のスパイウェアの中には hosts ファイルを勝手に書き換えるものもある、
って前スレに出てたぞ(w

もうちょっと真面目な話だと、SSL-VPN製品の中にはアプリケーションからのトンネリング
アクセスをシームレスにするため、 hosts ファイルを書き換えるものもあるらしい。
>>103
スパイウェアがDQNじゃないとでも?
話が食い違っていることにはたして>>104は気がつくであろうか?
DQNには無理ぽ
107デフォルトの名無しさん:04/08/05 01:36
>>103
DQNだ
>>102
どっかでもう答え書いたぞ。mfcスレだったかな…
なんか気分悪いな。もうmfc使う奴は相手しないことにする。
WinsockLSPのドキュメントとか解説本とかってありませんか?
ぐぐってみても国内には皆無だし、
海外でもスパイウェア(?)系のサイトばっかり引っかかってなんだかさっぱりです。
110デフォルトの名無しさん:04/08/07 14:19
age
111デフォルトの名無しさん:04/08/07 17:06
httpのレスポンスヘッダとボディはどうやって区別すればいいですか?
受信したものを丸々ファイルに書き込むとヘッダも入ってしまうので
ヘッダ
空行
ボディ
空行で区切られてるじゃん
はい、解りました。
有難う御座います。
ダサイよな
夏だな
ファイルを手軽に渡せるソフトを書いているのですが、
どちらかがファイアーウォールの外に居なければTCP接続が出来ず、
送受信ができません。
例えばKazaa技術を使った今流行のP2P電話「Skype」はポート空けなどの
作業を一切しなくても、インストール後即座にP2P電話機能が使えます。
これはどのような技術を使っているのでしょうか。ファイアーウォールの
内側どうしから、ファイルを送受信するということは可能なのでしょうか?
参考になるような情報がありましたら教えて頂ければと思います。
118デフォルトの名無しさん:04/08/09 09:40
質問です。宜しくお願いします。

WinXP + VCでネットワーク送受信量を取得するプログラムを組んでいるんですけど
自分で取得した値を他のネットワーク監視ソフトや、WinXPのネットワーク状態確認などの値と比べると微妙に違ってしまってます。

自分で組んだプログラムは以下みたいな感じです。

PMIB_IFTABLE piftable;
DWORD size;
DWORD index = 0;

GetIfTable(NULL, &size, FALSE);
piftable = (PMIB_IFTABLE)malloc(size);
GetIfTable(piftable, &size, FALSE);

//dwOutOtetsの値が他のアプリなどの値と微妙に違いが出てしまう
//取得するtableのindexは間違っていない
printf("%u\n", piftable->table[index].dwOutOctets);

free(piftable);
gnutellaとよく似てる
121デフォルトの名無しさん:04/08/09 12:22
>>119

なるほど。グローバルIPを持つネットワークにサーバが立てられるマシンを
仲介してデータ転送を行うのですね。大変参考になりました。
仲介マシンの選別などが少し大変そうですが、さっそく開発に
取り組んでいきます。ありがとうございました。m(__
>>118
よくわからんけど、値の丸め方とか、サンプリングレートとかの違いでわ?
123118:04/08/10 09:37
>>122
118で書いた「dwOutOctets」は「dwInOctets」の間違いでした…
でもこれが原因じゃないです。
実際のコードは正しいく「dwInOctets」してます。

>よくわからんけど、値の丸め方とか、サンプリングレートとかの違いでわ
とりあえず、バイト単位で一切丸めずに表示しても違いがでます。
しばらく送受信を行わない状態で、最新の情報を取得し続けても、やはり違いがでます。

以下取得した送受信量の値の例。
取得した値   :742069 byte
XPの状態確認の値:730697 byte

ちなみに総送信量の値も違いがでます…
まったく自分と同じ方法で取得していると思われるアプリでは
値の誤差がなく、きっちり自分と同じバイト数になってるんですが…
>>118
> 他のネットワーク監視ソフト

こりゃSNMP使ってんでしょ。
最新の情報取得すれば値変わるよね?
# そのインターフェース使っている場合は。
125118:04/08/10 11:27
>>124
レスをありがとうございます。

>こりゃSNMP使ってんでしょ。
>最新の情報取得すれば値変わるよね?
SNMPですか… もっと厳密に情報を取得する方法があるのでしょうか?
>>123で取得した値の、11372byte差というのは何なのでしょうか?
SNMPとMIBでぐぐれ。

127118:04/08/10 11:59
>>126
分かりました。あとは自分で調べてみます。
ありがとうございました。
>>123
"In"なら何もしなくても常にbroadcast packetとか受け取ってるでしょ。

完全に同じタイミングで値取得しているという風に確信しているみたいだけど、
そんなわけないでしょ。
129118:04/08/10 12:47
>>128
今気付いたんですが、自分が取得した値と違うと思っていたアプリの一つは
どうやら B→KB→MBの変換時に値を切り上げていた為、自分のプログラムでの値と誤差があったようです…
自分のプログラムでも、表示桁を同じにして、値を切り上げたらまったく同じ値になりました。

でも、相変わらず、OSの状態確認での値とは誤差が生じてます…
この辺の誤差は、それぞれのプログラムからの値の取得方法の違いというより
取得タイミングのタイムラグ的な物の影響なんでしょうか?
とりあえずetherealで受けているpacketの様子を調べろ。
http://www.ethereal.com/
>>129
 「OSの状態確認」って、具体的にどういう操作ででてくるやつですか?
netstat /e で出てくるのは、IP パケットだけの統計なのでインタフェイスの
総送受信バイトとは異なってきますし、ネットワーク接続のアイコンから
「状態」で開いたウィンドウに出てくる値は、TCP/UDP しか数えていない
ような感じですが・・・
132118:04/08/10 13:50
>>130
ツールのリンクどうも。
しかし、パケット内部のヘッダ情報とか、ネットワーク関係の知識が乏しいもんで
まだ、このツールは使えなさそうです…

>>131
あ〜 そうですか。なるほど。
とりあえず、インタフェースごとの情報が取得できればいいので
自分の方法で問題なさそうですね。

しかし、ネットワーク関係のプログラムは難しいですね…
もっと専門書とか、それ関係の文献を読んで勉強しないといけないと思いました…
133デフォルトの名無しさん:04/08/11 05:38
age
Httpで、Transfer-Encodingフィールドが存在しない、又は無効な場合は
Content-Lengthの数値は「絶対に」信用できるものなのでしょうか?
途中で切断されるような事態は想定してないの?
他にも、ソフトのバグとか。
世の中に絶対はありません
>>136
それは絶対に正しいですか?
うん
>>138
クレタ人ハケーン

出来るかどうかというよりも、してはいけません。
信用しちゃうと糞アプリの出来上がりです。
( ゚д゚)ポカーン
つい最近の話,apacheにContent-Lengthの値を信用していたがため
のSecurityHoleがありました。

二ノ舞にならないよう気をつけましょう。
あんなのあくまで参考値ですよ、偉い人にはそれがワカランのです。
おまいそんな事言ってるとContent-Length分正しいデータ送った後に
ゴミデータ送るよ。
>>143
かなり恥ずかしい解釈だな。
Content-Lengthを信用しない場合でも,そういうアホ挙動には繋がらない。
145デフォルトの名無しさん:04/08/12 09:38
>>135
途中で切断されたり、バグで止まるのなら全然構わないのです。
問題はContent-Lengthを過ぎても、まだボディが転送されてくる
ケースなのです。
もしそんなケースがあったら怖くて怖くて。。。。
別に送られてきたら切断すりゃいいんじゃないの?
または許容できる範囲まで受信してもいいし。
まあつまり信用しようとしまいと手抜きはいかん。
>>145
あるに決まってるじゃん。
そうやってバッファオーバーフローさせてroot取るのは
クラッカーのよく使う手だろ。
>>145
起こりうる内容がわかってるなら,とっとと対処しろ。
お前は,指くわえて見てるだけの間抜けなのか?
指くわえずに、み〜て〜る〜だ〜け〜。
150デフォルトの名無しさん:04/08/12 10:26
違うのです。
僕が恐れてるのは、Content-Lengthを信用して基準にすると
実ボディを取りのがす危険性があり、かと言ってデータ転送を
信用して基準にすると無駄or別データを得てしまう恐れがあると
いう事なのです。オーバーフローは簡単に対処できるのですが。。。
データ量を一バイトも違わずに正確に取得するには一体どうすれば
いいのか。。。? 皆さんはどうしてるのか、それを聞きたいのです。
> 皆さんはどうしてるのか、それを聞きたいのです。
152デフォルトの名無しさん:04/08/12 10:33
>>150
んと、自分はContent-Lengthつけて無かったです。
早速つけたいと思います。
よろしくお願いします。
>>150
回線速度に応じてローカルのHDD食いつぶすって程度の危険性なら特に対応しないな。
本気で対応するならSSLでサイトの正当性を証明すればいいんじゃないの。
Content-Lengthだけ受け取ったらあとは捨てる
間違ったContent-Lengthを吐く方が悪い
>>150
確かに「勘」かもな。ここでは「経験」と同義語としていい。
心配ならとりあえず、Content-Lengthから+αまでをOKにすると制限を
設けるとか、ボディの内容をチェックするとかだろうね。
とりあえずは、Content-Lengthをオーバーするパターンが何かを統計し
解析することだね。
そのボディが必須なら対応するべきだろうし、全部不必要なのかもしれ
ない。今の質問ではそこまでは答えられないから、経験を積んで勘が
働くようにするしかない。
どうもありがとうございました。
>>155
>Content-Lengthから+αまでをOKにすると制限を
>設けるとか
そういう高級な判断はろくな結果にならないと思うが。
Content-Lengthを全面的に信用するか
まったく信用せずにプログレスバーの進捗表示程度にのみ使うかのどっちかだと思うよ。
wget にはこんなオプションがあるよ。

`--ignore-length'
Unfortunately, some HTTP servers (CGI programs, to be more
precise) send out bogus `Content-Length' headers, which makes Wget
go wild, as it thinks not all the document was retrieved. You can
spot this syndrome if Wget retries getting the same document again
and again, each time claiming that the (otherwise normal)
connection has closed on the very same byte.

With this option, Wget will ignore the `Content-Length' header--as
if it never existed.
159デフォルトの名無しさん:04/08/12 12:30
ネットワークアプリケーションにおける暗号化について質問があります
C++による、ゲームプログラミングなのですが升対策に暗号化を導入することにしました
公開鍵暗号方式の後、共通鍵暗号方式に移行するという、常套手段をとりたいと思っています
C++で、手軽に利用できてそれなりの強度を保てる、おすすめの暗号化ライブラリ等を教えてください
Crypto++は一応、みてみたのですが、オーバースペックな印象を受けてます
というより、あのライブラリ、リンクしたら相当でかくならないか、という理由で避けています
Nyの暗号化部分も見たのですが、RSAで大きさも手ごろ、しかし出所不明で・・
よろしくお願いします。
160159:04/08/12 12:33
すいません、>>159に補足です。
タダで使えるライブラリの方向でお願いします・・・
軽さ優先ならblowfishじゃないの。
>>157
んなアフォな…

< Content-Lengthを一つの基準とする

という立場があるのみでしょ。
どういう基準を採用するかは、用途によるね。

例えば「越えても送ってくるようなら接続を切り、データは捨てる」とかね。

・取得したデータ
・これから取得出来るデータ
・接続
などの軸があるわけで、それぞれでどうすべきかはアプリによる。

163159:04/08/12 12:49
>>161
使いやすそうですね、ありがとうございます
共通鍵の方は、これでいこうと思います
>>159
openssl使いなよ。
小さくしたいなら必要な奴だけリンクすればいいし。
>>162
そんな曖昧論はどうでもいいから反例を一つあげてくれ
166159:04/08/12 13:20
>>164
ありがとうございます
OpenSSLの名前は知っていましたが、実質的な事は何も知りませんでした・・・
ライブラリとして、かなり広く利用されてるみたいですね
しかも、Apacheライセンスってことで、手頃な感じがします
使ってみます
>>165
HTTPはContent-Type:の型付きだから、
データ型によってはデータ見れば終りがどこか分かるでしょ。
いくらなんでもあまり長いようなら辞めたりね。

これはContent-Length:を全面的に信頼している、
プログレスメータ程度に使っている、の「どちらでもない」よね。
言われないと分からないの?
↑HTMLやTextでは無理ジャン
>>167
なんかそもそもの150の要求を満たしてないし+αも統計も出てこないのね。
ま、157の反例であることは認めるよ。
>>168
HTMLは可能じゃん?
<HTML></HTML>がない場合はダメだけど。
>>169
俺155だけど155しか書いてなんで、それ以降は別の人だよ。
俺自身は特に反論ないし、質問者にヒントを与えられればそれで
いいと思ってます。
とゆーことで、俺はROMってます。
172デフォルトの名無しさん:04/08/12 15:07
>>167
もし、Content-Encodingフィールドにgzipやdeflateが存在したら。。。
ああ。。。
>>155 って何かの役に立ってる意見とは思えないけど
サイズ詐称なんて例外処理の範疇だろ
無理やり処理を通そうとするべきじゃない。
サイズが違うと判明した時点でアボーンだろ。
基本はその通りだが、wgetみたいなoptionも悪くない。
176159:04/08/12 16:36
>>159 経過報告です
共通鍵暗号に関しては、OpenSSLで問題なさそうです

ttp://www.02.246.ne.jp/~torutk/cxx/openssl/install.html
ソースからの構築について、詳しい解説がありました

ttp://www.gnu.org/licenses/license-list.ja.html
ライセンスに関して、GPLとは矛盾するという事らしいですが、
基本的には、Apacheライセンスのような、使用していることを明示するといった感じの使用条件になっているようです

lib/dllに含めるアルゴリズムの選択は、ちょっとわかりませんでした
いちおう、コマンドラインオプションでそれらしいのはあるんですが、
Configureで指定するのか、Make実行時に指定するのか、不明です
Configureとか、数回しか触れたことがないので、あまりいじるのは避けようと思います
ズバリ解説してるサイトが無いか、もうちょっと調べて見ることにします
ネットワークプログラミングの勉強しようと思うんですが、
・winsockから入ってUNIXに行く
・UNIXから入ってwinsockに行く
どっちがいいですかね?
いみふめ
最終的に何がしたいんだよ。

字面どおりの質問に答えるならはっきりいってどっちでもいい。
慣れてるプラットフォームで先に覚えろ。
>>176
$ ./Configure no-要らない暗号の名前1 no-要らない暗号の名前2 ...
だよ。けどそんなことは後でいいからdefaultでlibraryつくって、
client認証の方法とか、秘密鍵の置き方とか調べたら?
SSLのモデルについても学ぶ必要があるし。

$ openssl s_client -connect どこかのサーバ:https

やってみたりね。
>>176
OpenSSLってconfigureとかしなくてもアルゴリズム単位でディレクトリが分かれてて
個別にmake出来たような気がするけど(うろおぼえ)。

あと公開鍵暗号って共通鍵の交換だけ?
だったらRSA使わなくてもDiffie-Hellmanで十分じゃないの。
181159:04/08/13 05:55
>>179
ありがとうございます
Defaultでのライブラリ作成は、試行としてやりました
結果、1M程度と200kb程度のdll/libが生成されました
OpenSSHなら、ssh -l hoge servとかMeadowからよく利用するんですが、opensslは利用したことがないです
覗いてみます

>>180
ありがとございます
確かに、openssl\cryptoの方で、個別にmakeできそうな感じです
試してみます
>あと公開鍵暗号って共通鍵の交換だけ?
はい。
解説サイトを見た限り、DHでも充分そうです
RSAとDH、実際に試してみて、どちらかきめようと思います
ttp://dev.ariel-networks.com/modules/xfsection/article.php?articleid=15
ttp://www.pc-view.net/Network/030708/page2.html
>>181
DHはそれ単体だとMITM(中間者攻撃)に弱いんで注意すべし。
183159:04/08/13 09:05
>>182
回避法、調べてみます
ありがとうございます
サーバにユーザーのパスワードが保存してあるなら
それキーに暗号化して共通鍵を交換するとか。
って何のスレなんだここは。
>>181
opensslが、Secure Socket Layerを提供してくれることは理解してるの?
接続、暗号方式のネゴ辺りを全部やってくれるよ。
186デフォルトの名無しさん:04/08/13 13:54
JAVAのSocketでHttp通信プログラムを作ってるのですが
HTMLソースを読みこんで解釈して、次はその中に記述されてる
リソースURLにアクセスすると、200以外のコードが返ってきて
アクセスできなくなる事が、稀にあります。
しかし、プログラムを再起動して初めからいきなりその
リソースURLを読み込むと成功するのです。
下層Socketの使い回しが原因なのかと思って、一アクセスごとに
Socketを作り直し、常にConnection: closeにして、さらに試験的に
一アクセスごとに数秒待機するようにしても、HTMLソースを読み込んだ次だと
アクセスが失敗してしまうのです。プログラムを再起動して初めから
そのリソースURLを指定すると普通に読み込めるのにです。
リクエストラインとリクエストヘッダは全く同じ文章を送っています。
Referも正確に記述してますし、UserAgentを初めとする各ヘッダも
ある標準の製品ブラウザと全く同じ文章を送っています。
それなのに起動後、同ホストに1回目と2回目のアクセスでは
リソースURL成功の結果が違うのです。
どうか対処法を教えてくださいませ。
何はともあれレスポンスコードを書け。
188159:04/08/13 14:15
>>184
そうですね
念のため、最初のうちは、接続元IP+ユーザーIDとかでやろうと思います
暗号の扱い間違えて、パスが流れたりしたらアレですし
ありがとうございます
>>185
理解してません...orz
調べてみます
openssl\include\openssl\bio.h辺りでしょうか
これは・・・ 扱いが、難しそうですね・・・
ありがとうございます
>>188
いや読むんならapps/s_client.c, apps/s_server.c辺りからでしょ。
http://www.infoscience.co.jp/technical/openssl/docs/もね

前半に書いてあるようなことはopensslに任せば?

190デフォルトの名無しさん:04/08/13 14:48
>>187
よく出るのが302、次に503、そして404です。
それって、単に鯖側の都合な気がするが。

JavaのSocketの実装は知らないけど、初回は必ず成功するっていうのなら
鯖で同時接続数の制限をしていて
前回のコネクションがまだ生きている時に失敗するのかもね。
302 Moved Temporarily
503 Service Unavailable
404 Not Found

お前クッキーの扱い失敗してない?
いや、レスポンスにSet-Cookieは、いずれも無いのです。
リクエスト-レスポンスのキャプチャをとって、
OKとNGの時の比較をしてみた?
>>193
「いずれ」の意味がわからんが、エラーの前のレスポンスにもないの?
普通503は時間おいて再試行だわな。
196デフォルトの名無しさん:04/08/13 16:14
失敗したサイトは今の所3つなのですが、その3つとも
レスポンスヘッダにはSet-Cookieが無いのです。
リクエストはOK時(プログラム起動後、最初のリクエスト)
とNG時は、全く同じ文字列を送っています。
レスポンスは当然違いますが。。。
とりあえず302と503を適切に処理しなよ。
意味はRFCで調べて。日本語版もあるよ。
198デフォルトの名無しさん:04/08/15 17:02
質問です。
WSASendTo()関数で
WSABUF構造体のポインタを指定して、その内容を送信する形になってるんですけど。
WSABUF構造体の中はconstになってるんで、その内容を書きかえれないんですよ。
どうやって、任意の文字列をバッファへ指定して送れるんでしょうか?
>>198
constが、どこを書き換えなくしているのか読もう!
200デフォルトの名無しさん:04/08/16 06:26
age
IDとパスワードを入力させる画面を表示して
これをRADIUSサーバに認証しにいく
RADIUSクライアントを作ろうと思ってるんですが、
Perlで作れるのでしょうか?

Perl以外でも何か参考になるサイトがあれば
教えてください。
よろしくお願いします。
たらいまわしの悪寒
Perlでも作れます
204201:04/08/16 21:36
>>203
レスありがとうございます。
何か参考になるサイトや書籍ご存じないですか?
ググるキーワードだけでもいいんで、ご教授願います。
ずっと探してるんですが、なかなか無くて。
お願いします。
Authen::PAM
206デフォルトの名無しさん:04/08/16 23:23
age
ありがとうございます。
ちょっと光が見えてきました。

ちなみにAuthen::PAMのようなモジュールが
C言語にもありますか?
ID、パスの入力はコマンドラインから叩くものとしてですけど。
ちょっと調べてみますが、
ご存知でしたらご教授くださいませ。

よろしくお願いします。


libpam
209デフォルトの名無しさん:04/08/18 13:12
dhcpdサーバ(Windows)に問い合わせて、
予約されてるIPや現に今使われてるIPを知ることなんか出来ますか?

やりたいのは、機器(PCに限らない)をLANに繋ぎたいとき、
既にLAN内にIPが使用されてるかどうか調べてたいのです。
>>209
DHCPに割り当ててもらえばいいのに。
211デフォルトの名無しさん:04/08/18 14:18
>>210
現場に空きIPを用意して貰って機器を繋いでます。
が、なかなかPCから機器を認識出来ず、設定を色々変えてる内に機器がLANに入れる、
みたいなことが起こって困ってます。

原因が分かってなくて困っているんですが、
機器をLANに繋いで少しの間寝かせるとLANに認識される、
なんて馬鹿なことないですよねぇ。

そういう場合のトラブル原因を見つけるツールでもあればなぁ...
>>211
お前、板違いな。

> 機器がLANに入れる(略)LANに認識される

勉強も足りない。
>>211
寧ろ、繋いですぐ認識される方が「バカハブ」。
>>213
詳しく教えて下さい。書くのが面倒ならsiteのアドレスでもお願いします。
サイトのアドレス書くのも面倒だよ。板違いの質問に、なんでそこまでせにゃ
ならんわけ?自分で調べろ、タコ。
nmapとかのポートスキャンツールには、
IPの範囲を指定して、どのIPが空いているかを
調べるオプションが有ると思うが。
サンクス>>216
nmapNTを試してますがポートスキャン出来るなら繋がってるのが機器かどうか判別できますね。
PCであればHostNameを取得するだけで事足りそうですけど。
(実は”ICMP only”とか”WINDOWS Interface enumeration:”とエラー出まくりではまってますが)


「バカハブ」の方は良く分かりません。
馬鹿ハブかと思ったらそうでなくてそういう種類なんですね。
一般的に、LANに繋げてどれくらい待てば認識されるのか、が知りたいです。
認識されるというのは、誰に認識されるっちうことなんだあ!
219217:04/08/18 18:33
>>218
Windows PCからです。
>>209
DHCP 導入してるんだったら、
1. WinXPのPCをLANにつなぐ
2. ネットワークの状態/サポート/詳細でアドレスとリースの有効期限を調べる
3. ノートPCをLANから外して、間違えて再度つながないように片付けておく
4. リースの有効期限が来るまで、存分に2で調べたアドレスを使用する
っていう方法の方が良いと思う。
プログラム書く話じゃないなら、板違いなのでもう来ないで欲しい。
221217:04/08/18 18:40
>Windows PCからです。
説明足りませんでした。
機器の設定が、Windows PCのIE(等のブラウザ)から出来るようになっています。
が、IEに機器のアドレス入れても、機器を繋いだ直後は接続が不安定なんです。
一旦繋がってしまえば問題無いのですが。
>>216
プログラミングに関係ない話は放置しろよ、禿げ!
>>220
放置しろ!
224217:04/08/18 18:44
説明が足りませんでしたがプログラミングの話です。
PC側ではなくて、機器側に”ITRON+HTTPサーバ”してます。
この不安定を何とかしないといけない状況で...
>>224
自分の IP アドレスで ARP パケットを投げて、
誰も返事してこなかったら OK っていうのが簡単っぽいけど。
>>225
返事くるわけない。arp 投げるのはありかもしれないけど。
誰に投げればいいのかは知らん。
誰に投げればってブロードキャストじゃないの?
DHCPクライアントのドライバ書いてるの?
藻前ら、スレが無駄に進むから情報を小出しにするような香具師は無視しる。
真の教えてクンは、情報を小出しにしなければいけないのですよ。
231217:04/08/18 19:36
HTTPサーバとDHCPクライアントのライブラリは買ってます。
問題は機器をLANに繋いでもPC側からすぐに機器を見えないことです。

それで考え出した解決策が、
a)機器を接続前にPC側からネット内のIPが空いてることを確認しておく
b)機器を繋いでどれくらい待たせるとPCのブラウザから機器が見えるか理論値を知っておく
c)機器を繋げた後、ポートスキャン等で実態を確認してから、PCのブラウザで繋ぐ処理を行う
です。

ちょっと、違う質問ですが今日色々調べてたところ機器のhostnameが設定したPCのものとなっていました。
hostnameは固有じゃなくてもLAN(TCP/IP)やSMBで問題にならないんでしたっけ?
なんか初歩的致命的なミス設定になってんだろうか。
ちょっと待て。鯖がDHCPからIPを貰っているという理解でいいのか?
するとクライアントのPCはどうやって鯖のIPを知るんだ?
もしかしてIPじゃなくて名前で参照してるとか?
そしたらNETBIOSのブロードキャスト待ちだから最大10分くらいか
>>230
情報小出しって言っても、どこまで影響ある情報かは、その場その場の状況で変わってくる。
はじめの書き込みで全ての情報を期待するのは間違い。

まぁ、それでも明らかに情報不足だってのは放置すべきだけどな。
今回のは明らかに情報不足だよね?
まぁ、基本的に質問してくるやつは、全く問題となってる部分の見当が付かない人がしてくると思われるので
それに関連する情報を出せと言うのは結構難しいのかもしれない。

見当が付くなら、それをキーワードにしてググれば解決だし・・・w
まあ、キーワードを教わってもぐぐらない奴もいるんだけどな。
238201:04/08/18 21:51
すみません、レス遅くなってしまいました。
>>237
ワタクシのことですよね。。
すみません。

質問した時点では環境or言語問わずだったんですが、
クライアントはwindowsベースになってしまいました。
libpamというモジュールはunix環境で使われるんですよね?
引き続き調べてみます。
>>238
WindowsならActive Directoryでradiusを叩けるよ。
C++やC#を使いなよ。やり方はWin板でね。
>>231
そのITRONな機器へのIPアドレス割り当てをDHCPで動的にやれ。
# 使ってないIPアドレスを割り当てるのはまさにDHCPサーバの仕事だ。
# それを他の方法でやろうとしているのが君がタコなところ。
固定にしたければDHCPサーバの設定でやれ。(MACアドレス登録)

HTTPサーバがなかなか到達可能にならないのは、
お前の書いたコードがタコだからであって、"LAN"の問題ではない。
>>211
>機器をLANに繋いで少しの間寝かせるとLANに認識される、
>なんて馬鹿なことないですよねぇ。

tp://www.rtpro.yamaha.co.jp/RT/FAQ/LAN/connect-hub.html
>[ 高機能なハブを使用する場合の注意事項 ]
>・ポート接続状況の認識にしばらく時間(数10分級)がかかる事が一般的です。
>・MACアドレスのラーニングにしばらく時間がかかる場合があります。
> 5分,10分,20分の感覚で様子を見てみましょう。
>>241
文書古すぎ…
スパニングツリー有効にしていて30秒待たされてるとか
244デフォルトの名無しさん:04/08/19 22:57
教えてください。
TCPソケットを使ったクライアント、サーバのプログラムについてです。
クライアントとサーバ間のやり取りにつかうデータの大きさはたかだか30バイトなのですが
クライアント側がこれを一度のrecvで読み出すことを仮定して作ってあります。
もしも一度で読めないと通信異常としてしまいます。
(普通は長さをヘッダなどに含めるなどして全て取れるまでrecvを繰り返しますよね?)

このつくりでテストでは問題なかったのですが、
実際どの程度の頻度で問題が発生するのでしょうか。。

運用環境はインターネットなどは介さずLANのみです。
また1分に10回送受信する程度です。

>>244
その作りじゃダメです。頻度の問題じゃないです。
その作りじゃダメです。頻度の問題じゃないです。
その作りじゃダメです。頻度の問題じゃないです。
TCPはバイトストリームです。
TCPはバイトストリームです。
TCPはバイトストリームです。

初心者は理解しにくい(というより抵抗がある)ところなので繰り返してみました。
>>244
接続〜切断までの間の全通信量が30バイトなら、
1フラグメントに納まるから、おそらく問題は出ないに1円賭ける。
247デフォルトの名無しさん:04/08/19 23:03
>>244
逆にどういう環境で問題が発生するのか訊きたいかも。
248244:04/08/19 23:03
即レスありがとうございます。
やっぱりそうですよね。。
でも!それでも頻度について気になるんです。
理屈では間違いなのは分っているのですが
実際のテクニックというか、「頻度が低いからあえて無視しても問題なし」みたいな考えが主流とか?
そんなはずないですか?

>>248
実際のトコ、そんなヘンな実装したことも無ければ見たこともないので、
頻度等は分かりません。みんなそうなんじゃない?

理屈上は1フラグメントに納まる量の通信なら、たぶん途中のネットワークでも
OSのプロトコルスタックでも分割されること無く recv まで上がってくると思うけど
(先方の反応を待たずに複数回の send したりはしない、という仮定の下で)。
250244:04/08/19 23:10
>>246
そうですか。接続〜切断までの間に2〜3回程度の送信/応答の組があります。
やばいかな。
251デフォルトの名無しさん:04/08/19 23:13
244が本質的に正しい。
頻度が低ければ問題ないようなデータで、ルータ超えないLAN内なら
UDPでもいいのでは?

実際のテクニックとしては「プログラムは正しく書く」です。
確か、「どんなネットワーク機器でも最低576byteのパケットは通さないといけない、とRFCに書いてある」
というのを聞いたような。
実際は、よほど古い機器でない限り1500まで通すだろうし
プロトコルの都合を考えても1400程度は大丈夫な場合が殆どかと。
ただ、Win95のダイヤルアップかなんかが576ってのを聞いたような気もしないでもない。

で、複数回の交信があるなら、分割より結合の心配をした方がいいね。
これもNagleのアルゴリズムを無効にしてごまかすことも出来そうだけど。
(完全に交互に送受信するなら大丈夫かな)
253244:04/08/19 23:17
>実際のトコ、そんなヘンな実装したことも無ければ見たこともないので
>頻度等は分かりません。みんなそうなんじゃない?
そうですよね。貴重な経験ができそうです。
ちなみに私の作ったところではないので
バグと騒ぐと、実は問題が起きなかった。っていうのもあれなので黙っていよう。

皆さん、ありがとうございました。
254デフォルトの名無しさん:04/08/19 23:27
>>249
そんな変な実装みんな試しにやってみたことあるんじゃない?
俺は一度も問題出たこと無かった。
1500とかそういう話じゃなくって、バッファの大きさまでは確実に読める
というか、今までは100%読めた。
仕組みは知りません。
で、逆に読めない環境ってどんなものか知りたい。
recvで全部受け取れると仮定したコードは見たことないなあ・・・
実際の挙動は、nagleが有効になってるかどうかでも変わるんじゃないかな。
TCPはデータグラムじゃないんですから、1回のsendの内容が1パケットに
収まって、1回のrecvで受け取れると仮定するのは愚の骨頂です。
よい子は決してそんなことはしないようにね。
TCPの受信バッファが詰まってたかなんかで、変な分割をされた、
という話は聞いたことがあるが。
あとは、telnetでデバッグするとき、やや問題にある程度か。
数百メガ〜数ギガクラスのデータ(isoイメージなど)も
一回のrecvで受信できるのかな。
>>254
こういう事言う人の頭の構造が知りたい。
仮定してはいけないというのが仕様なのに。
>>253
> バグと騒ぐと、実は問題が起きなかった。っていうのもあれなので黙っていよう。

黙るなよ。(「騒ぐ」必要もない)
他人を説得するには知識が必要だ。勉強だと思ってね。
261デフォルトの名無しさん:04/08/19 23:44
>>258
そういうのも実験してみたいよね。
たぶん上限があるんだろうね。
けど、バッファが用意できないからね。
262258:04/08/19 23:54
俺は別に実験なんかしたくないけど。

全部一度にrecv出来るなんて仮定は、俺は絶対にしないし、
そんなコード書くつもりもないから。
>>261
MTUをぐぐれ

それから実験の前に仕様だ。
264デフォルトの名無しさん:04/08/19 23:56
あっそ。
265デフォルトの名無しさん:04/08/19 23:57
>>263
そこで何故MTUが出てくるんですか?
266デフォルトの名無しさん:04/08/19 23:59
結局のところ、実験してみたことある乗って俺だけ?
他の人は口だけ?
>>262
そうだよな。

そもそも>>244は、一度のsendで送ったとも書いてないわけだし。
もうアフォかと

>>266
体動かすだけのおバカさんですか。
268デフォルトの名無しさん:04/08/20 00:01
258と262が同一人物とはおもえん
269258:04/08/20 00:02
5年ほど前にやったよ。
ちゃんとバラバラだったよ。
おれは1 byteごとにsendしたことがあったが、
まああれだよ、結果はここに書く必要がないよ(w
結論

明らかにMTUサイズより小さいときは、一回で送れると仮定してよい。
いちいちループまわすのは愚の骨頂。

※もし、送れない環境があるなら、教えて欲しい。そんな実装みたことない。
>>271
馬鹿の考え休むに似たり。(イヤそれより悪い)
273258:04/08/20 00:06
おう、俺はイヤミで>>262を書いただけだからな。

昔試したっていっても、ダイヤルアップの時代に
2chからdatを取ってくるプログラムのデバッグ出力を確認しただけだけどな。

「そういう仕様になっている」
「そういう環境が存在する」
それだけで充分。

「どこぞの誰様の環境では運良く動きました」
なんてのに興味はない。
>>273
荒らしなら出ていってくれ。
とにかく仕様を無視して、
乏しい体験からの帰納法で設計するのは止めてくれ。

TCP/IPはちょっと常識に反するところもあるけど、
自立しステムと違って、分散システムってのはそういうもんなんだよ。
276デフォルトの名無しさん:04/08/20 00:11
話は変わるけど、お前らってJava厨だったりする?
俺、特別な餌使ってたっけ?
そういうおまえは誰?
>>276
というか、君はカマー本どころか、
「マスタリングTCP/IP」も読んだことないんでしょ。
279デフォルトの名無しさん:04/08/20 00:22
ギャハー
マスタリングTCP/IPだってw
糞本でもそれ以下の知識しかないよりはましでしょ。
たった数百メガのバッファがとれない言語使ってるらしいし。
数百メガもメモリ取ろうとしたらまともなマルチユーザ環境なら
quotaにひっかかっちゃうよ。
どーしてそこでマルチユーザ環境が出てくるの
どんなに本質に関係ない些細な事柄であっても
何とかしていちゃもんをつけたがる人というのが
世の中には居るんですよ。
ネットワーク使ってるならマルチユーザでしょ普通
普通って何?多数のユーザーが使っている環境の事?
「普通」のWindowsだったらquotaで制限なんてされてないけど。
>>285 が言ってるのは Run Level の事
>>286 は Windows 以外使った事が無い
最近の携帯はマルチユーザー環境らしいです。
どうしてそこでRun Levelが出てくるかね。>>284ということか?
この文脈での「ネットワーク」「マルチユーザ」「普通」の定義をしてくれ。

>>288携帯のほうが多かったね、確かに。
当然、ランレベルを3以上にしてあれば
他人の携帯電話にもログインして使い放題です。
いつものパターンだな。
1. TCP/IP理解してない馬鹿が無知丸出し。
2. 無知を指摘されて逆切れ。
3. 本質に関係ないところで煽り合戦。
4. 馬鹿が粘着居座り。
なんかここ むかしの トダイみたいに
なってきたな・・・・
よく考えてみよう。今更Pentium 60MHz, メモリ32MのPCのことを考慮した
プログラミングなんか、linux環境ですらやらないだろう?

たとえば、メモリアロケータを自作して、フラグメントを防いだ!割り当て
時間を短縮した!なんてことに喜んでも、GHz, GbytesのPCにとっては無意味。
時代錯誤も甚だしい。暇な技術者のオナニーでしかない。

ご存知のように、ネットもブロードバンドが主流になり、ブロードバンド
ルータがスループット100Mbpsを自慢する時代だ。ルータ等の処理速度も
桁違いに上がっている。

こういう時代に合った、ネットワークプログラミングのあり方を考えて
いいんじゃないだろうか?ロートルの言葉に惑わされて、1200bpsの時代の
コーディングを強要され、無駄な時間を費やしていないか?

高々数十バイトの送受信のために、「数バイトずつ送られる環境があるかも
しれないから」などという理由で、繰り返しのコードを書くことは、もしか
したら「時代錯誤の技術者オナニー」なのではないだろうか。

以前は様々な物理層やデータリンク層があったから、そういう事情を考慮
する必要があったのかもしれないが、いまやethernet, IPがほとんどだろう。
数パーセント以下の環境での利用を意識して無駄なコードで埋めるよりも、
生産性を重視したほうが、トータルでは有意義になると考える。
まだ居たのか
295デフォルトの名無しさん:04/08/20 11:25
繰り返しのコードったってそんなたいそうなものじゃないしな。
ほとんどイディオムと化してるからさらさらと書けるし、何度も
書くのメンドウならサブルーチンにしてもいい。なんでたかが
それくらいのことでぐだぐだいってるんだか...
もういいって。
携帯電話端末がIEEE 802.3かよ
>>293
>よく考えてみよう。今更Pentium 60MHz, メモリ32MのPCのことを考慮した
>プログラミングなんか、linux環境ですらやらないだろう?

「組み込み」という逃げ場所が用意されている。
しかしパイは圧倒的に小さい。前途の暗い、椅子取りゲームだ。
久しぶりに長文書いたら疲れた。寝る。
いやー、インターネットにはPCしか接続されず
しかも日本と欧米以外は繋がっていないとは知らなかった。
300デフォルトの名無しさん:04/08/20 11:39
「動けばいい」の精神はまず間違いなく有害
>>293
> 繰り返しのコードを書くことは、もしか
> したら「時代錯誤の技術者オナニー」なのではないだろうか。

下らない理由付けて、
バイトストリームであることを無視するのは、
「馬鹿な技術者オナニー」
「俺の書いたコードが動かない環境は見たことがない」
「俺の書いたコードが動かない環境は考慮する価値がない」
「俺の書いたコードは俺の環境で動けば満足」

ちと聞きたいんだが、

ネットワークプログラミングというだけで、なぜ、
「狭帯域環境、低処理能力機器」への対応を
「必須」としなければならないのか

これ教えてくれ。そうじゃないと、ボウヤたちが
ヒステリックに叫ぶ理由が分からん。
「ボウヤたち」だって。
必死さがにじみ出て笑っちゃうね。
ていうか普通送受信をバッファリングするレイヤー作らない?
つくらない。あっそう。
はやく寝なさい。
昨晩からずっと居て最初一人だけsageてなかったもんね。
自分が如何に浮いてるか途中で気がついて周りにあわせたみたいだけど、
書き込み内容に賛同してくれる人が全然居ないのに
こっちは周りにあわせずがんばってるね。

悔しくて眠れないんだろうな。
>>304
> 「狭帯域環境、低処理能力機器」への対応を

とは限らないわけだが…

自立システムと違って、広域分散システムでは、
よっぽどの利点がない限り、前提条件を緩くしておく必要がある。
そうしないと将来技術進歩や接続可能性を妨げる可能性があるからだ。

自立→分散で頭の切り替えが必要。
310デフォルトの名無しさん:04/08/20 12:05
いまさらTCPのコーディングネタなんて興味ないんだけど
>「数バイトずつ送られる環境があるかも
>しれないから」などという理由で、繰り返しのコードを書
かないコーディングをどういうシチュエーション
# 趣味?業務?妄想?、プロジェクトの人数は?コードレビューはやってるの?
でやってるのかってことには少し興味ある。
ファイアウォールが入ってると1バイトずつしか送ってこないことが
普通にあったな
ここだけの話だが対処は「放置した」w
「『仕様です』は魔法の合い言葉」というヤツですな。
SO_NODELAYを指定して、送信側が1バイトずつループして
send()を呼んだりする(そんな奴いないか)とそうなるかも。

それと、MTUって最小値じゃなくて最大値だよね。
携帯のパケット通信は大体1パケット128バイトだし、
細かく送られて来ると思うけど。
「オレのプログラムが2000年以降も使われるわけないから、年は2桁で
いいや」というニオイを感じます。

今のターゲット環境で問題なくても、将来や別の環境でそのコードが使
われる可能性も考えるのがプロ。
俺のプログラムが9999年以降も使われるとは思わなかった。
4桁なら何でもよかった。
今はRFC 2550を読んで反省している。
> 今のターゲット環境で問題なくても、将来や別の環境でそのコードが使
> われる可能性も考えるのがプロ

それは >>293 のいうオナニーなのでは?

もっと論理的な説明はないのかなあ。
仕様に合わせて
自分の言ってることはオナニーじゃなくて論理的だと思ってるらしい
くだらん。
繰り返しのコードを書く必要があるとしてもたかだか一か所
ブロッキングでいいんならfdopen()してgetc()でもfgets()でもfread()
でも使えばいいじゃないか。
fread()は指定したバイト数を読むまでは粘ってくれるぞ、勝手に。
その分select()等との相性は最悪だがな。

無知が吠えてるのってホント見苦しいな。TCP_NODELAYでNagleアルゴリズム
を有効にするかどうかでもTCPの挙動は全く違うんだが、そんなことも
知らないで書いてるだろ。一から勉強し直せよ。
freadってCのライブラリなわけだがそんな挙動は保証されてたっけ?
エラーか eof までは読む
C89なりC99なりでどう記述されてるかはしらん。
ただ、俺の知る限りの実装では、fread()は必要なら何度でもread()を
呼び出してpartial readを避けようとするのが普通だ。
そうじゃないfread()を見たことがあるのなら、教えて欲しい。
>俺の知る限りの実装では
目糞鼻糞
>>323
いや、違うね。叩いた泣き声で判断しているのではなく、
俺はシステムのマニュアルとソースコードで判断している。

多様な環境を考えた場合、C89やC99の記述「だけ」を信頼するのも
それはそれで問題だろう。
fread(3)も返り値を確認しないと。
EINTRやEAGAINで途中で返ることがある。
ferror(f)が真ではあるが、返り値はエラーになるまでに読んだ数。
やっぱり出ました
>俺の知る限りの実装では
>たことがあるのなら、教えて欲しい。
で、普通はfread()のマニュアルには、
partial readが発生するのはEOFに到達したかエラーが発生した場合のみ
である、とだけ書かれている。
システムコール再送等を考慮して何度もread()を呼び出す、といった
点は実装上の詳細に相当するから、普通は「仕様」には現れないんだよ。
そもそもread()がUNIXのシステムコールでしかない、からな。

ちなみにMS Windowsでは無論エミュレーションの_read()が使われているが、
fread()の仕様は同じだよ。
>>325
そりゃ、当たり前だな。
なんだか無知が穴を見つけた気になっていいきになってるようだな。
partial readされない事が保証されている事を確認するためにありとあらゆる実装を調べて回るのと、
partial readされるかもしれない事を年頭に置いてコードを書くの、どっちの方が建設的で低コストなんだろうか。

やっぱり「オレのところでは動いている」なんだろうね。
>>327
たしかに「readを何度も呼び出す」というのは実装の詳細に当たるけど、
「Partial readが起こらない事を保証する」というのは外部仕様になりうる立派な要件だ
ISOの規格書に保証されると書かれていないのなら、それは保証されていないと言う事だから
部分リードが置きうる可能性は常に付きまとうと言う事だ。
>>330
ま、好きにすればよいさ。
以下のコードをfread()に置き換えても行入力モードで動作するんなら、
そのfread()は俺の知っているfread()じゃない、ってことだ。

int main()
{
    char buff[1024];
    int n;
    while ((n = read(0, buff, sizeof buff)) > 0) {
        write(1, buff, n);
    }
    return 0;
}
~
>>331
いや、だから何を以てpartial readと呼ぶか、だ。
システムコール割り込みというUNIX特有でしかもOSによって異なる
問題にまで踏み込めないとすれば、それは「エラー」と記述
するしかないことになる。
まあふつう fread なんか使わないし。
>>334
君、オープンソースのソースコード見たことないでしょ。
移植性に多少なりとも気を使うソフトウェアは
stdioを使うんだよ。無論fread()もね。
> 移植性に多少なりとも気を使う

いや、だからそういうのはオナニーっしょ。
なんでそれを持ち出すかな。
>>336
> まあふつう
とか言っておいてそれか。ようするにあんたの周囲四畳半以外は
普通じゃないわけだな。
>>335 たとえば?
>>336
つまり、
・移植性に気を使う必要がない
・将来OSやNW環境が変わったら動かなくなっても良い

ような場合を想定してるってこと?

LANで通信頻度が低くて帯域も食いつぶしていなければ、UDP パケットも
まずドロップしないけど、こういう場合は 336 は UDP でパケットがドロップ
したら障害が起きるようなプログラムもアリだと思う?
ここはとんだ経験主義者のすくつですね
>>338
おいおい俺にgrep -rをやらせる気か。
ネットワークが絡む著名なソフトで言うと、lynxもwgetもw3mもfread()は
使ってるぞ。
はっきり言って、切りがないぐらいだ。
つまり、そんだけあんたがものを知らないの。
>>339
UDPパケットドロップの話は、またちょっと別の話になると思う。
まあ、話を広げたいなら構わないが。
>>339
>・移植性に気を使う必要がない
>・将来OSやNW環境が変わったら動かなくなっても良い

なんつうか、

・やるかわからない移植
・どんなかわからない未来(何年先?OSはどうなってる?NW環境は?)

のことを、考慮しなければならないことの一つとして
(バカの一つ覚えのように)持ってくる理由はなんですか?

と言ってるんですが。
>>341
wget の fread はネットワークとは関係ない部分で使ってるだけですが。
ソース読んだことあるんですか?
おいおいいつ「ネットワーク絡み」の話に限定したんだよ。
「fread()なんて普通使わない」に対する反論、だぜ
> ネットワークが絡む著名なソフトで言うと、
>>346
矛盾はないだろ。
wgetはネットワークが絡むソフトウェアだ。
すまん、俺がアフォだった。
どんどん低レベルな話に引きずり込まれてるな。

fread()の話はもういいから、元の話に戻してくれ。
349343:04/08/20 13:46
補足

移植性やら将来への対応が大事なことである人たち、
たとえばオープンソース系のソフトウェアの開発者、
が居るというのは分かります。

ただ、それはそれなりの理由があって大事にしているのであって、
理由を鑑みずに、内輪なプラクティスを「(ネットワーク)プログラミングの常識」
みたいなものに持ち上げ、タテマツルのは勘弁してほしい。
ちなみにwgetがfread()をネットワーク絡みのコードで使わない理由は
カンタンで、ソケットディスクリプタをfdopen()することが
そもそも移植性のない作法だからだ。早い話、Winsockではできないからな。

そんな下らない話、いちいち説明させるなよ。大前提だろ。
>>393
いっとくが、read()はリピートすべきだというのは「内輪なプラクティス」
でもなんでもないぞ。
352デフォルトの名無しさん:04/08/20 13:48
393 に期待。
うむ。
>>351
それはread()の仕様からしてアタリマエなのでは?

移植性の確保だのとかいう、一部のコミュニティでしか成立しない理由で、
それを押し付けるのを勘弁してくれ、ということでは。
>>354
当たり前なら結構。そういう認識なら>>293みたいなアフォな発言は
出てこないのだがね。
356デフォルトの名無しさん:04/08/20 13:56
>>351
その根拠は?
LANで数十バイトだったら、ループまわす必要ないよね。
>>356
だーかーらー
せめて、TCP_NODELAYやtelnetについて調べてみろよ。
確かに、環境と、通信するプログラム、ネットワークのバンド幅や
通信メッセージ長etc...を完全に限定できるんなら、
別にかまわんかもしらんさ。
俺なら例えそうだとしても、「環境が多少変わっても問題ない」
プログラムを作るがね。
タカが数行の手間を惜しんで、仕様上正しくないプログラムを作ることに
何の意味がある?
JIS X 3010:2003を確認したらfgetcを何回も呼び出すと書いてた
ようするに開発コストの増大と超特殊環境のサポートのトレードオフってことだよ。
言い争うべき点は何もない。仲良くしようぜ。
何が何でも俺のところ以外は超特殊ということにしたいらしい
次の議題はUDPドロップ時の再送処理の是非についてだが・・・
×例え
○たとえ
環境を正しく認識することは、
開発の困難さを見極める上で大事なことだと思うけど。
>>343
うーん。
これはAPIの仕様どおりにコーディングするコストが非常に低いから、としか言い様がないです。
どうせどんな環境でも長めのデータを受信するときには必須な処理なわけだし。
数行書けばよいだけなので、「一回の recv で全部読めるに違いない」なんて推測をしたり、
「ここでの最大メッセージ長はXXXバイト以下」とドキュメントを書いたりすることの方がメンドクサイ。

コードレビューもない、保守もしない、ドキュメントも書かない、APIの使い方が誤まっていて、
仕様変更等で無駄なコストが発生したり、変更漏れで障害が起きても誰に謝る必要もない、
ってなプログラムなら、好きなように書けばよいと思います。
漏れはそういう開発って少数派だと思うんだけど(←この辺で意見が合わないんだろうな・・・)。

あと信仰の問題として、機能仕様とAPIの仕様から導き出されるコードを書いて、それが問題なく
動くのであれば、「他にこうやっても動く」みたいに横道にそれるのは時間の無駄なのでやるべき
ではなかろう、というのもある。
unixネットワークプログラミングvol.1 のp162の
コードライン43の

if (-nready <= 0)
  continue;

ってなにコレ?誤植?
空気嫁
>>365
> 漏れはそういう開発って少数派だと思うんだけど
> (←この辺で意見が合わないんだろうな・・・)。

まさにそれが俺様意見ですね。

オープンソースだか請負仕事だか趣味だか知りませんが、
そういう仮定があることを明示してほしいものです。

俺事情の俺仮定に基づいた「内輪のプラクティス」であるにも関わらず、
一般的かつ重大なものであるかのようにふるまうアフォが多いなあ、
と思った次第です。

もちろん中には一般的なものも含まれるとは思いますが、
一般化のための演繹は慎重に行うべきでしょう。
>>366
それ日本語版? Figure 6.22 のリストかな?

今手元に原書しかないけど、2nd & 3rd ed. 両方とも

if (--nready <= 0)
  continue;

ってなってるよ。
ところでネットワーク系のAPIの仕様を調べるときにお前らどうしてますか?
システムコールのmanみてもいまいちよくわかんないのよね。

ソースコード見る。
オープンソースマンセー。
372366:04/08/20 15:51
>>369
おっしゃる通り日本語版の6.22のリストです。
やっぱり誤植ですね。ありがとうございました。
kohala.comから落としたソースコードも見てみたら、
--nreadyになってます。

ところで3rd ed. って出たんですか?
一回のrecvで全部読めるのは俺事情の俺仮定ではないんですか。
ふーん
1)どこでも通用するコーディングスタイルと
2)特殊なシチュエーションに限定しないと動かないコーディングスタイルの

どっちが「俺事情の俺仮定」
だと思ってるんだか。しかも、この下らない低レベルな例に限っては
1)に従うのは容易なことなのに、な。

バカとはまさにこのことだな。
>>239
毎度、遅レスすみません。
radius云々言ってた者です。
ADSIってヤツですね?もう少し勉強してみます。
ありがとうございました。
>>366
ってかすべてのデクリメントがおかしくなってない?
-nready => --nready

一瞬頭の中『???』ってなったよ読んだときは。
>>372
日本語版はまだじゃないかな >3rd ed.
原書でよければ今すぐ Amazon へ GO!

>>374
通用しなければならない、通用するべきだ、通用したほうがよい
という主張こそが「俺事情の俺仮定」だよ。
379366:04/08/20 17:18
>>376
たしかに。

>>377
リチャードさん以外の人たちが改訂したんですね。洋書売場で見てみます。
誰もしていない主張に反論して自分の「俺事情の俺仮定」を
ごまかしてるわけですね
結論が出たら呼んでくれ
>>381
いや、来なくていいよ。
>>380
自分自身の考えはどうなのか言ってほしい
384デフォルトの名無しさん:04/08/20 18:59
ダグメールってどうやんの?


385デフォルトの名無しさん:04/08/20 19:07
お前らまだやってたのかw
ほんとに全部読めるからやってみろって。

これからのスタンダードは、大きなバッファ用意して1回で読む。
これだなw
ループ回してる奴は馬鹿。
ある意味サルだなw
ループまわす甲斐性も持てないんだな
387デフォルトの名無しさん:04/08/20 19:19
お前はシコシコループ回しとけよw
さ、RFC書くかなw
KFCでも逝ってろマヌケ
>385
fdopen()するのも旬らしいぞ。
もちろんWindowsでも携帯でも。
390デフォルトの名無しさん:04/08/20 19:36
お前なんか勘違いしてるみたいだけど、バッファさえあれば100%読めるって言うのは
ほんとの話だぞ?
だから、仕様からそういう記述を引用してこいよ
仕様に書いてることなど俺事情の俺仮定だから無意味ですよ
393デフォルトの名無しさん:04/08/20 19:41
はぁ?
だから、これからRFC書くって言ってんだろ?
少しは応援とか出来ないのか?
お前らってそういう奴らだった?
いや、だから、俺の知ってる環境では
実際にバッファを余らしてrecvから戻ってきたから
俺様環境の実装がどうだろうと、別にどうでもいいって。
395デフォルトの名無しさん:04/08/20 19:43
>>394
嘘こくな。
恥ずかしい奴だなw
まあ、なんだ、http://info.2ch.net/before.html の一番下って奴だなだな。
397デフォルトの名無しさん:04/08/20 19:48
>>396
まじめな話してるときに無意味な煽りはよせ!
まじめなのか?
てっきりネタで遊んでるとばかり思ってた
399デフォルトの名無しさん:04/08/20 19:54
イヤイヤ俺は、>>254だから。
最初から大真面目。
俺が寝てから盛り上がるのはよせってこった。
>>393
がんばってください。まずは英語の勉強をしないといけませんね。
401デフォルトの名無しさん:04/08/20 19:55
>>400
お前いいやつだな!
402デフォルトの名無しさん:04/08/20 19:57
ところで、RFCが英語なのはおかしくないか?
公平に著者の母国語ってことにしたらどうだ?
>>402
どうせ誰にも読んでもらえないんだし、好きにしていいよ。
404デフォルトの名無しさん:04/08/20 20:03
>>403
RFC読まないのはお前だけだよw
そういうお前はTCPのRFCを読んだのか
406Followup-to: junk:04/08/20 20:06
ID なくても判別出来るよう age 続ける辺りが
無知の知と言えるかもしんない。
つか、他所で遊んで貰いなさい。
407デフォルトの名無しさん:04/08/20 20:09
>>405
英語で書いてあるから嫁ねーんだろが!
アフォカ
>>396だってば
読まないのは>>403だけって言ってなかったか?
410デフォルトの名無しさん:04/08/20 20:11
あー
お前らの相手してると、せっかくの良スレが糞スレになっちまうよ。
もう寝るw
>>407
お前バカだろ。あの程度の英語でファビョるなよ。
バカなのは分かりきってるからいちいち確認しなくていいよ
>>410の書き込みを見る限り、こいつは本物の気違い。
ageで書き込んでるヤツはリアルで精神を病んでるなw
415デフォルトの名無しさん:04/08/20 20:17
病んでるなw
病んでるなw
病んでるなw
病んでるなw
病んでるなw
病んでるなw
病んでるなw
ほらねw
夏休みはまだ続いているのです>相手をしている方々
まあ、あれだ。頭悪い奴が相手してもらうためには煽るしかないわけで、
テキトーにあしらってやってくれよ。
終わらない夏休み
終わらない夏休みでぐぐると検索避けしてるのに
あのページがトップに来るな
大量にリンクされてるからか
ココ http://pc5.2ch.net/test/read.cgi/tech/1092308415/
でも暴れてたっぽい。
時間帯も一致してる。
422デフォルトの名無しさん:04/08/20 23:09
>>405
普通読んだことあるんじゃね−の?
隅々まで読んだことあるのは,すくないだろうけど。

ISOと違って金とらねーし,RFCサイコ−!!

とか書いてて,金出して本買うのが普通なのかと不安になる僕チン。
>>423
ISOも一部だけど文書公開してるぞ
http://isotc.iso.ch/livelink/livelink/fetch/2000/2489/Ittf_Home/PubliclyAvailableStandards.htm
ISO/IEC 10646:2003マダー? (AAry
NATを越してくれるTCPプロトコルってありませんかね?
無論ユーザー側はなんら特殊な環境を持たずの状態で・・・・

それと、WinXP用にSP2出たけど、それ標準でFWがONになってるんで
これからのNAT超えがますます難しくなるような・・・
普通のユーザーにFWの設定を押し付けるシステムはあんまり良くないと思うし・・・
426デフォルトの名無しさん:04/08/21 05:06
>>425
> NATを越してくれるTCPプロトコルってありませんかね?

ポートフォワーディングのこと?
>>425
「NATを越してくれる」というのは、
NAT内から・NAT内へ の接続、どっちの方向を指しているんだ?
サーバークライアント型でクライアント側がNAT越えをするのは当たり前だろ。
多分、UPnPやSTUNあたりの話でしょ。
サーバークライアント型ではなく、P2P型で
TCPと言っているのが気になる
たんなる希望的観測じゃないの?
TCPでそんなのがあれば良いな と

UDPだったら、いくらでもあるけどな。


つーか、TCPでも一応可能。
FTPに偽装しちまえ
質問に憶測で答えるなよ邪魔くさい
432デフォルトの名無しさん:04/08/21 11:28
ageんなhage
SoftEtherは禁句ですか?
RC-232使ったファイル転送の方法おせーて
>>435
そんな曖昧なもん答えられるかよ。

「このケーブル使ったファイル転送の仕方おせーて」
なんていってるのと同レベル。
まあ、ネットワークスレだから、「PPP 上で ftp nfs smb あたりでがんばれ」でいいんじゃないの。
質問に憶測で答えるなよ邪魔くさい
それはそうだな。
うむ。
ムンッ!
442デフォルトの名無しさん:04/08/22 02:06
>>438
糞レスするなよ
443初心者:04/08/22 03:58
バイトオーダの変換はどうやってますか?
自分は次のようにやってます。
unsigned short tmp;
memcpy(&tmp, pRecv, sizeof(tmp));
unsigned short s = ntohs(tmp);
こんなやり方でよいのでしょうか?
もっと美しいやり方がありそうな気がして。。
unsigned short s = ntohs(*(unsigned short*)pRecv);
つう話じゃなくて??
445初心者2:04/08/22 04:22
>>444
その不可解なキャストはなんの意味があるんですか?
446初心者1(443):04/08/22 04:27
>>444
そうそう。そういう話です。
そのほうがスッキリ書けてよさそうですね。サンクス。

pRecvはunsigned short *じゃないのかよ。それが問題なんじゃないのか?
受信バッファのカレントポインタだろ
そう。受信バッファのカレントポインタの意味でした。
説明不足でスマソ
型のことを言っているんだが。
型はunsigned char *ですた。

>>450
意味わかってない奴
このスレ用のRFCを作る必要があるようだな。
>>452
unsigned short *として使うならunsigned short *で受ければいいと思うが。
455454:04/08/22 06:11
s/unsigned short *として/unsigned shortとして/
>>454
ひっこめ
>>457
寝ろ
目を覚ませ。
460デフォルトの名無しさん:04/08/23 07:24
最近このスレ殺伐としてるなw
462デフォルトの名無しさん:04/08/23 22:20
遙か昔からこのスレは殺伐としている
お兄ちゃん!
464デフォルトの名無しさん:04/08/24 06:54
Winsock2のUDPが一度に送受信出来る量はどれくらいなのでしょうか?
MTU
466デフォルトの名無しさん:04/08/24 11:02
TCPでデータ送ると内部的にACKが返されるとおもうんですが、
windows(2000,XP)では即答なんでしょうか?
それとも送信データが発生するまで少し保留してくれるのでしょうか?
だとしたら、どれぐらいの時間保留するのか教えてください。
きにするな
(*∀*)ウヒョー
469466:04/08/24 11:37
自己解決しました。windowsでの実装値はわからなかったけど、
RFCで500ms以下推奨。200msが多いって本に書いてありますた。
470デフォルトの名無しさん:04/08/24 11:46
>>464
8k単位のデータがEthernet上で6つに分割して送信される。
ポートに0を指定すると
ルーターが勝手に空いてるポート割り振ってくれます?
ま た ポ ー ト 0 厨 か
質問です。
Source addressとDistination addressと言う言葉を聞いたのですが
どのような意味なのでしょうか?
Sorceが送信元、Distinationの方が送信先のアドレスと言う事でしょうか?


>>472
むしろ指定してはいけないw
何も指定しなければ、勝手にWinsockが開いてるポート割り当ててくれる。
ルーターはUPnPでも使わない限り手動設定する必要があり。
ただし、クライアントであればルーターは特に関係ないと思われ。
475デフォルトの名無しさん:04/08/25 04:35
Distinationは知りませんね。Destinationなら知っていますが。
失礼しました。
検索したらありました・・・・。
http://www.google.co.jp/search?q=cache:zjEYpfCXEd4J:plaza.harmonix.ne.jp/~cpulot/Dicd.htm+%22Distination+address%22&hl=ja
Distinationで・・・w

>>475
明らかに誤字ですよね・・。
WSARecvFrom()の5つ目の引数の
LPDWORD lpFlagsって、一体どういうものなのでしょうか?

一応手持ちの文献(Winsock2.0プログラミング)にも書かれてるんですが
どうも訳がおかしいのか、余計な予断だけで終わってしまっていてフラグの説明に関することがあまりきちんとかかれていません。
重複I/Oで使用する場合、通常ここには何を指定すれば良いのでしょうか?
一応本には
MSG_PEEKとMSG_OOBとMSG_PARTIALが書かれてあって
MSG_PEEKの説明の初めに非重複ソケットのみで使用できます。と書かれているのでこれ関係ないと思われます。
で、MSG_OOBはバンド外データだけを受け取るものみたいなので、これも違いますよね。

で、MSG_PARTIALなんですが、どういうフラグなのか、書かれてません。
WSARecv()の時は使用しないという事と、
関数の少量時にlpFlagsに設定される事があるが、それは指定バッファがいっぱいになったのでメッセージの一部だけを格納した事を示します。
と書かれてあり、このフラグ自体の説明になってません。(苦笑

よりしくお願いします。
MSG__PARTIALは、IPでいう、MFフラグを抽象化したものではないかと。
WSARecvFromだったら、受け取るフラグなわけで、
指定しても無意味でなかったかな。
479デフォルトの名無しさん:04/08/28 00:12
winsockにおいて、recvでブロック中に同一ソケットでsendを呼び出すことは出来ますか?
出来ない場合、代替の方法はありますか?
出来ます。socketは双方向通信です。
"全二重"入れるの忘れた…
482デフォルトの名無しさん:04/08/28 00:26
>>481
ソウデスヨネ。少なくともTCPは全二重なんです。
ところがこんな記述が・・・

http://www.kt.rim.or.jp/~ksk/wskfaq-ja/intermediate.html#threadsafety
一方のスレッドが send() を呼び出し、別のスレッドが同一のソケットに対して
recv() を呼び出すのは安全である、という伝説があります。
しかし私はこれを確認したことはありません。
より堅固な情報やデモンストレーション用のコード、
さらなる伝説などがあれば、教えていただけると幸いです。
483デフォルトの名無しさん:04/08/28 00:28
俺が新たな伝説を作るしかないのでしょうか?
プロトコルとしてのTCPは全二重通信を保証してるけど
ライブラリであるWinsockがスレッドセーフなのかどうかは
誰も知らないってことでしょ。LSPの出来にも左右されるし
>>484
あなたが知らないだけですよ
俺一人が知らないだけなら>>482みたいな書き方にはならないと思うが。
また「俺様のところでは動いてる」厨ですか? いい加減うんざりなんですけど
まあ、通信なんてものはあいまいなものさ
>>486
たしかにあなた以外も知らない人がいるでしょうね
489デフォルトの名無しさん:04/08/28 00:52
あの・・・
これってものすごく重要な問題だと思うんですよ。
極端な話し、BSDスタイルが今日の一般的なアプリで使えるかどうかの瀬戸際なんですよ。
>>485さん、もし情報源が有るなら教えていただけませんか?
不安なら、ブロッキングしないように非同期モードにすりゃいいんじゃないかと
491デフォルトの名無しさん:04/08/28 01:02
非同期だと、構造を大幅に変えないといけないので、
伝統的なやり方が通用しなくなりますよね・・・
つらいなぁ・・・
いや、select/pollは充分伝統的だと思うけど。
493デフォルトの名無しさん:04/08/28 01:21
>>492
selectでブロックされるのとrecvでブロックされるのは
本質的に何が違いますか?
selectでブロック中にsendすることは安全ですか?
494デフォルトの名無しさん:04/08/28 01:28
もしかして>>490は、Windowsスタイルの話でなくselect使えって話ですか?
thread safetyはwinsockだけの問題じゃないな
下位のサービスがsafeじゃないと意味なかろう

ブロッキングと非同期は全然別物だ
thread問題を回避するにも、ノンブロッキングでselectする
というのはいい解かもしれん

ちなみにSolaris2.4の頃は、safeであるといいつつsafeでなかった
(ブロッキングが解けなくなることがあったらしい)
Winsockのnon-blockingは酷いから注意。
面倒でも非同期の方がいいと思う。

SunOS 2系列は5.5.1までいろいろ問題があった。
SunOS 5.4(Solaris 2.4)はSunOS 4.Xの維持も終わった後で、
SunOS信頼性の谷間だったね。
Winsockなら重複I/Oマンセーだろ?
使わない理由ないじゃん。
ゲ製作技術板でmmorpgを作れるプログラマを養成するスレが誕生しますた。
自分で作ってみたいなと思う方やネットワークプログラミングに興味のある方は
是非参加してみてください。チート対策などの質問も歓迎です。
現在、生徒が少なすぎて廃校の危機ですがお気軽にどうぞ。

みんなでMMORPGを作りましょう
http://pc5.2ch.net/test/read.cgi/gamedev/1092395334/

mmorpg製作&技術系まとめ
http://gamdev.org/w/?%5B%5BMMORPG%A4%F2%BA%EE%A4%C3%A4%C6%A4%DF%A4%BF%A4%A4%5D%5D
499デフォルトの名無しさん:04/08/29 02:58
宿題スレでレスつかなかったので教えてください
http://www.ops.dti.ne.jp/~allergy/socket/socket.html#event
を参考にしてチャットプログラムを作っているのですが、
標準入力から文字を取り込んで送るにはどのようにすればよいのでしょうか?
500デフォルトの名無しさん:04/08/29 03:58
>>495
下位のサービスって何ですか?
501デフォルトの名無しさん:04/08/29 04:01
>>496
非同期にすると構造を大幅に変えないとならないので、
きついんですが、それが一番いい方法ってことですかね。
502デフォルトの名無しさん:04/08/29 05:23
ブラウザでどのボタンを押されたか分かるソフトってありますか?
javaScriptとアプレットの連携でファイル出力するように試したんですが、
うまくいきませんでした。
>502
ボタンがないブラウザもある。
別の解法を探すべし。
>>499
>標準入力から文字を取り込んで
そんなもんネットワークとは関係ない。
505デフォルトの名無しさん:04/08/29 13:56
>>503
書き方がまずかったです。
サーバへリクエスト送信時に、どのFORMタグのボタンが押下されたか、
または、どの<A HREF>タグをクリックされたかが分かるようにしたいんです。
どんなリクエストパラメータをくっ付けてURLを飛ばしたかをクライアント上に
ログ出力したいんです。
>>505
必要なログを出すブラウザを自作
目的と手段がつながってないから何をやっても駄目
508デフォルトの名無しさん:04/08/29 15:27
>>505
IE上からは無理でしょうか?
また、IEプラグインで実装可能でしょうか?

>>506
他アプリを使用してのIEのオペ操作は、
場合によっては誤動作を起こすので
その際のオペレーションログが必要になるので。
509デフォルトの名無しさん:04/08/29 15:33
↑上は間違い。
>>506
IE上からは無理でしょうか?
また、IEプラグインで実装可能でしょうか?

>>507
他アプリを使用してのIEのオペ操作は、
場合によっては誤動作を起こすので
その際のオペレーションログが必要になるので。
それってなんだかブラウザにパスワード入力したのを
コバンザメアプリが横からかすめとれそうな話に聞こえるんだけど気のせい?
つーかネットワークプログラミングと関係あるの?
>>510
わしもそう思った。スパイウェアの作り方を教えてくれって見える。
サーバー側からどうにかしたい(ユーザーの操作を覗きたい)、
駄目ならIEにプラグインとして実装したい(ブラウザに潜ませて収集したい)
って見える。
513 :04/08/29 19:01
はじめまして 初心者ですので質問もわかりにくくすみません

WinSockですが
以下のように 200バイトづつ受信しています
recv(socket, pBuf, 200, 0)
送り側では一定間隔で200Byteづつ送信しています
受信側でも一定の間隔で受信されることを期待していますが
実際には 600Byteづつバッファリングして受信している
ようです
なぜ??
それがTCPというものです。UDPならプロトコルスタックのバグ。
515 513:04/08/29 19:32
はじめ 通信環境のジッタとも思ったんですが
あまりにも規則的なもんですから
TCPの仕様ですか? 

なんか似たような話が >>244 ぐらいからあったな
517 513:04/08/29 20:29
>>516
いや それは 一度に読めるように想定していいかの話だけど
これは読めるけど 指定したバイトが届いたら recvに
制御を戻してほしいという話です

518 513:04/08/29 20:36
すみません 自己解決しました
Nagleを無効化すればいいんですね
Winsockは200 ミリ秒以下のデーターを
単独ではおくれないようです
TCP_NODELAYで気休めにはなるかもしれんけど・・・

届く時間に何か期待するならUDP使うしかないんでは?
>>513
以下のサイトで勉強しなさい。
ttp://benjamin.ddo.jp/modules/quiz/
>>513
よくわからんが、受信側がバッファリングしてるんじゃなくて、
送信側がバッファしてるんじゃない?
recv(socket, pBuf, 200, 0)ってやれば200バイト読めた時点で返すはずだから。
安易にNagleを無効にする人多いなぁ。
1.TCPでパケットを前提にしたソフトが動かない
2.Nagle無効で解決だ
3.再送で破綻
となるのがオチ。
524はじめまして:04/08/30 00:03
以下のコード(Server.c)を作成した(途中)のですが、実行するとbind関数を呼び出す個所でbind(...) failed: Socket operation on non-socket というエラーを吐いてbind関数が失敗します・・・。
50回くらいソースを見直しましたが、どこが悪いのか全く検討もつきません。
どこが悪いのか教えて頂けないでしょうか?宜しくお願い致します。
環境は、 RH9.0, gcc version 3.2.2
尚、コンパイルは
% gcc Server.c
実行は
% ./a.out 9000
で行いました。 (port 9000 が使用中でないのは netstat で確認しました)

ソースは次へ。

525524:04/08/30 00:04
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>

void die(char *errorMessage){
perror(errorMessage);
exit(1);
}

int main (int argc, char* argv[]){
int serverSock;
struct sockaddr_in serverAddr;
unsigned short port;

if( (serverSock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP) < 0 ) )
die("socket(...) failed");

port = atoi(argv[1]);
memset(&serverAddr,0,sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
serverAddr.sin_port = htons(port);

if( bind(serverSock, (struct sockaddr *) &serverAddr, sizeof(serverAddr)) < 0 )
die("bind(...) failed");
return 0;
}
socketの第三引数は通常0にしておくものだが。
> if( (serverSock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP) < 0 ) )

if( (serverSock = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)) < 0 )

こーじゃねーの?
528524:04/08/30 00:22
>>527

神様・・・。

ありがとうございました。
529デフォルトの名無しさん:04/08/30 00:25
>>528
デバッガは何を使っていますか?
デバガ以前に gcc -Wall でもしておけば問題ない。
531528:04/08/30 00:28
>>529

使ったことないです・・・。
GDBを勉強しようと思います。
Linux上でのプログラミングなのですが、GDB以外にオススメのデバッガってありますでしょうか?
宜しくお願い致します。
532528:04/08/30 00:31
>>530

-Wall は付加しましたが、524の問題では全く検知できませんでした・・・。
533デフォルトの名無しさん:04/08/30 00:37
>>531
Linuxじゃないんだけど、VSのデバッガってすごく便利だよ。
わかりやすいから初心者向きだと思う。
プロになってもそのまま使えるみたいだよ。
534kdbg:04/08/30 01:33
>>531
Linux板のくだ質スレででも。その時は、何故、
> GDB以外
なのかちゃんと説明した方がいい。
535デフォルトの名無しさん:04/08/30 08:50
string command="010";
command += lexical_cast<string>(index);

int ret = sendto(sock,
command.c_str(),
sizeof(command.c_str()),
1,
(struct sockaddr *)&sv_addr,
sv_addr_len);

こんな感じで送信してみたら。
受信側で表示してみると、語尾に
フフフフフ...とか言う不気味な文字列が・・・
ちゃんと受信バッファはmemset()で0クリアしてます。
どうすれば解決しますか?
536デフォルトの名無しさん:04/08/30 08:54
>>535
受信側のコードを示していないあたりネタかな。
あと、c_str()にsizeofを使っても文字列の長さは得られないよ。
>>535
フフフフフ

このスレか前スレにフフフ問題あったよ
538デフォルトの名無しさん:04/08/30 11:25
535はフフフフフが起こる要因は分かっていると思う。
539538:04/08/30 11:27
要因というか仕組みかな
>>535
boost使いのくせにフフフフが判らんということ自体ありえない。
socketプログラミングに手を出しているくせにフフフフが判らんということ自体ありえない。
スレ荒らし同然の質問はヤメレ。
ウフフフフ
542デフォルトの名無しさん:04/08/30 12:08
>>535
受信バッファはC++のstring・文字列ではないので'\0'ターミネートされていないから。
逆に受信データの途中に'\0'が混じる可能性だってあるね
545デフォルトの名無しさん:04/08/30 20:12
ヘヘヘヘ
もあるでよ。

スティーブンスのUnixネットワークプログラミングは、むしろ第二巻のほうが役立つよう気が・・・
フフフフフフは結構ソケットプログラミングやりたての頃は必ず引っかかる定番の現象でしょ。
俺も以前悩んだ覚えがあるぞ。
しかもタチの悪い事にフフフの量にバラつきがあるのでググっても出てこない。
うちのIISはNNNNNNNとかログにでるけどね
フフフってネット以前に体験するだろ
550デフォルトの名無しさん:04/08/31 02:10
うちはNULL.IDA?CCCCCCCCC....だな
551マイク ◆yrBrqfF1Ew :04/08/31 03:00
バカばっか。
まあここはこれが普通か(▽
>>547
検索サイトランキングに フフフフフフとかあるかも
0xDEADBEEF
PEBKAC
いや、頼む、フフフフフfについて解説してるサイトかなんか、教えてくれ
フフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフフ
↑これ以上長いのはググれないらしい。
557デフォルトの名無しさん:04/09/02 23:08
ちょっと質問

TCP/IP上のチャットを作ろうと思って、そこで使うアプリケーション独自の
プロコトルを決めたいんだけど、プロトコル決めるにあたって、
参考になるサイトとかってないかな?
特に再送とかエラー検出とかで、こういうパケット構成にするといいぞ
みたいなのを解説してるページとかあったら、教えて欲しいです
こんな楽しいこと教えるわけがないだろうフフフフフフフ
>>557
そういうネットワークプログラミングのノウハウまとめた
サイトや書籍って日本語のものはほんとに見当たらない。
既存のソース読んで試行錯誤するしかないよ。
まあプロトコルバージョンさえ仕込んでおけばなんでいいよとりあえずw
素直にJavaに逝けって
>>557
IRCのRFCを読んで参考&&反面教師
562557:04/09/02 23:35
ぬぅ

とりあえず試行錯誤してみます。
どもどもでした。
>>557
>再送とかエラー検出とか
とりあえず,もう少しTCPを信用したらどうだ?
>>563
相手のアプリがゴミ送ってきたときも考慮する必要があるし
なんだかんだでそう簡単にはいかないでしょ。最初のうちは。
そんなゴミ送られたら切断するだけだね
そのためのチェックでしょ
567557:04/09/03 00:03
TCP上で通信していて、送信したものは
絶対に、送信した順番で受信されるのですか?

ちょっとネットワークの調子が悪くなって、あるパケットが届かないけど
それ以外のパケットは全部届いてる、みたいな状況も想定すべきかなー
とか思ったんだけど、それはTCPを馬鹿にしすぎでしょうか?
>>567
質問するのは>>1-10あたりやTCP/IPの本を見てからでも遅くは無い。
569デフォルトの名無しさん:04/09/03 00:07
というか無知
570デフォルトの名無しさん:04/09/03 00:21
パケットがまとめられることはあっても無くなったり順番が入れ替わったりはしない
プログラムにバグが無ければな
TCPでデータグラムな使い方するアホがいるからなぁ。
TCP使うのにさぁ、パケットのことまで普通考えないよね。
>>571
数秒間隔でMTUに収まるサイズならパケットとして投げても問題ないんだけどな。
また俺環境では問題ない君登場ですか
特殊環境以外の一般的環境では問題ない。と言ってくれ。
ということにしたいのですね
もう反論不能ですか。だったら最初から出てくんなよw
俺環境だけが一般的で俺様のプログラムが動作しない環境は
全て特殊なのですね
当たり前だろ。馬鹿かお前はw
うらやましい脳味噌をお持ちですね
Content-Lengthを詐称された場合、どう対処するのが正しいんでしょうか?
ここは同じ話題ばかりがループするインターネットですね
>>134-
パケットとして投げること
TCPでデータグラムな使い方すること

この2つは全くの別モノだろう。
だいたい,TCPでデータをパケット的に扱うことは全く問題なし。

>数秒間隔でMTUに収まるサイズなら
とかいってるのはアホ。
うざい
585デフォルトの名無しさん:04/09/03 19:15
自作自演ばっかり
>>581
釣られてみる。

>Content-Lengthを詐称された場合、どう対処するのが正しいんでしょうか?
というふうに書く時点で
「そんな面倒なこと想定したコード書きたくない」とか
「だれかが言っていたからそれをそのままつかった」という言い訳
したいだけだろ。

絶対に誤った値が来ないという仕様で決めうちしてしまう(こんな仕様でやるのは間違ってるが)か詐称されてプログラムがあぼーんしても可って仕様にして何も考えずContent-Lengthを信じろ。

詐称して実際のデータよりも小さい値をいれたならそのまま受信して
そのデータの中身を必要があればチェックすれば良し。
実際より大きい値をいれたのなら、適当なタイムアウト値を設定して
それまでにデータがこなかったらセッション切れば良かろう。
それ以上なにがあるんだ?
>Content-Lengthを詐称された場合、どう対処するのが正しいんでしょうか?

腹いせに次のリクエストの時に、自分も
Content-Length を詐称してサーバーを困らせてやれば?
目には目を。ハニワにはハニワを。ハンムラビ法典で対処するのが吉です。
サーバに遮光式土器の様な目で見られてもいいならそれで良し
    if(lngContentLength != lngRequestBody) {
        strResponseMessage = "ぬるぽ";
        byteResponse = encFilter.GetBytes(strResponseMessage);
        intResponseBody = byteResponse.Length;
        while(true) {
            try {
                intSize = socket.Send(byteResponse);
                if(intResponsedBody >= intResponseBody) break;
            }
            catch(Exception e) {
                break;
            }
        }
    }
>>557
プロトコルかプロコトルかはっきりしろ!
チミの辞書は一体どうなっているんだ!!!
プコトロエウ
プエルトリコ?
593デフォルトの名無しさん:04/09/04 01:57
is a
TCPといえどもパケットサイズ管理の注意は必要でしょ。
NATが絡むと特に。
もっと具体的に書いて見ろ。
TCP上でプログラム組むとき、パケットの分離はアプリケーション側で
処理する必要があるって話じゃなくて?
パケットの先頭にパケット長とか入れてよくそんなコード書いてたなぁ。
597594:04/09/04 03:34
>>595
釣りだと思うなら、勝手に思ってろ。
お前にはNAT環境の仕事は来ないだろうから、
知らなくても大丈夫だ。
>>597
釣りだと思ってないんで、無知なおいらに詳細を教えてほすぃ
いや、マジでちょっと知りたかったり
599594:04/09/04 03:58
>>598
MTUでググってみろ!ぼけが!
具体的なことは書けないのだな。
「パケットサイズ管理」というのは具体的にはどうやるのか教えてくり。
>594
プ
誰が管理するんだYO!
>>594
ソースネクストあたりがおまい向きのソフトを売ってるぞ(げらげら
604594:04/09/04 04:10
何 も わ か っ て い な い よ う で す ね
>>604
オマエガーナジン
>>604
うん、本当にわからない。
後学の為に教えておくれ。
ageで594って書いてる奴は騙りだろ
608594:04/09/04 08:23
プ
>>608
正解!































611デフォルトの名無しさん:04/09/04 10:17
>>610
Cスレにかえれ
Winであまり手をかけずにパケットをキャプチャするには、2000/XPでRAWソケットを使うしか無いんでしょうか
WinPcapを使う。
614デフォルトの名無しさん:04/09/06 14:54
age
RAWソケットはXPSP2から使えなくなりますた
な、なんだってぇぇぇぇ
617デフォルトの名無しさん:04/09/06 15:09
>>616
本当だよ
な、なんで・・・
パケットキャプチャできるからにきまってるべ
プログラム中で ping 飛ばしてるところはどうすれば…?
…って、今調べてみたら 1480 バイト以内なら使えるみたいよ?
  tp://support.microsoft.com/default.aspx?scid=kb;JA;884942
あ、そうなんだ
全面禁止なのかと思ってた
623612:04/09/06 20:07
返事遅くなってすみません。
WinPcapも考えたんですが、あれ、日本語訳されたマニュアルって無いですよね?
どこかにあれば、教えていただきたいのですが・・・
無ければ無いで、英語と格闘してみますが・・・
楽がしたいならWinDumpの出力を取り込むとか。
激しくカコワルイけど。
うーん
両方検討してみます
ありがとうございました!
WinDumpじゃなくて、etherealにしろ。
>>623
基礎からわかるネットワークプログラミングでも買ってみれば?
すいません、今ちょっと余裕が無いんで・・・_| ̄|○|||
余裕のある時に探して見ます
何のために聞きに来たんだ?
いや、専門書買うお金が無いだけです_| ̄|○|||
つーか>>627を買わずとも、webと英語マニュアルで十分。
はっきり言って詳しく書いてある書籍はない。
そんな本書いたって日本では市場が成立するほど売れないしな
633デフォルトの名無しさん:04/09/07 13:27
634デフォルトの名無しさん:04/09/07 14:38
今、無線(802.11b)での通信をテストしています。
電波状況が悪くなった状態での評価を取りたいのですが、
今はノートパソコンを外に持って行って、コードレスフォンで
室内にいる人に協力してもらっているのですが、
無線の電波状況が悪くなる=コードレスフォンの電波も悪くなる
というジレンマを抱えております。
数メートルの距離で電波状況を調整する方法はありませんでしょうか?
プログラミングとは直接関係ありませんが、どなたかご存知の方が
いらっしゃいましたらご教示お願いします。
コードレスフォンがだめなら携帯使えばいいじゃない
636634:04/09/07 15:57
>>635
それも考えたのですが、通話料がかかってしまう上、
一人でテストするのが難しいです。
あと今日みたいな台風の日は室内でテストしたいです。
コードレスフォンのアンテナ部分改造すればいいじゃない(違法)
アルミホイルや電子レンジの中にでも入れてフタで調整すればいいじゃない
639634:04/09/07 16:06
>>637
すみません、デバイスとかはあまり詳しくないので
どう改造すればいいかわからないです。
できれば802.11bの電波状況を悪くして、
コードレスフォンなどを使わずに実験したいです。
640634:04/09/07 16:09
>>638
アルミホイルは試してみたのですが、効果はありませんでした。
電子レンジのほうは、ノートパソコンがぎりぎり入るようなので、
後ほど試してみようと思います。
電磁波対策エプロンにつつめばいいじゃない(効果あるのか?あれ)
642634:04/09/07 16:20
>>638
電子レンジに入れたところ、電波強度の表示が90%から40%に落ちました。
データのレイテンシのばらつきは大きくなった気がしますが、
データは自体は問題なく届くようです。
ついでにアクセスポイントも電子レンジの中に入れるといいのでしょうか?

>>641
なんかいいアイディアのような気がします。
後日購入して試してみようと思います。
アルミ箔だろうと,エプロンだろうと,隙間開いてたら,すぐに回折してくるぞ〜。
644634:04/09/07 16:35
>>643
ということは無線LANカードの周りだけでなく、
コンピュータを丸ごとアルミ箔で包んだほうが良いのでしょうか?
645デフォルトの名無しさん:04/09/07 19:18
WinSockを使っています。
プログラムのメインループ内で、
ノンブロッキングで送受信するのと、WSAEventSelectなどの非同期関数を使うのとでは、
どのような違いが出るのでしょうか?
どちらもメインループ内で他の作業が出来るという点では同じように感じられるのですが、
メリット・デメリットを踏まえて教えていただきたいです。
647デフォルトの名無しさん:04/09/08 00:43
さすがにこのネタにはもう食いつかないか
648デフォルトの名無しさん:04/09/08 11:47
TCP/IPのプロトコルスタックでお勧めを教えて下さい。
CPUはH8,M16Cあたりを使用することになると思います。
基本的にOSは非搭載で考えています。
通信速度よりも実装時のROM/RAM容量を重視しています。
ROM64K/RAM4K以内で実装できれば理想的です。

出来ればフルソース付でOS非依存、量産ライセンス無しっていうのが理想です。
時間的制約もあり量産商品への組み込みのためある程度の信頼性も確保
しなければなりません。
商品はあちこちから発売されているのですが、この種の商品は実際使ってみないと
わからない部分が多いので、みなさんのお知恵を貸してください。

BSDやToppersなどの流用や自作については別途検討していますので今回は
除外させてください。

特に使用した商品の組み込み安さ、安定性と導入費用、ROM/RAM使用量、
組み込みにかかった期間などを教えていただけると嬉しいです。
>>648
ココよりは電気・電子板のほうがよさそうじゃない?
651デフォルトの名無しさん:04/09/08 13:36
くれくれ君ですか
652デフォルトの名無しさん:04/09/08 14:44
ありがとうございます。

>649
今回の場合、物理層はEatherチップではなく電話回線なのです。
そのため実際にはPPPも実装してシリアル経由で通信を行います。
実はリンク先のボードは自分の学習用に持っていますが、ライセンスなどの
関係で量産製品のファームとして使用するのは問題が出てくるのではないかと
思います。

>650
そうですか。どうもしっくりくるスレッドが無かったのでココに書かせて
もらいました。電気、電子板だとハード側の話になってしまうようなので。
TCP/IPプロトコルスタックのソフトウェア部分の話なので、ココの方が
いいかと思ったんですが。
ここってSocketプログラミングの話用なんですね。
スレ違いっぽくてすいません。

他の組み込み向けネットワークの話題を扱ってるスレを探したいと思います。
ありがとうございました。
>>652
環境等は先に書けや・・・
質問です。

一般的にSOCKETを非ブロッキングモードにして、
whileなどでポーリングするのは良くないといわれていますよね。

ですが現在作成しているものはゲームで、基本的に永久ループしているものなので、
それなら非ブロッキングモードにしてrecvもありかなと思ったのですが…。

率直な感想として
「いや、それでも非ブロッキングモードは避けるべきだ」とかありますでしょうか?
> ですが現在作成しているものはゲームで、基本的に永久ループしているものなので、
> それなら非ブロッキングモードにしてrecvもありかなと思ったのですが…。

前半と後半の関連性が不明。
>655
お返事ありがとうございます。
非ブロッキングでのrecvポーリングの一番の問題は、
CPUパワーをくってしまうことだと思うのです。
それならAASyncつかったり、ブロッキングしろということになりますよね。

ただ、今回は元から無限ループを行うゲームであるため
「通信のためにポーリングでCPUパワーを食う」という事態ではありません。
よって許容されうるかなと思いまして。
> ただ、今回は元から無限ループを行うゲームであるため
> 「通信のためにポーリングでCPUパワーを食う」という事態ではありません。

これが具体的に何を意味しているのか分からん。
>>656
一般的にビジーループは許容されません。

非ブロッキングはselect()/poll()とセットでどうぞ。
待機 ⇒ recv() ⇒ EWOULDBLOCK/EAGAIN ⇒ 繰り返し

#ついつい釣られちまった Σ(´D`lll)
>>657
通信のため「だけ」にポーリングでCPUパワーを食うわけではない
ってことでしょ

>>656
ゲーム中の描画毎に通信処理をするプログラムなら問題ない、あなたのやりたいようにやって構わない

他のアホ共は「一般的にビジーループは許容されません。 」なんて戯言言ってないで
質問内容に合ったアドバイスをしてやれ
>>654
> 「いや、それでも非ブロッキングモードは避けるべきだ」とかありますでしょうか?

古いWinsockのノンブロックングは、
>>659と同じくらい馬鹿。
>>654
ちゅーことは新しいwinsockつかえばいいんだってさ
>>657-661
お返事ありがとうございます。

曖昧な言い方でご迷惑をかけて申し訳ありませんでした。

FPS15程度で、ゲームスレッドが無限ループしております。
いわゆるWinMainから始まる大本のスレッドです。

受信に関して主に3つの方法を思いつきました。
・AASyncを使う
・ブロッキングrecv専用のスレッドをつくる
・ノンブロッキングrecvを使う

このうち、ノンブロッキングが楽かなと思ったのですが、世間一般ではノンブロッキングは嫌われています。
私はその理由が
「受信のためだけにwhileでまわしつづけるスレッドを用意する人がいるから。
 ポーリングするならブロッキングしろ!CPUパワーがもったいないだろ!」
だと理解しました(間違っていたらご指摘いただけると幸いです。

ですが今回の場合、whileでまわしつづけているのには「描画とゲームを進める」という必然性があり、
そのとき一緒にノンブロッキングrecvを処理します。

それならノンブロッキングもありかなと思ったわけですが、
「いや、それでもダメだ。AASyncに比べてこういう不都合がある!」
という意見があったらご指摘していただきたいと思いここに書き込んだしだいです。
>>658
つまり、タイムアウト時間0のselectということでしょうか?
それならばrecvだけでいいかなと思います。
「質問者が、通信を待つだけのビジーループを作ろうとしているから、待機select使えと指摘した」
のなら誤解を招いた私のミスです。すいません。

>>660-662
なるほど。
古いWinsockというのがどれか分かりかねますが、1.1を考えております。
「1.1のノンブロッキングrecvは、こんなひどいことが!」ということがあれば、教えていただけると幸いです。
それはそれとして、私の誤解を招く表現で喧嘩を招いてしまい、申し訳ありません。
2.0の非同期型の方が通信のパフォーマンスがいいから。
ネットゲームはラグとの戦いだからちょっとでもラグを減らせるような工夫をすべき。
ラグが関係するゲームとは限らなくないか?
オセロとか将棋かもしれん。
タイミング・パフォーマンスが関係ないなら
そもそも何でもいいというかどうでもいい話だな。
とはいえWin3.1で十分作れるからといって
アプリをWin3.1で作るのような事に何の意味があるのか知らんけど。
ダイレクトにユーザーに伝わるLaFと、
そうではないソケットのどこに同列に語れるだけの要素があるよ。
何で俺に噛み付くかね。
そんな暇があったらもっと気の利いたレスをつけてやりなよ。
我々はメンタリティの成長が不充分である!
俺って誰ですか?俺のこと?
>>670
俺だよ俺!
実は、今うっかりしてパケット落としちゃってさ、俺TCPだから落とし
ましたじゃ済まなくて…やばいよ、どうしよう…
とりあえず、大至急このポートに50万パケット送ってくれ!
>>671
このポートってどこですか?>>671で良いの?

つか、アドレスも教えてくんないと。
本当にパケット送りつける奴がいたら洒落にならないだろ
まあいないとは思うが
674デフォルトの名無しさん:04/09/09 16:18
質問です。
WinSock1.1を使用しています。
WinSockは、プロクシサーバーへの接続動作をサポートしているでしょうか?

それともCInternetSessionに変更した方が良いでしょうか?

よろしくお願いいたします。
HTTPしか使わないならWinInet使ったほうが楽だろ。
>>663
過去スレ読んだら。
WinsockだけじゃなくてWindowsのversionも関係ある。
677デフォルトの名無しさん:04/09/09 22:52
ライブラリに依存する質問になってしまいますが、MFCのCAsyncSocketのOnXXX()は、
どういう仕組みで呼び出されるのでしょうか?
もし、メッセージポンプを経て呼び出されるのなら、OnXXX()の中では長時間の処理が
出来なくなりますが、皆さんどう対処しているのでしょう?
678677:04/09/09 23:38
ソース見てみました。
カレントスレッドのメッセージポンプを利用するみたいですが、あってますか?
もしかしてスレ違いでしょうか?
>>678
あってる
MFCライブラリの質問ならMFCスレのほうがいいと思う
680677:04/09/09 23:47
>>679
ありがとう。
移動して再質問します。
681デフォルトの名無しさん:04/09/09 23:50
質問

銀行に誰かが振り込んだ時、それを瞬時に知るための
プログラムって作れるでしょうか?
web上で入出金明細が表示される銀行だったら、html言語を
読み取って知らせるなんて可能でしょうか?

オレオレ詐欺用か
トロイでも仕込めば?
>>681
銀行側がそういう通知サービスでも提供しない限り現実的でない。
クライアント側からの監視はやめとけ。迷惑。いろんな意味で。
非ブロッキング通信について質問したものです。
皆様アドバイスありがとうございました。
それを参考に色々自分でもがんばってみようと思います。
686681:04/09/10 09:42
>>682
>>684
デジタルコンテンツを運営予定のため
振込みの場合、すぐに反映させてユーザーがコンテンツを
使用できるようにしたいのです。



そういうのはそのサイトの銀行と相談しなよ。
上でも出てるけど能動的に振込みの確認するのって
へたすりゃDOS攻撃と大差ないから。

どういう形態だか知らないけど
クレジットカードとプリペイド型の専用通貨とか以外は
ある程度ユーザーに不便を強いるのも仕方ないと思うけどね。
だいたいにおいて銀行振り込みって、たいていバッチ処理じゃないの?
(最近のオンラインバンキングは違う?)

一日に一回くらいなら定期的に web にアクセスして html 解析、ってのも
まあアリだとは思うが、個人利用ならまだしも、まともな商用サイトで
やることじゃないわな。
689デフォルトの名無しさん:04/09/10 17:04:55
Winsock2をメッセージで非同期動作させています。
ファイル送受信用の関数をスレッド化せずに、FD_WRITE発見時に送れるバイト数だけおくってしまおう、という実装を行っています。
これだと、ファイルの一部をバッファに読み出す間、同時に他のファイル送受信を処理できないように思えます。
パフォーマンス自体に大した差はでないと思うのですが、Winsock入門レベルなので心配です。
素直に、スレッド化したほうがいいのでしょうか、このままでいいのでしょうか。
よろしくお願いします。
690デフォルトの名無しさん:04/09/10 17:16:07
FD_WRITE発見時というのがよくわからん。
あれは「sendに失敗した後、sendバッファがあいたら通達されるメッセージ」だぞ。
sendに失敗するほど一杯一杯にバッファ使いつづけるのか?
691689:04/09/10 17:32:25
>>690
ありがとうございます。
いちおう、sendをまわしているループは、WSAWOULDBLOCKでループを抜ける、という感じにしています。
#ファイル送受信というか、独習用にHTTPサーバー/クライアントを書いています
692デフォルトの名無しさん:04/09/10 17:56:07
バッファをソケットごとに用意すればいいってだけの話ではなくて?
693689:04/09/10 18:15:36
>>692
ありがとうございます。
バッファリングのことでしょうか。
てか、バッファリングすればよかったんですね.....
確かに、固まるタイミングというか、同期処理になる部分はかなり小さくなりそうですね
気づきませんでした・・・・・・
694デフォルトの名無しさん:04/09/10 18:26:46
> ファイルの一部をバッファに読み出す間、
って自分で言ってるやん
695689:04/09/10 20:20:48
>>694
そうですね。。。
以前のというか、現在のは、バッファを必要最小限程度のサイズにしてました。
10M単位でのキャッシュっぽい使い方に気づかなかった、という感じです。
696デフォルトの名無しさん:04/09/10 20:57:39
またでっかいバッファだな、おい。
697689:04/09/10 21:53:11
>>696
でかすぎますかorz
1Mくらいでおとなしくしておきます。
ありがとうございます。
698デフォルトの名無しさん:04/09/10 23:43:27
この会話って成立してたの?
699デフォルトの名無しさん:04/09/10 23:44:44
ノーマネーでフィニッシュです
700デフォルトの名無しさん:04/09/11 00:28:34
>>697
スレッド化うんぬんとあるけれど、要はあなたのHTTPサーバが同時に複数のクライアントに対し
ファイルを転送してあげたいが、どれか一つのクライアントの面倒を見ていると
他のクライアントに応答してあげられない。どうすればいいか?
という質問?

701デフォルトの名無しさん:04/09/11 00:30:15
どこからHTTPが出てきたんだろう
702デフォルトの名無しさん:04/09/11 00:52:44
703デフォルトの名無しさん:04/09/11 01:13:15
>>701
はずかしいね
704デフォルトの名無しさん:04/09/11 01:24:41
どこからって、お母さんのお腹に決まっているじゃない!シクシク
705デフォルトの名無しさん:04/09/11 01:26:38
コウノトリとかキャベツとかって話は最近きかないな
706デフォルトの名無しさん:04/09/11 01:54:20
>>705
それはお前の会話相手が大人だけだからだろう。
大人同士が真顔でコウノトリが、キャベツが、と会話してたらキモイ。
707デフォルトの名無しさん:04/09/11 02:03:14
いやーこの前コウノトリが来てさぁ
708デフォルトの名無しさん:04/09/11 02:07:00
やっちゃったよー
709マイク ◆yrBrqfF1Ew :04/09/11 02:39:25
そもそも2chに入り浸ってるのがキモイ。
710デフォルトの名無しさん:04/09/11 02:46:45
2chにコテハンで書き込んでるのはさらにキモイ。
711デフォルトの名無しさん:04/09/11 02:56:34
こらこら、キモイの同士で煽り合うのは止めなさいw
712689:04/09/11 03:48:07
>>700
ファイルの読み込みの部分をスレッド化しないと、メッセージを使ってブロックしない(という表現でいいのかはわかりません)ようにしても、その部分で固まるんじゃないかという質問です。
言い換えると、別のSoketからのFD_WRITEが、既にsendループで送信を行っている時に来た場合に、それをタイミングよく処理できるのか?という質問です。
713デフォルトの名無しさん:04/09/11 05:21:22
ファイルからはじゃんじゃん読めるけど送信は遅いだろうから
じゃんじゃんsendすればすぐにでもWSAWOULDBLOCKになって
抜ける。んで、クラがそのタイミングで切り替わって、そいつの相手が出来るってつくり?

漏れが思いつくのはクラをacceptするたびにそのソケット用のスレッド一個作って、
そこでファイルを適当な単位で読み出しながら送信して、非同期未完了時は完了まで
WaitForSingleObjectとかで待って、FD_WRITEになったらまた読み出してsendする、というループにする。
終わったらclosesocketしてスレッドを抜けたらよいと思う。
このときファイルは読み出すだけだから複数スレッドから同時アクセス可能だし。

714689:04/09/11 06:45:58
>>713
ありがとうございます。
やっぱりスレッド使うのが一般的ですか。
読み込み用のメソッド、ソレッド化できるように意識しながら書いてみます。
715デフォルトの名無しさん:04/09/11 13:53:07
TransmitFile
716デフォルトの名無しさん:04/09/12 01:57:57
>>715
Windowsだね。Linuxだとsendfile(2)。
ベンチがたくさんあるからぐぐってね。
717デフォルトの名無しさん:04/09/12 03:06:55
>>713

ttp://www.hyuki.com/dp/cat_index.html#thread
Thread-Per-Messageパターン
Worker Threadパターン
Producer-Consumerパターン

一番単純な1スレッドで頑張るから初めて、

■ Thread-Per-Messageで並行性を高める(
■ Worker Threadでスレッド起動・停止の無駄を避ける

といったあたりを要件に応じて実装すべきでしょう。

RPC/RMIみたいにメッセージ志向のプロトコルの場合は、
Producer-ConsumerでConsumer側をマルチスレッドで
実装するとスケーラビリティの確保がしやすいかも。

それなりに複雑な実装になるけど、1〜2スレッドでProducerを
実装して、CPU数の倍程度のConsumerスレッドでリクエストの
処理を行うって形なんてのもありえるのでは?
718689:04/09/12 21:15:45
>>715-716
ありがとうございます。
便利そうな関数ですね。
学習中なので、一度、力技でファイル送受信を記述して、動作が理解が出来たら使うことにします。

>>717
(横からすいません)
ありがとうございます。
winsockを扱うとなるとやはり、スレッドは一通り覚えておいたほうがよさそうですね..
1スレッド版が終わったら、Producer-Consumerって形に拡張してみようと思います。
719デフォルトの名無しさん:04/09/13 18:20:16
720デフォルトの名無しさん:04/09/14 16:29:55
rs232c出力で、無手順(ZMODEMでもないやつ)は英語で何と呼びますか?
721デフォルトの名無しさん:04/09/14 16:56:19
non-procedure
722デフォルトの名無しさん:04/09/14 17:54:31
サンクツ>>721

rs232c出力する機器があるんですが、
機器が無いのでそのシミュレーションをPC行いたいんです。

PCからバイナリファイルの内容をシリアル出力するフリーソフトなんかありますでしょうか。
723デフォルトの名無しさん:04/09/14 17:55:23
で、質問に答えるとまた質問するわけか。
724デフォルトの名無しさん:04/09/14 17:56:49
>>723
いえ、今度が最後の質問でつ。
725デフォルトの名無しさん:04/09/14 18:00:41
>>722
ここはプログラム板だぞ?
自分で作れという言葉しかかけられないな
726デフォルトの名無しさん:04/09/14 18:03:24
ところで、rs232cとnon-procedureの言葉はどういう関係なんでしょ。
RS422 というのもあるみたいですね。

>>725
コンポーネントみつけたので動作するものは数分で自作出来そうです。
画面直し入れると結局膨大な時間になるんですが。
727デフォルトの名無しさん:04/09/14 18:04:19
で、質問に答えるとまた質問するわけか。
728デフォルトの名無しさん:04/09/14 18:16:39
>>727
掲示板でつから。



ヤな人はnews-groupにでも炒ったらどうでつか。
729デフォルトの名無しさん:04/09/14 22:42:47
不自然な言葉遣いでつね
726の自作自演で別人格を装ったのでつか?
730デフォルトの名無しさん:04/09/15 00:44:01
典型的な教えて君かよ
731デフォルトの名無しさん:04/09/15 00:46:48
なんだよ!
相談室って書いてあるのに質問して何が悪い!
あったまきた。
732デフォルトの名無しさん:04/09/15 00:51:22
>>731
氏ね
733デフォルトの名無しさん:04/09/15 00:52:08
>>731
氏ね
734デフォルトの名無しさん:04/09/15 01:08:17
自演乙
735デフォルトの名無しさん:04/09/15 05:40:57
>>662
×大本のスレッド
○大元のスレッド
736デフォルトの名無しさん:04/09/15 06:00:56
>>735
辞書で、大本と大元を調べてみましょう。
737デフォルトの名無しさん:04/09/15 06:05:09
おおほんだ おほ― 3 【大本多】


本多髷(まげ)の形の大きなもの。



三省堂提供「大辞林 第二版」より
738デフォルトの名無しさん:04/09/15 06:09:44
だい-げん(大元)
「大元帥明王」の略。

大辞林
739デフォルトの名無しさん:04/09/15 06:15:47
プログラマって無知な上に拘るから国語ネタに食いつきがいいね。
続きはこちらへ
http://pc5.2ch.net/test/read.cgi/gamedev/1083728025/
740デフォルトの名無しさん:04/09/15 06:59:28
やはりあちらの住民が暴れていたのか。
ほんとと迷惑だよな。
741デフォルトの名無しさん:04/09/15 08:50:11
>>722
んなもん、ネットワークプログラミングじゃねーよ。
TeraTermの中でstdin/stdoutを読み書きするプログラム書けよ。
742デフォルトの名無しさん:04/09/15 09:24:52
質問です。
制御パケットのやり取りをする場合ってサイズどれくらいに抑えた方が
スピードが速いですか?
Winsockですが


743デフォルトの名無しさん:04/09/15 09:48:49
下手な考え休むに似たり。
744デフォルトの名無しさん:04/09/15 10:07:51
MTUサイズ内に抑えると一度に全部受け取れるから超お勧め
745デフォルトの名無しさん:04/09/15 10:51:10
>>722
copy ファイル名 com1:
746デフォルトの名無しさん:04/09/15 10:52:02
>>744
そのネタ秋田
747742:04/09/15 11:01:43
MTUもたしかに一要因になりそうですね。
ちょっと言葉たらずすぎましたすいません。
通信する2点はけっこう長距離で経由するルータとかそのあたりの回線
状況とか考慮した場合に一般的に効果が一番期待できそうなサイズ
ってことです。
小さければ小さいほどいいですがそれだと通信できる情報が減ってしまうので
非効率になってしまいますよね
その辺のバランスの取れたサイズってどの辺りが一番適正なんだろうっていう
疑問です。
748デフォルトの名無しさん:04/09/15 11:03:57
馬鹿は何も考えずにただTCPを使え。
749デフォルトの名無しさん:04/09/15 11:14:48
>>748
UDPならサイズは関係ないってことですか?
750デフォルトの名無しさん:04/09/15 11:26:39

   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |       UDP
/     ∩ノ ⊃  ヽ  
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
751デフォルトの名無しさん:04/09/15 13:13:09
LANを通る場合、実はUDPもTCPもそれほどスピードに差は無いらしいが。
なんでもLANを通るときに仮想接続というのを作ってパケットを流すが、
この仮想接続を開いたり閉じたりするのに多少のオーバーヘッドがある。
そしてUDPの場合は一つのパケットにつき、仮想接続を一回開/閉するが
TCPは一回だけだと。だから両者では差がほとんど無くなると。
752デフォルトの名無しさん:04/09/15 14:40:18
753デフォルトの名無しさん:04/09/15 17:57:59
最近ソケットプラグラムを覚えたんだけど分からない事があるんで質問させて。
構造体のデータをそのまま送受信するにはどうすればいいのでしょうか?
たとえば
struct data
{
int d1;
int d2;
int d3;
} send_data;

send_data.d1 = 10;
send_data.d2 = 20;
send_data.d3 = 30;
のような構造体データを送信するのに
send(socket,&send_data,sizeof(send_data),0);
としても正常に送信出来ないのですが・・・
754デフォルトの名無しさん:04/09/15 18:01:49
>>753
素直に単体で送れ
755753:04/09/15 18:04:33
>>754
単体で送るって事はつまり
send(socket,&d1,sizeof(int),0);
send(socket,&d2,sizeof(int),0);
send(socket,&d3,sizeof(int),0);
って事?
756デフォルトの名無しさん:04/09/15 18:08:26
どういう結果から正常に送信できないと判断したのかくらい書けよ。
757デフォルトの名無しさん:04/09/15 18:12:15
>>753は、ただの釣り。
相手にすんな、お前ら。
758デフォルトの名無しさん:04/09/15 18:12:33
>>753
どうして正常じゃないと思うのかを説明しないと
なんとも。sendシステムコールがエラー返すのか
正常終了するけど何もでないのか、送られてる
けど内容が期待したものとではないのか等々。
759デフォルトの名無しさん:04/09/15 18:12:44
構造体のまま出すと
・プラットフォームで構造体のバイナリレイアウトが異なるので正しく取れない。
・プラットフォームでエンディアンが異なり、intなどのバイナリオーダーが逆転するなど起きる。

とおもう。
760デフォルトの名無しさん:04/09/15 18:17:20
>>756
失礼。受信側のコードは下記のようにしました


bufsize = sizeof(data);
char buf[bufsize];
int D1,D2,D3;

recv(socket,buf,bufsize,0);
D1 = ((struct data*)buf)->d1;

これでD1に構造体のd1を取り出そうとしたのですが全く意味の無い数字が
入ってしまいます。

>>757
は?
761デフォルトの名無しさん:04/09/15 18:18:53
>>751
それって、FAQの5.1のこと?
ちょっと違うような気が。
762デフォルトの名無しさん:04/09/15 18:45:24
>>760は戻り血とかいっさいチェックしてないってオチ?
763ネットワーク系初心者:04/09/15 21:29:31
Ethernetフレームは、プロトコルデーターサイズが最低 46 byte てのがどうも決まって
いるようなのですが、Linux/NetBSDで ping datasize 1 を試した時に tcpdump や
EtherReal等で、パケットトレース&ダンプ表示すると送信方向には46byte以下のフレームで
受信方向ではゴミデーターが後ろにひっついて 46 byte で受信してるんですが、
これはなんでか分かる人いませんか?
764デフォルトの名無しさん:04/09/15 22:26:27
bufsize = sizeof(data);
char buf[bufsize];

ってあまり見ない書き方だね、って俺だけ?
#gccか何かの拡張書式?
765デフォルトの名無しさん:04/09/15 22:27:06
C99
766デフォルトの名無しさん:04/09/15 22:34:08
というか普通だと思ったけど・・・
767デフォルトの名無しさん:04/09/15 22:40:03
時代は変わったんだな
768742:04/09/16 01:51:18
LANがボトルになってるなら751の関連で無視できる範囲なのかな
ルータでパケット分割が発生したときのオーバーヘッドとかどうなん
だろう?不達発生率とかは?
大量のデータのやり取りでも無視できる範囲なら誰かそう言って下さいな
ちなみにRealPlayerは500-600で
WMP数kだそうです

>>756
それってネットワーク部分じゃなくてCの論理エラーじゃない?
769デフォルトの名無しさん:04/09/16 05:08:02
>>766
ネタ?
それともこの板ってこんなことも訂正されないほどレベルが下がってたのか。。
770769:04/09/16 05:14:36
・・とおもったら本当に可変長配列ってあったんですね。
単に漏れのレベルが低いだけですた。。。
771デフォルトの名無しさん:04/09/16 05:29:01
昔はgccの独自拡張だった気がするニャ
772デフォルトの名無しさん:04/09/16 07:51:11
>763
送信機でパケットトレースしたんでねーの。
パケットを46バイトにする仕組みが、パケットキャプチャレイヤより
下に有れば、そういうことになるとおもうが。
773デフォルトの名無しさん:04/09/16 18:06:45
RS232Cのフラグ文字(コード19)とは何でしょうか。

他にも制御コードがあるみたいですが、一覧表でもあれば...
774デフォルトの名無しさん:04/09/16 18:08:18
普通だと思った

↑これはネタだろ。
775デフォルトの名無しさん:04/09/16 18:35:39
>>773
ttp://www.robelle.com/library/smugbook/ascii.html
こんな感じ?
ANSI Character Setとかで検索すれば見つかりそうだが
776デフォルトの名無しさん:04/09/16 19:32:52
man ascii
777デフォルトの名無しさん:04/09/16 21:40:17
777get
778デフォルトの名無しさん:04/09/16 22:31:33
PSOの様にロビーサーバを中継して、クライアントが部屋を作りサーバを
立ち上げ、そのサーバに他のクライアントが参加するという形のゲーム
を作成しています。

ルータを中継しているマシンはポートフォワーディングの設定をして
いないと、サーバとして立ち上げても他のクライアントからconnect
要求を受け付けないのでサーバになれません。
どうにかしてポートフォワーディングの設定をしていないマシンでも
サーバになれるようにしたいのですが、可能なのでしょうか?
通信にはwinsockを利用しています。
779デフォルトの名無しさん:04/09/16 22:57:22
>>763
最近の NIC ではチップの方で IP Checksum 計算してくれる機能とかもあるくらいだから、
ボードによっては OS 側ではパディング位省略できるものが普通にあるんじゃない?
780デフォルトの名無しさん:04/09/16 22:59:44
>>751
>なんでもLANを通るときに仮想接続というのを作ってパケットを流すが、
>この仮想接続を開いたり閉じたりするのに多少のオーバーヘッドがある

そーいうのは普通 WAN っていう。
んで仮想接続をキープして LAN 風にするのを VLAN とか言う。
781デフォルトの名無しさん:04/09/16 23:01:22
>>742
DNS は 500 バイトだか 512 バイトを使ってる。真似しておくのがいいのでは?
マジメにやるなら DONT FRAGMENT ビットの立った長めのパケットをやりとりして、
その経路の MTU を調べるのが良いような気がする。
782デフォルトの名無しさん:04/09/16 23:08:15
>>718
遅レスだけど、Windows NT 系 OS だけで動けばいいんなら、
ファイルを送信する場合に効率最大なのは IO コンプリーションポート+TransmitFile 。
カーネル空間 -> ユーザ空間 -> カーネル空間という無駄なデータコピーのオーバーヘッドもないし。

IO コンプリーションポートってのは、WinNT 系の非同期 IO 機能で、非同期で呼び出されたIOが完了すると
どこかに用意されていたスレッド(こういうのをスレッドプーリングっていいます)でおもむろに登録していた
完了処理が呼び出されるという仕掛けです。
783デフォルトの名無しさん:04/09/16 23:21:04
>>778
UDP Hole punching!!で逝け
784デフォルトの名無しさん:04/09/16 23:26:42
>>783
ゲームサーバとしてはオススメできない気はするけどね(^^;
785デフォルトの名無しさん:04/09/17 01:20:09
>>784
その理由は?
786デフォルトの名無しさん:04/09/17 01:38:35
>>785
仕組み上、一対一でもいつまで記憶しているかわからないルータ等の
UDPの転送を頼らないといけないのです
多くの接続があると思われるサーバ用途となると、XXのルータでは動いたとか
動かなかったとかのレベルになってしまうわけです
またUDPでそんな多くの情報となると、よほどうまく作らないとデータの欠けや再送
も辛くなりますね
787デフォルトの名無しさん:04/09/17 01:39:26
アフォ登場
788デフォルトの名無しさん:04/09/17 01:45:40
>>787
後学のために、その理由を教えてくれませんか?
789742:04/09/17 02:07:34
>>781
500もあればたいていの制御情報は送れるからいいかな
たしかに実測で可変にするって手もありますね
組むの大変そうだけど

>>783
ゲームってことは万人に繋がらないといけないわけでしょ?
LAN内にいるPCとかはどうするの?
MACで無理やりパケット飛ばせるんだっけ?
ハッカーが使いそうな手ですねw


790デフォルトの名無しさん:04/09/17 02:15:35
二人目のアフォ登場
791デフォルトの名無しさん:04/09/17 03:02:21
>>786
>仕組み上、一対一でもいつまで記憶しているかわからないルータ等の
>UDPの転送を頼らないといけないのです
がんばれ

>多くの接続があると思われるサーバ用途となると、XXのルータでは動いたとか
>動かなかったとかのレベルになってしまうわけです
仕様ということに仕様
ていうかSkype並に繋がるならまあオッケイ?みたいな感じ?みたいな

>またUDPでそんな多くの情報となると、よほどうまく作らないとデータの欠けや再送
>も辛くなりますね
TCPの真似をすればいいだけだ。超がんばれ

でもまああれだよね、こういうのに対応したライブラリなんか聞いたこと無いから
一から開発はきっと大変よね、間違いない

>>789
>ゲームってことは万人に繋がらないといけないわけでしょ?
うん
>LAN内にいるPCとかはどうするの?
うん
>MACで無理やりパケット飛ばせるんだっけ?
マカー?
>ハッカーが使いそうな手ですねw
バッカー?
792デフォルトの名無しさん:04/09/17 03:19:25
何も分ってない791に激萌え
793デフォルトの名無しさん:04/09/17 03:57:46
791の馬鹿が露呈しましたw
794デフォルトの名無しさん:04/09/17 04:03:45
三人目のアフォ登場
795デフォルトの名無しさん:04/09/17 04:10:36
具体的場所を指して馬鹿だのアフォだの分かってないだの言って欲しいなぁ
796デフォルトの名無しさん:04/09/17 04:12:29
>>795
彼らも根拠が示せないから仕方が無いよ
797デフォルトの名無しさん:04/09/17 05:04:33
そんな事しなくてもUPNPを使えばいいよ
798デフォルトの名無しさん:04/09/17 06:34:32
SOCK_DGRAMってどう発音すればいいですか?
799デフォルトの名無しさん:04/09/17 06:37:31
>>798
SOCK_DGRAM と発音します。
800デフォルトの名無しさん:04/09/17 06:42:44
>>799
それは英語で書くとどのようになりますか?
801デフォルトの名無しさん:04/09/17 06:45:27
>>800
そけっと だいあぐらむを英語にして下さい。
802デフォルトの名無しさん:04/09/17 07:05:14
>>801
朝からおバカな質問につきあっていただき
ありがとうございました。m(_ _)m
803デフォルトの名無しさん:04/09/17 07:19:59
英語にすると、socket datagramとなるわけだがな。
804デフォルトの名無しさん:04/09/17 10:58:53
相変わらず雰囲気が最悪だな。
805デフォルトの名無しさん:04/09/17 11:33:05
>>798
速攻ダグラム
806デフォルトの名無しさん:04/09/17 13:17:39
807デフォルトの名無しさん:04/09/17 15:05:41
>>789の、
>MACで無理やりパケット飛ばせるんだっけ?
ってのは、MACアドレス?
だとすると、クライアントがサーバのMACアドレスがわかり、
かつ途中の経路のARPテーブルに
そのMACアドレスが正しく登録されてたら
LAN内までパケットルーティングされる、って話?

正直ネットげーでの利用は非現実的だ。
808789:04/09/17 15:54:42
>>807
Wake Up On Lan みたいなもんかと思ってた
UDP Hole punchingちゃんと調べてみたけど
いちから作るの大変そうだね、作ったらほしいくらいですが
uPnP使ったほうが現実的な気がする

提案なんだけど、uPnPもってるのがいようがいまいが
第三者かゲームで対戦するだれかがサーバするってことにしとけば
ほぼ、つながらない環境なくなるよね
サーバが落ちた時の工夫が必要だけど
809778:04/09/17 19:24:26
色々とアドバイスありがとうございます。
通信の仕様についてはskypeの前例もあることですし気合で
UDP Hole punchingを実装してみたいと思います。
周りの人間達は「ポートフォワーディング?uPnP?知らん。俺windows2000
だし、ゲームのためにそんなの設定するの嫌」といった人も結構いたので。

>仕組み上、一対一でもいつまで記憶しているかわからないルータ等の
一応、再送頻度が高ければなんとかなるみたいです、あるルータは60秒
以上データが来ないと記憶消去するとか。
810デフォルトの名無しさん:04/09/17 19:31:36
>>809
がんがれ
UDP Hole Punching自体は仕組みを理解していれば簡単だ。
信頼性がほしいとなると実力次第だけど。
811デフォルトの名無しさん:04/09/17 19:48:10
差出人、順序等不明の手紙を大量に受け取るのにすべて正常に送り返さないといけない中の人も大変だ
812デフォルトの名無しさん:04/09/17 21:22:14
>>809
よくぞ言ってくれた!
実装が成功したら是非ライブラリ化してくださぁ〜い

>>811
面白い例えだね
でも手紙の裏面にちゃんと書いてあればいいってことでそ
813デフォルトの名無しさん:04/09/19 18:05:48
Javaでステルススキャンするにはどうしたらよいのでしょうか?
そもそもそんなことできないのでしょうか?
どなたかお願いいたします。
814デフォルトの名無しさん:04/09/19 18:45:43
おまえには無理
815デフォルトの名無しさん:04/09/19 18:48:07
じゃあおまえにはできるのか?
816デフォルトの名無しさん:04/09/19 19:06:28
無理に決まってるだろw
817デフォルトの名無しさん:04/09/19 19:06:29
おれには無理
818デフォルトの名無しさん:04/09/19 20:17:36
Java で RAW ソケットが扱えるなら簡単。
819デフォルトの名無しさん:04/09/19 20:48:43
SOCKADDR_IN socka;
と言うのがありまして。
この変数にきちんと値が指定されてるかどうか調べたいのですが、どうすればいいのでしょうか?
if(socka==NULL)
とかすると、'==':型'SOCKADDR_IN'の左オペラントを扱う演算子が見つかりません
と出ます。
820デフォルトの名無しさん:04/09/19 20:51:24
821デフォルトの名無しさん:04/09/19 20:52:28
822デフォルトの名無しさん:04/09/19 20:56:54
>>819
無理。
先に
socka.sin_port==0;
とかやっといて、それが変わってるかどうかで判別汁
823デフォルトの名無しさん:04/09/19 20:58:33
そりゃそうだ、ポインタになってないからね
winsock使う範囲でそんな判定必要になったことないけどね
824822:04/09/19 21:10:27
ごめ、=が1個多い。
825デフォルトの名無しさん:04/09/20 02:50:32
ネットワークプログラミング以前の問題なので、
C言語のスレにでも行って初歩から勉強してください。
826デフォルトの名無しさん:04/09/20 11:50:37
>>825
どの質問の事?
ちと遅すぎやしないか?(苦笑
827デフォルトの名無しさん:04/09/20 11:53:12
まー、Winsock限定の質問って正直ありえないんだけどね。
プログラマにとってCのコードの集合体がWinsockであって、そのブラックボックスの中はプログラマが触る事はないから…

そこまで言ってしまったら、Winsockの関数の使い方だって、Cの関数の使い方の質問になるしw
828デフォルトの名無しさん:04/09/20 12:03:09
>>827
さっさと失せろ、知ったかぶり。
829マイク ◆yrBrqfF1Ew :04/09/20 12:33:56
>さっさと失せろ、知ったかぶり。

多くのネラに言えそうだな(▽
830デフォルトの名無しさん:04/09/20 12:35:22
831デフォルトの名無しさん:04/09/20 16:00:33
自分のIPアドレスを
192.168.1.1
の形式のNULL文字終端の文字列として取得したいのですが
どうすればいいでしょうか?
Windows2000を使用しています。
832デフォルトの名無しさん:04/09/20 16:04:16
言語くらい書け。
833:04/09/20 16:06:41
すいません。ちょークソ初心者なんですが、
HSPで、bmpファイル等を画像専用に作成したフォルダ等に入れると
picload等で実行した時に、エラー13でファイルが読み込めないのですが
何故でしょうか。
フォルダ内にあるファイルには、特別な命令が必要なんでしょうか。
どうかご指導お願いします。
834デフォルトの名無しさん:04/09/20 16:09:20
>>833
眼科や精神科をお勧めする
835:04/09/20 16:11:38
え、そんなアホっぽいくらい簡単なことなんですか?
836デフォルトの名無しさん:04/09/20 16:14:59
>>832
C
837デフォルトの名無しさん:04/09/20 16:15:25
パスが違うってこと?
HSPちょー初心者だからわからんけど
でも激しくスレ違い
838デフォルトの名無しさん:04/09/20 16:16:42
>>831
gethostbynameでlocalhostとって
それを文字に展開すればいい
詳しくはgoogleにて
839デフォルトの名無しさん:04/09/20 16:19:34
>>838
そこまではやっています。
hostent*
からどうやって(ry
840デフォルトの名無しさん:04/09/20 16:20:27
hostent型までたどり着いているのに・・・
841デフォルトの名無しさん:04/09/20 16:34:16
0xFFFFFFFFを自力で
255.255.255.255
にするんですか?
簡単だけど、よさげな関数はないの?
842デフォルトの名無しさん:04/09/20 16:35:46
inet_ntoa
843デフォルトの名無しさん:04/09/20 16:41:36
inet_ntoaの引数を調べてから物言えよ
844デフォルトの名無しさん:04/09/20 16:48:02
>>843
あふぉですか?
ip = (IN_ADDR *)host->h_addr_list[0];
inet_ntoa(*ip)

hostはHOSTENTね;
845デフォルトの名無しさん:04/09/20 16:58:26
アフォだからきいてんじゃんよ

おまいこそアフォですか?
846デフォルトの名無しさん:04/09/20 16:59:20
h_addr_listの型を調べてから物言えよ
847デフォルトの名無しさん:04/09/20 16:59:38
それが人に物を聞く態度か
848デフォルトの名無しさん:04/09/20 17:01:12
>>846
中身を見てから物言えよ
849デフォルトの名無しさん:04/09/20 17:02:37
じゃあついでにもうひとつ
gethostnameに渡すバッファは何バイト確保するの?
850デフォルトの名無しさん:04/09/20 17:02:58
ようやく>>819に戻ったようで。
851デフォルトの名無しさん:04/09/20 20:11:47
C++のネットワークプログラミングの本、日本語ではほとんどないね。
852デフォルトの名無しさん:04/09/20 21:01:34
>>849
INT_MAXバイト
853デフォルトの名無しさん:04/09/20 21:03:57
>>851
標準クラスがないからな・・・
stl, boostより先にやることがあるだろ
854デフォルトの名無しさん:04/09/20 21:19:39
ACEがあるじゃん
本も出てるし
855デフォルトの名無しさん:04/09/20 21:22:23
あれ糞っていうかデファクトスタンダードですらないし
856デフォルトの名無しさん:04/09/20 21:24:06
じゃあC++でのportableなネットワークライブラリのデファクトスタンダードは何?
857デフォルトの名無しさん:04/09/20 21:27:23
>>856
ないからこういう話になってるんじゃないの?
858デフォルトの名無しさん:04/09/20 22:41:26
bind時に渡すsockaddrでアドレスとポートを指定しますが、
アドレスを指定するのはマシンにIPアドレスが2つ以上割り当てられているときに、
どちらを使うかを選択するという考えでよいのでしょうか?
859デフォルトの名無しさん:04/09/21 00:29:53
>>858
そう。だからINADDR_ANYがある。
860デフォルトの名無しさん:04/09/21 00:45:15
>>859
なるほど。
ありがとうございます。
861デフォルトの名無しさん:04/09/21 14:45:59
ハードディスクレコーダーがspamの踏み台にされたそうですが、
デジタル家電に何があれば踏み台にされるんでしょうか?
偉い人教えて下さいでつ

i) TCP/IPでLANに繋がれば、そく
ii) Webブラウザ搭載
iii) 外部ウェブブラウザで機器の設定が出来る機器(Webサーバーか)
iv) Proxy Server機能がある場合のみ
862デフォルトの名無しさん:04/09/21 14:48:21
>>861
踏み台にされる要因があれば、そく
863デフォルトの名無しさん:04/09/21 15:11:45
サンクス>>862

次に、踏み台にされる要因を分かりやすく定義しる!
864デフォルトの名無しさん:04/09/21 15:59:15
組み込みLinuxなんかに意図せず串機能が入っちゃうんだろうかね。
865デフォルトの名無しさん:04/09/21 17:22:05
ttp://nlogn.ath.cx/archives/000288.html
これか〜。最近のビデオデッキは便利になったものよのう
866デフォルトの名無しさん:04/09/21 17:31:17
メーカーが責任持って原因と対策を分かりやすく説明しる!
867デフォルトの名無しさん:04/09/21 17:40:45
firewallソフトってのがどういう構造なのかということが知りたくて自分で
つくってみたいと思ったんですが。linuxとC言語で参考になるサイトなど
があれば伝授してください。お願いします
868デフォルトの名無しさん:04/09/21 17:52:15
869デフォルトの名無しさん:04/09/21 17:54:36
作れる人は参考になるサイトくらいわかる
ってくらいのレベル
870デフォルトの名無しさん:04/09/21 18:03:19
>869
出直してきます(涙
871マイク ◆yrBrqfF1Ew :04/09/21 19:13:22
>>867
NDISとかTDIとか昔調べたが全然わからんかったな。
872デフォルトの名無しさん:04/09/21 22:14:40
873デフォルトの名無しさん:04/09/22 08:47:25
FTPのプロトコルを調べていて疑問に思いました。
データ転送用のコネクションは、クライアント側がサーバーから
接続してくるのを待つらしいのですが、これだとLANの中から
FTPにつなごうとすると上手く動かないような気がします。
だけど、実際には問題なく動作しています。
なにか考え違いをしてるでしょうか?
874デフォルトの名無しさん:04/09/22 08:50:59
>>863-864

もヨロ
875デフォルトの名無しさん:04/09/22 09:11:11
>>873
考え方は合ってる
FTPはよく使われるのでルータがうまいことやってくれる
最近はパッシブモードもよく使われる
876デフォルトの名無しさん:04/09/22 09:12:51
HTTPに対するFTPのアドバンテージってなんかあるの?
877デフォルトの名無しさん:04/09/22 09:26:22
>>876
実装が楽
878デフォルトの名無しさん:04/09/22 10:09:49
>>877
Indyライブラリ使えばおんなじだって。
879デフォルトの名無しさん:04/09/22 10:14:02
なんでHTTPとFTPを同列で比らべなきゃならんのじゃ
880デフォルトの名無しさん:04/09/22 10:16:24
だって機能的にHTTPってFTPのスーパーセットみたいじゃん
今FTPを使うメリットってなんかあるの?
vectorとかもデフォルトHTTPでダウンロードだし。
881デフォルトの名無しさん:04/09/22 10:22:52
ftpクライアントでWebページの更新とかやったことあればわかると思うけどなー
882デフォルトの名無しさん:04/09/22 10:32:22
サーバ間で転送ができるとか
最近は脆弱性扱いだけどな
http://katsu.watanabe.name/doc/ftp/aboutpassive.html
883デフォルトの名無しさん:04/09/22 10:37:27
>>880
ベクターのデフォはftpだけど。
884デフォルトの名無しさん:04/09/22 10:57:43
HTTPはファイル毎にヘッダが入るから非効率
FTPのがサーバ側の構造が単純なのでレスポンスが早い
FTPはたくさんファイルがある時にディレクトリ管理できる
885デフォルトの名無しさん:04/09/22 11:07:25
2chのdatもftpにおきゃいいのに
886デフォルトの名無しさん:04/09/22 11:13:39
コネクション貼るのに時間かかるじゃんFTP
887デフォルトの名無しさん:04/09/22 11:14:50
>>884
ftpはファイルが途中で壊れる事もしばしば。
パフォーマンス優先のために品質が犠牲になってる。
複数ファイルを一度にダウソすることなどほとんどなく、
書庫ファイルでのダウソが多いのでヘッダーなどどうでもいい。
888デフォルトの名無しさん:04/09/22 11:16:01
ftpでファイルを公開しているサイトは、貧乏神が取り付いていると思う。
889デフォルトの名無しさん:04/09/22 11:16:02
コネクション張るのに時間かかろうがしったこっちゃない
サーバ運営者の都合なんだから
アクセス集中したらHTTPなんて機能すらしない
890デフォルトの名無しさん:04/09/22 11:17:39
FTPも機能しないじゃん。
コネクション貼りっぱなしで2本使うから余計リソース消費が激しい。
891デフォルトの名無しさん:04/09/22 11:18:14
FTPよりHTTPのkeep-aliveのがナンボかマシっぽい
892デフォルトの名無しさん:04/09/22 11:24:50
>パフォーマンス優先のために品質が犠牲になってる
この根拠は何?
httpだと別にチェックサムかなんか送んの?
893デフォルトの名無しさん:04/09/22 11:25:43
このスレもこの時間だとRFCも読めないアフォしかいないな。
894デフォルトの名無しさん:04/09/22 11:27:17
         -、            ,.-、
        ./  .\          /  ヽ
       /    ;ゝ--──-- 、._/    .|
       /,.-‐''"´          \   |
     /                ヽ、 |
    /  ●                ヽ|
     l       (_人__ノ         ●   l いや、そんな事言われても
    .|  ´´    |   /            |             ワテ猫やし
     l        ヽ_/         ´´  l
    ` 、                    /
      `ー 、__              /
          `'''ー‐‐──‐┬‐‐'''""
           /      |
           /        |
895デフォルトの名無しさん:04/09/22 11:27:33
説明できる能力がないなら黙ってていいよ
896デフォルトの名無しさん:04/09/22 11:28:15
今時FTPでアーカイブを一般公開するのは、IT負け組。
ほぼ間違いない(w

PDFで文書をWeb公開する企業は、ある意味IT勝ち組。
というより、ITをあまり必要としてないから、逆説的勝ち組。
897デフォルトの名無しさん:04/09/22 11:29:37
>>887
httpのほうが「品質」が良いってどういう意味?
データをそのまんま流してるだけで、エラー訂正機能とかあるわけじゃないよね。
898デフォルトの名無しさん:04/09/22 11:30:31
このスレ猫しかいないな
899デフォルトの名無しさん:04/09/22 11:32:02
エラー訂正機能がftpにはあるとでも?
送信途中で失敗しても成功したかのように振舞う厄介なftpがそんなに好きなのかい?
900デフォルトの名無しさん:04/09/22 11:32:58
振る舞わないよ
901デフォルトの名無しさん:04/09/22 11:33:38
どこがネットワークプログラミングだ
902デフォルトの名無しさん:04/09/22 11:35:07
引きこもりしかいない時間だから仕方ないよ
903デフォルトの名無しさん:04/09/22 11:35:22
>>900
経験が浅いね。
904デフォルトの名無しさん:04/09/22 11:35:47
>>902
いや、猫だよ
905デフォルトの名無しさん:04/09/22 11:36:07
今時ファイル転送にftpなんて使ってる奴はアホ。
scp使えよ。
906デフォルトの名無しさん:04/09/22 11:36:24
>>903
余程アフォなクライアントとサーバ書いたんだね
907デフォルトの名無しさん:04/09/22 11:43:22
>>906
自分で書いたことなくて、ftpコンポーネントみたいなのを使ってると思われ。
908デフォルトの名無しさん:04/09/22 11:50:36
LAN(TCP/IP)に繋がってる機器のOSを問い合わせる方法を教えて下さい。
909デフォルトの名無しさん:04/09/22 11:51:02
無い
910デフォルトの名無しさん:04/09/22 11:51:29
ポートスキャンして推測
911デフォルトの名無しさん:04/09/22 11:52:15
FTPに対応するHTTPを使う規格といえばWebDAVだろ?
あんなのどこがいいのよ
912デフォルトの名無しさん:04/09/22 11:53:19
>>908
smbとかhttpとかとりあえずOS吐く可能性があるプロトコルを片っ端から試してみる。
913デフォルトの名無しさん:04/09/22 11:53:36
簡易DB的に使えるところ
914デフォルトの名無しさん:04/09/22 11:54:19
>>908
利用している人に口頭で聞きに行く
915デフォルトの名無しさん:04/09/22 11:54:27
お前ら
916デフォルトの名無しさん:04/09/22 11:54:39
はバカ
917デフォルトの名無しさん:04/09/22 11:55:37
>>908
その機器が回答するように設定しておく
918デフォルトの名無しさん:04/09/22 11:56:55
nmapで調べられるよね。どうやっているんだろう?(^o^)
919デフォルトの名無しさん:04/09/22 12:00:00
12:00:00
920デフォルトの名無しさん:04/09/22 12:00:25
12:00:45
921デフォルトの名無しさん:04/09/22 12:01:25
ここはあぼーんスレですか?
922デフォルトの名無しさん:04/09/22 12:02:05
923デフォルトの名無しさん:04/09/22 12:03:31
>>922
意味が分からないにもほどがある。いったいなんだよそれ。
924デフォルトの名無しさん:04/09/22 12:06:02
誰でもあぼーんできる板
925デフォルトの名無しさん:04/09/22 12:06:12
>>923
誰でも削除できるからあぼーんばっかりの板。
926デフォルトの名無しさん:04/09/22 12:12:08
>>875
ルーターが、PORTコマンドを書き換えて相手に送るとか、
そこまでやってくれるってことですか?
なんか、すごいかも。
927デフォルトの名無しさん:04/09/22 12:22:58
すごくもないべ
928デフォルトの名無しさん:04/09/22 13:20:43
うちのネコでもできっぺ
929デフォルトの名無しさん:04/09/22 13:33:50
ping <ipアドレス>
すると正しく応答しますが、

ping <Windowsマシン名>
すると、違ったIPに問い合わせた上、Request timed out.します。

サーバーのWINSの動作がおかしいのか、
氏にかけのネット機器(自社製)が半応答してるのか、
原因が分からず困っています。

どうやって調べて逝けばよいのでしょうか?
930929:04/09/22 13:38:27
補足ですが、

>ping <Windowsマシン名>すると、違ったIPに問い合わせた上、

これは、コンソールに Pinging <マシン名> [XXX.XXX.XXX.XXX] with 32 bytes of data:と出て、
かつ、XXX.XXX.XXX.XXXのIPが違っていることが分かりました。
931デフォルトの名無しさん:04/09/22 13:39:24
原因特定の基本は最小構成
932デフォルトの名無しさん:04/09/22 14:19:03
>>929
1. 再起動する
2. Ethereal でパケットキャプチャを開始する
3. ping <Windowsマシン名>とする
4. Ethereal でパケットキャプチャを停止する

でパケット眺めれば、直接の原因はたぶんすぐわかると思う。
933929:04/09/22 14:30:43
サンクスでつ>>932

Etherela(いーさ・りある?)凄いでつね。画面もカコイイし、Javaなんかな。
ping開始から、変なIPにARPプロトコルでBroadcastする前まで、
やりとりはDNS Serversの2つめ or Secondary WINS Server(DNSとWINS兼用サーバのため、どちらのサービスとして問い合わせたのか分からない)とのみ、
SMBプロトコルでやりとりしてることが分かりますた。

サーバーマシンの画面見ればなんか分かるんだろうか。
934デフォルトの名無しさん:04/09/22 14:59:28
単に同じ名前のマシンがいるだけだったりして
935929:04/09/22 15:08:24
>>934
PCだけでなくて、ITRON/TCPスタックの機器まであって。
見渡した限りでは機器じゃないし、Windows PCが半死に状態で応答してるとも思えないし。
pingも応答しない機器のOSなんて調べられないですよね。
936デフォルトの名無しさん:04/09/22 15:10:06
DNSのレコードをなぜみないのかと
937デフォルトの名無しさん:04/09/22 15:10:17
まあどうしてもわからなければlmhosts書き込んでやったら回避はできますよ
938929:04/09/22 15:14:49
レスサンクスでつ。とりあえず、管理者にお願いしてサーバーPCみてみます。
現象を消すよりも、犯人特定が重要で。

SMBプロトコルで通信してるということは、
そのサーバーにDNSサービスではなくて、
WINS サービス(なぜかSecondary)として問い合わせてる、
と確定しちゃって良いんですよねぇ。
939929:04/09/22 15:17:02
>lmhosts書き込んでやったら回避はできますよ

あ、そうなんですか。
たとえ他で同じ現象が出たとしてもサーバーいじれば何とかなるのか。
940デフォルトの名無しさん:04/09/22 15:19:09
有効なのは書き込んだPCだけですけどね
941デフォルトの名無しさん:04/09/22 20:00:52
linuxでTCPで通信する際に、テストとして再送が発生するようにしたいのですが、
ドライバ辺りで意図的にパケットロスを発生させる方法はありますか?
できれば一定の確率とか一定のパターンでパケットが落ちるように設定できるやつ
ないでしょうか?
942デフォルトの名無しさん:04/09/22 20:16:13
間にLinuxのルータを立てて
パケットロストや遅延を発生させることができるらしい。
キーワードとかは知らないけど。
943デフォルトの名無しさん:04/09/23 15:54:54
linee あたりでできないかな? bridgeだけど。
944デフォルトの名無しさん:04/09/23 19:57:38
945デフォルトの名無しさん:04/09/23 21:52:04
このスレを読んで
2chに自動カキコするスクリプトを書くことを決意した。
よしやるぞ
946デフォルトの名無しさん:04/09/24 01:47:33
氏ね^^
947デフォルトの名無しさん:04/09/24 08:59:04
>>945
応援するよ
948デフォルトの名無しさん:04/09/24 10:16:49
>>945
2chの約八割はもうすでに人口無能による自動レスなわけだが
949デフォルトの名無しさん:04/09/24 10:17:39
>>948
オマエモナー
950945:04/09/24 11:23:30
作ったぞ perlで100行くらいで出来た

Cookieの対処でハマったけど
ProxomitronってソフトでやりとりしてるHTTPヘッダー覗いてみたら
Cookieはサーバーが要求してクライアントが送るんじゃなくて
アクセス時にクライアントが最初っから送りつけてることに気がつき
そのように記述したらサクっと書き込めた

あとは302 FoundだけどこれはHost情報を送ってやったらうまくいった

板一覧やスレ一覧を取得してやれば簡単な2chブラウザが作れるかも
やってみるかなぁ
951デフォルトの名無しさん:04/09/24 13:49:32
その話を聞いているとガクブルしてくるんだが・・・・
漏れの予想では開発を中止する、になると思う
952デフォルトの名無しさん:04/09/24 14:50:22
無差別スクリプト嵐なんて昔からあったじゃん
ム板も荒らされたし
953941:04/09/24 15:38:02
>>942, >>943
サンクスコ。
これって中間のホストなしでできないかなぁ・・・。
954デフォルトの名無しさん:04/09/24 22:50:23
ターゲットはぜひ、大規模Off板に
955デフォルトの名無しさん:04/09/24 23:51:55
>>953
netfilterでuserspace packet handlerを書く。(ここは板に合っている)
一台でやるにはdouble NATを。(ここは板違い)
956デフォルトの名無しさん:04/09/24 23:52:28
957デフォルトの名無しさん:04/09/25 22:25:58
958デフォルトの名無しさん:04/09/26 01:04:43
おまいら、知ったかぶりかどうか知らんが結構詳しいよな?
どうやってその知識を得たんだ?

やっぱり、ヲタク?
959デフォルトの名無しさん:04/09/26 01:09:17
>>958
                | ̄``''- 、
                |      `゙''ー- 、  ________
                |    ,. -‐ ''´ ̄ ̄`ヽ、_        /
                |, - '´ ̄              `ヽ、     /
              /               `ヽ、ヽ   /
             _/                    ヽヽ/
           / / /   /  /  /            ヽハ
          く  / /!   |   〃 _/__ l|   | |   |  |  | | ||ヽ
           \l// / |  /|'´ ∧  ||   | |ー、||  |  | l | ヽ
            /ハ/ |  | ヽ/ ヽ | ヽ  | || /|ヽ/!  |/ | ヽ
            / |  ||ヽ { ,r===、   \| _!V |// //  .!   |
            | ||   |l |ヽ!'´ ̄`゙   ,  ==ミ、 /イ川  |─┘
            | ハ||  || | """ ┌---┐  `  / //  |
            V !ヽ ト! ヽ、    |     !    / //| /
               ヽ! \ハ` 、 ヽ、__ノ    ,.イ/ // | /
    ┌/)/)/)/)/)/)/)/)/)/)lー/ ` ー‐┬ '´ レ//l/ |/
    |(/(/(/(/(/(/(/(/(/(/│||      |\  〃
  r'´ ̄ヽ.              | | ト    /    \
  /  ̄`ア             | | |  ⌒/     入
  〉  ̄二) 知ってるが    | | |  /     // ヽ
 〈!   ,. -'                | | ヽ∠-----', '´    ',
  | \| |   .お前の態度が   | |<二Z二 ̄  /     ',
  |   | |               _r'---|  [ ``ヽ、      ',
  |   | |   気に入らない >-、__    [    ヽ      !
  \.| l.              ヽ、      [     ヽ    |
    ヽ|              \    r'     ヽ、    |
960デフォルトの名無しさん:04/09/26 09:00:28
やっぱり、ヲタクかw
961デフォルトの名無しさん:04/09/26 09:07:04
コレの仕事でカネもらってるんだ
日々学び詳しくなるのはプロとして当然
962デフォルトの名無しさん:04/09/26 10:06:10
専門家=ヲタク
963デフォルトの名無しさん:04/09/26 12:38:15
C++でTCP/IPプログラミングしているんですが、
readなら1バイトずつバッファに読み込んでも動くんですが、
writeでは一度にすべてを書き込まないと動きません。
これって、そういう仕様なんですか?
964デフォルトの名無しさん:04/09/26 12:50:57
>>963
はい
965デフォルトの名無しさん:04/09/26 13:05:34
アンバッファド入出力に切り替えればいいんじゃいない?
966デフォルトの名無しさん
モタクじゃない人なんて口だけですよ