ネットワークプログラミング相談室 Port16
レス数が1000を超えています。これ以上書き込みはできません。
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/
0002デフォルトの名無しさん
2005/12/31(土) 14:08:22pingください
0003デフォルトの名無しさん
2005/12/31(土) 14:11:56Port14 http://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 http://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 http://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 http://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 http://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 http://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 http://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
まとめ http://makimo.to/cgi-bin/search/search.cgi?q=%83l%83b%83g%83%8F%81%5B%83N%81%40%91%8A%92k%8E%BA&andor=AND&sf=0&H=ikenai&D=tech&shw=2000
0004デフォルトの名無しさん
2005/12/31(土) 14:13:24UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
そのソースコード
http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
―Linux/POSIXソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
―Windowsソケットバージョン
http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
マスタリングTCP/IP RTP編
http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング―ネットワークプログラミングにおける実践技法
http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
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/
0005デフォルトの名無しさん
2005/12/31(土) 14:14:15★規格
RFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
http://www.studyinghttp.net/rfc_ja/2616/rfc2616_ja.html
IANA Well known port numbers
http://www.iana.org/assignments/port-numbers
★プログラミング
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
http://www.whitefang.com/rin/
Java で packet capture
http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
http://X68000.q-e-d.net/~68user/net/
0006デフォルトの名無しさん
2005/12/31(土) 14:15:31ethereal - http://www.ethereal.com/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/
★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html
UDP Hole Punching
http://homepage3.nifty.com/toremoro/p2p/firewall.html
★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
0007デフォルトの名無しさん
2005/12/31(土) 14:43:390008デフォルトの名無しさん
2006/01/01(日) 04:43:05アカマイ等の商用のものはもちろんないでしょうが、、
よろしければ教えて下さい。
0009デフォルトの名無しさん
2006/01/02(月) 17:22:58Visual Basicではじめるネットワークプログラミング超入門
http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/250-1947313-9296230
これも追加しとけ
0010デフォルトの名無しさん
2006/01/02(月) 17:56:41Apacheのソース見ていけば参考になるよ
HTTPにそって80番でポート開放してるだけだから
HTTPの仕様読んだ方が楽だと思うけど
0011デフォルトの名無しさん
2006/01/04(水) 12:47:20もうちっと小さいソースを薦めようぜ
boaとかlighttpdとかあるだろ
0012デフォルトの名無しさん
2006/01/04(水) 14:44:390013デフォルトの名無しさん
2006/01/05(木) 18:30:40デバイスを固定したい。Fedora4を使っているんだけど、
eth0〜eth3まである。ここで通信先をeth0に固定しようとして
setsocketopt(sock, SOL_SOCKET, SO_BINDTODEVICE, EthName, sizeof(EthName));
こう書きました。sockは勿論のこと、EthNameにもデバイス名として
'eth0'と格納してる。コンパイルは通るけど実行時のログでは、
戻り値が-1でエラーは1(パラメタエラー)となる。
どーしてもわからないので教えて欲しいです。m(__)m
001413
2006/01/05(木) 18:47:13が、今度はエラーが19(そんなデバイス名は無い)と言われました。
eth0じゃなければ他に名前ってあるのでしょうか?
すみませんが宜しくお願いします。
0015デフォルトの名無しさん
2006/01/05(木) 19:48:520016デフォルトの名無しさん
2006/01/05(木) 20:47:22'eth0'とかsetsocketoptとかいろいろ不安になる人ね。
sizeof(EthName) → strlen(EthName) or sizeof EthName - 1
0017デフォルトの名無しさん
2006/01/06(金) 18:41:28EthName は char * だったりしてw
0018デフォルトの名無しさん
2006/01/06(金) 19:27:06メインのループの中でもしメッセージがあったら受け取るって
いうの作ろうかと思ったんですけどそういうのそもそも可能ですか?
どこかにサンプルのソースとかあったら教えてください。
0019デフォルトの名無しさん
2006/01/06(金) 20:53:12だったら"eth0"→4[=sizeof (char *)]でピッタリじゃん!
0020デフォルトの名無しさん
2006/01/06(金) 20:53:59>>1のFAQをselectで検索
0022デフォルトの名無しさん
2006/01/06(金) 23:48:010023デフォルトの名無しさん
2006/01/07(土) 06:13:27WSAAsyncSelect()関数にサーバ側のソケットを渡してイベントを待機します
telnetから接続を試みるとFD_ACCEPTイベントが実行され
文字を送るとFD_READ、切断でFD_CLOSEのそれぞれのイベントが発生するのですが
しかし、複数の接続が発生した場合どのクライアントからの受信なのかが判断付かない状態です。
接続要求があった際に各クライアントのソケットはリスト構造で一応確保しています。
WSAAsyncSelect()関数にそれぞれのクライアントを登録しておいても結局イベントが
発生した際にはどのクライアントのイベントが判断がつかない状態です・・・
複数の接続を受け入れた状態でデータを受信した際に一体誰が送信したデータなのか?
を判断する術をご教授ください。
0024デフォルトの名無しさん
2006/01/07(土) 06:21:13WinsockのノンブロッキイングI/Oは要注意。2000以降はまともだけど。
0025デフォルトの名無しさん
2006/01/07(土) 06:22:36recvfrom
0026デフォルトの名無しさん
2006/01/07(土) 13:48:25selectで着信があったソケットを調べる、とか
クライアント側から通知してもらう、とか
0027デフォルトの名無しさん
2006/01/07(土) 14:05:470028デフォルトの名無しさん
2006/01/10(火) 23:45:43あるサイトの別々のページを連続で取得しようとすると、何ページが取得した後、
>ErrorCode #10054
>Connection reset by peer
>既存の接続はリモート ホストに強制的に切断されました。
が出て、それ以降は、同一プロセスからは何度やっても別のページを取得しようとしても
取得できなくなります。
#10054を回避する方法を教えてください。
0029デフォルトの名無しさん
2006/01/10(火) 23:47:19私の家のパソコンにはC#のVisual Studio Net 2003がインストールされています。
ここで、プログラムを作って完成させたんですが・・・よく考えてみると大学では、
C#2005だったと思うんです。できたら、家だ作ったプログラムをコピーして大学
の授業でも使いたいと思っているんですが・・・この2つには互換性はあるのでしょうか?
どなたか知っている方おられませんか??
0030デフォルトの名無しさん
2006/01/11(水) 03:47:290031デフォルトの名無しさん
2006/01/11(水) 14:52:32アプリケーションを特定しているようですが、これはどうやればできるのでしょうか?
(Win2000)
>>28
サーバがコネクション数に制限かけてるだけだと思いますが。
連続で取得しないようにするしかないのでは。
0032デフォルトの名無しさん
2006/01/11(水) 15:22:48sourceあるから、これ見ればわかるんでない?
http://www.sysinternals.com/Utilities/TcpView.html
0033デフォルトの名無しさん
2006/01/11(水) 15:55:45どうもです。
ソースが公開されている netstatp ではXPのみのAPIを使っていますね・・・
2000でもできるTCPViewのソースは残念ながら後悔されていないようです。
0034デフォルトの名無しさん
2006/01/11(水) 15:57:10o XPのみのAPIを使って実現していますね
003531
2006/01/11(水) 16:26:10http://sourceforge.net/projects/winsockfirewall/
0037デフォルトの名無しさん
2006/01/11(水) 21:39:01http://codezine.jp/a/article.aspx?aid=101
こっちだ
0038デフォルトの名無しさん
2006/01/12(木) 02:04:25マルチユーザでもうまく80番ポートを共有して、CGIみたいな手頃感でウェブアプリケーション組み込める鯖ソフトってできそうだけどね。
ところで、思わずパクりたくなるような出来のP2Pのソースってどこかにある?
LimeWireとかCabosとか見てみたけど、Javaはいまいち好きになれない。。。
やっぱりネット処理だとパフォーマンス稼ぎたいからCがいい。
0039デフォルトの名無しさん
2006/01/12(木) 02:23:52君の考えが浅いに一票。
0040デフォルトの名無しさん
2006/01/12(木) 05:28:50PASSIVEモードでデータコネクションを張る前に、サーバ側が適当なポートを開けて待つことになると思うのですが、このとき、全く関係の無い接続があった場合の対処はどうすればよいのでしょうか?
クライアントのIPアドレスで判断することも考えましたが、同一IPアドレスからイリーガルな接続が無いとも限らないので、不十分かと思います。
同様にACTIVEモードでは、クライアントがポートを開けて待つことになると思うのですが、やはり全く関係の無い接続にどう対処すればいいのでしょうか。
というか、FTPのこの仕組みって、セキュリティ上の問題が無いのでしょうか?
0041デフォルトの名無しさん
2006/01/12(木) 06:38:01もう誰も使わなくなりつつある
004340
2006/01/12(木) 15:10:30他のセキュリティ上の問題って、通信が暗号化されていないということですか?
他に問題があるのでしたら、参考までに教えてもらえないでしょうか。
で、自分が目指しているものは、ポートを1つしか使用しないFTPサーバが作ることです。
コントロールもデータも全部ポート21 への接続でまかないたい、ということです。
これは、ルータの内側にサーバを立てて、ポートフォワードして使用することを考えてのことで、できるだけフォワードするポートが少ないようにしたい、という希望があるからです。
なので、ポート21 に connect されたとき、それが
・データコネクションなのかコントロールコネクションなのか
・どのクライアントからの接続なのか
を判断する方法が欲しいのです。
1IPアドレス 1クライアントなら IPアドレスで判別することができるのですが、1IPアドレスから複数クライアントの接続がある場合、判別は困難となるわけです。
では、ポートをその都度割当てる場合(通常のFTP)ではどうなのかと考えてみると、開いたポートへの接続は目的のクライアントからのものである確率が高いということしか言えず、もしかしたらまったく別の、時には悪意を持った接続であるかもしれないわけです。
だからFTPサーバというものは、何らかの方法でクライアント接続の正しさを検証しているのではないかと考えました。
もしそのように接続がお目当てのクライアントからのものであることを判別する方法があるのであれば、自分の目的も達成できるのではないか、と思っているのですが、どんなもんでしょう?
これが適わないならば、せめてポートフォワードができるだけ少なくなるようないいアイディアは無いでしょうか。
0044デフォルトの名無しさん
2006/01/12(木) 15:57:350045デフォルトの名無しさん
2006/01/12(木) 18:45:340046デフォルトの名無しさん
2006/01/12(木) 19:36:150047デフォルトの名無しさん
2006/01/12(木) 19:38:49SCP
0048デフォルトの名無しさん
2006/01/12(木) 21:41:380049デフォルトの名無しさん
2006/01/12(木) 21:53:40質問があいまいです
0050デフォルトの名無しさん
2006/01/12(木) 22:26:30そんなの10年前ほどに死滅したんじゃなかったの?
0051デフォルトの名無しさん
2006/01/12(木) 23:45:37ところがPPPoEで接続している場合など、擬似的なネットワークインターフェースが作成されますよね?
MACアドレスを列挙したときに、それらの擬似的なものも拾えてしまって困っています。
そういう擬似的なものを除外したいのですが、まったくやり方が見えません。
LANカード(PCIバスにさすとか、マザーボードに乗っている奴)のMACアドレスは08-・・・
のように0から始まるとか、そういう識別に使えるルールはあるのでしょうか?
0052デフォルトの名無しさん
2006/01/12(木) 23:50:59>>47
0053デフォルトの名無しさん
2006/01/12(木) 23:52:38うちのはされない
0054デフォルトの名無しさん
2006/01/12(木) 23:54:13ARP
0055デフォルトの名無しさん
2006/01/13(金) 00:01:33すみませんが、もうちょっとヒントお願いします。
物分りが悪くてすみません。
0056デフォルトの名無しさん
2006/01/13(金) 00:07:35OSは?
インターフェース名で分からないの?
ちなみに「Ethernet」のMACアドレスはベンダーIDで始まってる。
http://standards.ieee.org/regauth/oui/oui.txt
http://coffer.com/mac_find/
0057デフォルトの名無しさん
2006/01/13(金) 00:18:30実行する方法ご存知でしたら教えてください。
0058デフォルトの名無しさん
2006/01/13(金) 00:21:110059デフォルトの名無しさん
2006/01/13(金) 00:32:51OS書き忘れてました。WindowsXPです。
インターフェース名でわかるのですが、MACアドレスをユーザーに申請してもらうので、
LANカードのMACアドレスをください、といっても通じない可能性があるもので。
(そこで、MACアドレスを列挙してあげるアプリを使わせます。そのアプリで擬似NICのアドレスをはじきたいわけです)
リンクありがとうございます。早速見させていただきます。
0060デフォルトの名無しさん
2006/01/13(金) 00:33:200061デフォルトの名無しさん
2006/01/13(金) 00:39:18http://homepage2.nifty.com/cs/linux_command/command/ssh.html
0062デフォルトの名無しさん
2006/01/13(金) 00:40:24みなさん、アドバイスありがとうございます。
sshで出来そうなのは実はGoogleで少し調べてみて、情報は得られていたの
ですが、sshはWindowsXPには標準では装備されていないようなんですが、
WindowsXP標準の機能で、実現する方法は無いでしょうか?
というのは、自作のVC++のプログラムから、Linux上の自作プログラムを
起動したいのです。よろしく。
0063デフォルトの名無しさん
2006/01/13(金) 01:18:59ちなみにFedoraでの設定方法はスレ違いなので、ここで聞くなよ
0064デフォルトの名無しさん
2006/01/13(金) 01:20:55006556
2006/01/13(金) 01:40:59いや、プログラム内でインターフェース(アダプタ)の名前(wszName)見れば、
ほとんどの疑似インターフェースは弾けるんじゃないの?
dwTypeとか, dwDescrもあるよね。
GetIfTable/GetIfEntry
0066デフォルトの名無しさん
2006/01/13(金) 02:21:37rshにすれば?
0067デフォルトの名無しさん
2006/01/13(金) 04:29:09int gethostbyname_r(const char *name, struct hostent *ret, char *buf, size_t buflen, struct hostent **result, int *h_errnop);
name と ret は分かるんだけど、他の引数には何を指定したらいいの?
NULL でいい?
0068デフォルトの名無しさん
2006/01/13(金) 08:00:54http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/nss/bug-erange.c?rev=1.2&content-type=text/x-cvsweb-markup&cvsroot=glibc
006967
2006/01/13(金) 11:24:37ありがとう。参考になりそう。
とどのつまり、NULLじゃいけないってことかな?案外面倒だね。
特に buf のことがよくわからないだけに、どう扱ったらいいのかよくわからないよ。
でもそのコードを見る限り、必須なんだろうね。
ところでそのサンプル、free が無いけどいいのかな?
gethostbyname_r の中で解放される?
/* Allocate buffer, remember to free it to avoid memory leakage. */
なんてコメントがあるけど。
0070デフォルトの名無しさん
2006/01/13(金) 11:36:42ライセンス回避もいろいろな手段が有るし、sshはソース有るよ。
0071デフォルトの名無しさん
2006/01/13(金) 11:37:51クライアントアプリの場合も単発で終了するようなものなら書いてなくても動く
サーバーアプリの様に長時間連続稼動するものは当然メモリリークが起こる
007268
2006/01/13(金) 16:53:15> 特に buf のことがよくわからないだけに、どう扱ったらいいのかよくわからないよ。
MF-Safeにしたいから、gethostbyname_rを使うんだよね?
gethostbyname_rが利用するメモリを、gethostbyname_rを呼び出す側が用意する。
利用目的は帰り値の保存(hostent構造体には入りきらないもの)。
MF-Safeなインターフェースのメモリ管理には、
・メモリを呼び出す側が用意する。gethostbyname_r(glibc版)
・freeする関数も準備してある。getaddrinfo/freeaddrinfo
・スレッド固有メモリを使う。gethostbyname_r(一引数版)
などのパターンがある。
buf, ret, h_name, h_alise, h_addr_listを%dで出力してみれ
0073デフォルトの名無しさん
2006/01/13(金) 16:57:03rexecでできました。
ただし、rexec実行後に毎回passwordを聞いてくるので、それを無しに
したいのですが。
0074デフォルトの名無しさん
2006/01/13(金) 17:09:540075デフォルトの名無しさん
2006/01/13(金) 18:31:56開発を主にUnix(solaris)で行い、運用も同OSで行うようなもので
しかし時々Win2000 or XPでも使用するソフトをつくる予定です
その際に悩んでいることがあるのでおねがいします
Unixのソケット関数とWin32のAPIで明らかに仕様が違うため
共通で使うことができません
Javaを仕様すればソケット部分も含めて同じにできますが
C++を使用したいのでそれはできません
このような場合にはどう対処するのがただしいのでしょうか?
0076デフォルトの名無しさん
2006/01/13(金) 18:38:170077デフォルトの名無しさん
2006/01/13(金) 19:51:410078デフォルトの名無しさん
2006/01/13(金) 20:28:23Java+JNI+C++
0079デフォルトの名無しさん
2006/01/13(金) 20:28:58> MF-Safe
MT-Safeのこと?
008072
2006/01/13(金) 20:31:31寝転びながらタイプしていたから、Tまで指が届かなかったようだ…
0081デフォルトの名無しさん
2006/01/14(土) 12:29:26通信速度を計測したいと思いいろいろ考えているのですが、
スタンダードな方法ってありますか?
0082デフォルトの名無しさん
2006/01/14(土) 12:43:22http://www.ittc.ku.edu/Projects/DREN/software/
0083デフォルトの名無しさん
2006/01/14(土) 14:49:160084デフォルトの名無しさん
2006/01/14(土) 14:49:50wget
0085デフォルトの名無しさん
2006/01/14(土) 16:17:23PCで測定すると、PCのベンチにも成ってしまう。
C++で動くヲレラッパーライブラリ作ればいいじゃん。
普通は有料フレームワークとかで吸収したりするけどね。
0086デフォルトの名無しさん
2006/01/16(月) 01:55:57WinSockのVer2.2で、RAWソケットを用いたファイルの
送信ツールを作成しています。
>>6の一番下のリンク先のIP PACKET MAKERのIP,UDPをそのまま利用
して、送信するものをファイルから読み込ませるようにしました。
しかし、送信するファイルが大きいと、途中でエラーが発生してしまいます。
「途中」というのは次のような様子です。単位はバイトです。
パケット長 1000 ファイルサイズ 4721898 送信バイト 2266000
パケット長 1200 ファイルサイズ 4721898 送信バイト 2360400
パケット長 1000 ファイルサイズ 292739076 送信バイト 148693000
またエラー発生箇所は、
make_udp_packet(&pPacket_udp->udp, src_ip, m_Sport, dst_ip, m_Dport, PacketLen-20, data_buf);
という、udpソケット生成関数内の
(make_udp_packet(struct udp* udp, UINT src_ip, USHORT src_port, UINT dst_ip,
USHORT dst_port, USHORT len, char* read_buf)
という形式の関数です。)
wsprintf((LPTSTR)udp->udp_data, read_buf); //ソケットデータ部にデータ書き出し
という部分のようです。もちろんこの前のほうが原因かもしれません。
わかりにくい説明だと思いますが、何かわかる方いましたら
よろしくお願いいたします。
ちなみに、IPレベルもいじれるファイル送信ツールを作ろうとしています。
そのようなツールをご存知ならば教えてください
0087デフォルトの名無しさん
2006/01/16(月) 01:57:530088デフォルトの名無しさん
2006/01/16(月) 01:59:03引っこ抜いた直後にクライアントからsend()を実行すると戻り値が正常な
送信バイト数で戻ってきます
これを失敗扱いにしたいのですが、良い方法(ソケットの状態を取得でき
る関数等)ないでしょうか
send()の前にselect()を駆使するとできるのでしょうか
0089デフォルトの名無しさん
2006/01/16(月) 13:58:13(クライアントとサーバーの間に配置しする)を
プログラミングしたいと思っているのですが、
参考にできるようなページはないでしょうか
0090デフォルトの名無しさん
2006/01/16(月) 18:48:200091魚チョコ
2006/01/16(月) 21:43:09ケーブルをすっこ抜いたのか……。そこまで試したことねえなあ。
ケーブル切れてんのに正常に戻ってくるってことは、
send() が送信バファーに送信データーをコピーしただけで戻ってきたってことでしょ。
select() を使っても、送信に関しては、そのソケットが正常に connect され、
送信バファーに空きがあって送信可能であるということしか分からない。
それに、送信データーがそのコンピューターから「出た」ことだけ把握しても、
相手との間に中継サーバーが介在してる場合、途中で握りつぶされて届かない
こともあるわけで、あまり意味がない。
確実に送信成功を検知するには、相手側に「受信完了」通知を出させるしかない。
エラーに関しては、たいてい send() 以外のソケット関数を呼んでるだろうから、
どれかがエラーを報告したら、WSAGetLastError() でも呼んで確かめればいいのでは。
0092魚チョコ
2006/01/16(月) 21:51:43要するに遅さ可変のプロックシーを作りたいということなのかね?
クライアントとの間に適当なプロコトルを定めて接続先を指定させ、
もたもた受信してもたもた送信――送受信バファーの分だけどばっ
と通信してあとおひるねするようなことになるだろうなあ。スィリアル
ポートを経由するようにすれば遅くできるけど遅すぎるかな。あとは
10BASE/T しかない旧式コンピューターを調達するとか。
0093デフォルトの名無しさん
2006/01/16(月) 22:26:05参考にするって言ったって、受けたパケットを他のイン
ターフェースに流すだけだからなぁ。
Cisco の Web でもみてネットワークスイッチの勉強
とかした方がいいと思う。
あと何のためにそんなもん作ってるのかわからんけど、
インターネット回線の擬似テストとかなら、てきとーに
パケットをロストするとか、パケットの順序を変えると
かの機能を入れておくといいかも。
009489
2006/01/16(月) 22:51:07009586
2006/01/16(月) 23:07:34エラーですが、
pctmkr.exe の 0x7c950370 でハンドルされていない例外が発生しました
: 0xC0000005: 場所 0x0025795a を読み込み中にアクセス違反が発生しました。 。
という形で出ています。
OSはWindowsXP、また、VisualStudio7.1を使用しています。
よろしくお願いいたします。
0096デフォルトの名無しさん
2006/01/16(月) 23:27:20Linuxのiptablesではパケットのアドレスやポートの情報をDNATやSNATで自由に書換えられますが、
同じことをWindowsで実現する方法はあるのでしょうか?
よろしくお願いします。
0097デフォルトの名無しさん
2006/01/17(火) 00:01:08> wsprintf((LPTSTR)udp->udp_data, read_buf); //ソケットデータ部にデータ書き出し
>>95
> : 0xC0000005: 場所 0x0025795a を読み込み中
> にアクセス違反が発生しました。 。
read_buf の内容に '%' が含まれてるに一票。
>>88
ソケットはそもそもそういう物理的な障害等を隠蔽するよ
うに作られてるからなぁ...。
何でそんなことしたいのか書いたほうがいいと思う。
>>96
ある。
やり方は知らない。
0098デフォルトの名無しさん
2006/01/17(火) 00:11:46ソケットというかInernetだな。
電話みたいな強い接続指向のネットワークなら、切れたら分かるからね。
0099デフォルトの名無しさん
2006/01/17(火) 00:15:42< Internet
orz
0100デフォルトの名無しさん
2006/01/17(火) 00:52:200101デフォルトの名無しさん
2006/01/17(火) 01:00:20○Inernet
0102デフォルトの名無しさん
2006/01/17(火) 01:27:12010388
2006/01/17(火) 01:49:33>>87
レスどうもです。
クライアントは、ある装置からRS232Cで信号を不定期に受信します
その信号をサーバに送信しなければならず、信号の送信漏れは許され
ないシステムなんです
クライアントからサーバへは一方通行の垂れ流しプロトコルの為
送信完了(サーバへ信号が届いた)を検知する術が分かりません
TCP/IPのACKが戻ってくるという話を聞きましたが、winsockでその
信号を検知する方法等があれば良いのですが。。
良い方法ご存知の方、お知恵を貸してください。
0104デフォルトの名無しさん
2006/01/17(火) 02:01:14setsockoptでLINGER短くしろ。
>>103
> 信号の送信漏れは許されないシステムなんです
> クライアントからサーバへは一方通行の垂れ流しプロトコルの為
そこが設計ミスなんだけどな。
どこまでが到達したか機械的に分からないわけだから。
010588
2006/01/17(火) 02:48:13逆にLINGERを0xFFFFに設定して置けば、ソケットは長時間クローズ
されないので、LANケーブルを再度接続した時にソケットに溜まっている
データが流れて行くのですかね
出勤したらすぐに試してみます
どうもありがとうございました
0106デフォルトの名無しさん
2006/01/17(火) 07:23:560107デフォルトの名無しさん
2006/01/17(火) 08:08:58>その信号をサーバに送信しなければならず、信号の送信漏れは許され
>ないシステムなんです
送信してるなら、サーバが受信しようがしまいが関係ないwww
010886
2006/01/17(火) 09:21:49ありがとうございます。確かに、おっしゃられたとおりです。
一時的な解決策として、送信元のファイルにそのような文字が
入っていないものを使用したところ、確かにバイト数が大きくても
送信できました。wsprintfを何とかしてみます。
ありがとうございました。
0109デフォルトの名無しさん
2006/01/17(火) 09:30:10何故にUDP?
0110デフォルトの名無しさん
2006/01/17(火) 21:53:420111デフォルトの名無しさん
2006/01/17(火) 22:14:300112デフォルトの名無しさん
2006/01/17(火) 23:14:30→正常に受信できない可能性の増加
→再送の必要性増加
にならないか?
トラフィック量、双方のCPUの処理量的にそれが問題なければいいのかもしれないけど
それよりもTCPでプロトコルレベルでACK
正常に送信できない(受信できていない)場合はデータをバッファリングして、後で送信
>>105
バッファがあふれたら?
0113デフォルトの名無しさん
2006/01/18(水) 00:00:22> wsprintfを何とかしてみます。
て言うか、wsprintf() のマニュアル見たの?
そこで、wsprintf() 使ってるのは意味不明だよ。
>>112
釣りか?
tcp 使ってても、パケットレベルで見れば
> UDPではデータの到着順が保証されない。
> →正常に受信できない可能性の増加
> →再送の必要性増加
だよ。
個人的には、tcp の上で自前の ACK とか言ってる奴
は、ネットワークプログラマをやめた方がいいと思う。
0114デフォルトの名無しさん
2006/01/18(水) 00:33:20> tcp の上で自前の ACK とか言ってる奴
アプリケーションよってはアプリケーションレベルでコネクションを確認することは意味がある。
TCPが接続されていることと相手のアプリケーションがどういう状態にあるかは関係ない。
BGPもTCP上で自前のKEEPALIVEメッセージを流すよ。
0115デフォルトの名無しさん
2006/01/18(水) 01:27:41KEEPALIVE と ACK は全然違うぞ。
0116デフォルトの名無しさん
2006/01/18(水) 01:35:35遅レスかも知れんが、やりたいのは packet shaping ってこと?
ぐぐればそれなりに情報出てくるよ。Linux にもドライバやツール類あるし。
011788
2006/01/18(水) 02:23:22たくさんのレスありがとうございます
LINGERをまず試してみたのですが、LANケーブルを切断後、
およそ10秒後にOS(WindowsXPproSP2)がソケットを強制破棄
した様子でLINGERは無視されました
TCPレベルのACKは取り方が分からなかったので試していません
今回は送信する信号のlengthが固定値のため、結局SNDBUFを
1信号分に設定することで送信エラー時は再コネクト後に前回
送信した信号から送信開始、という仕組みにしました
…と言ってもご指摘の通り、信号が出て行っただけでサーバへ
の到達は全く保障されていませんが垂れ流し仕様を作った設計者
も責任を感じているらしく了承してもらいました
0118デフォルトの名無しさん
2006/01/18(水) 02:25:19> 個人的には、tcp の上で自前の ACK とか言ってる奴
> は、ネットワークプログラマをやめた方がいいと思う。
お前がやめろ。是非やめろ。
0119デフォルトの名無しさん
2006/01/18(水) 02:27:24Windowsはlink downで、network adoptorが切断状態になるんじゃない?
0120デフォルトの名無しさん
2006/01/18(水) 06:19:54相手側のifが落ちてもこっちに通知が来るのはそれなりに遅れる。
0121デフォルトの名無しさん
2006/01/18(水) 09:25:35>>88
0122デフォルトの名無しさん
2006/01/18(水) 09:39:38アプリケーションレベルのプロトコルによる。
電文のシーケンスエラーというのもあるからな。
ACK/NAKのハンドシェイクを入れといたほうが何かと安心。
>>88の問題もアプリケーションレベルでACK/NAKのやり取りをすれば解決だな。
012386
2006/01/18(水) 13:03:10wsprintfについてですが、
もともと>>6の一番下は簡単な文字列を送るプログラムらしいので、
そういう何かなのかとあまり考えずに使っていました。
一応、単純に第2引数のポインタで、UDPデータのアドレスを得るように
してみました。しかし、3バイト以外データが空で、アドレスを
埋め込んでしまったかもしれません。
プログラムの基礎が足りないようです。勉強します。
もうひとついいですか?1度に1500バイトを超えるデータを
単位としたくて、64kB以下を送信するフラグメントを作ってみました。
Etherealで観測すると、UDP IP IP IP... UDP IP IP IP ...
という形になっています。WinSock2の標準のUDPでもこれをしっかり
組み立ててくれるのでしょうか?まだUDPデータがしっかりしていないので
確認できないのですが・・・
0124デフォルトの名無しさん
2006/01/18(水) 13:16:13> まだUDPデータがしっかりしていないので確認できないのですが・・・
etherealが先かよ!
IPフラグメントでググレ。
0125デフォルトの名無しさん
2006/01/18(水) 15:32:46紹介されてるHP等あったら教えてください、
-send
-sendto
-recv
-recvfrom
-wsasend
-wsasendto
-wsarecv
-wsarecvfrom
0126デフォルトの名無しさん
2006/01/18(水) 16:15:46>>1
0127デフォルトの名無しさん
2006/01/18(水) 22:55:46> 電文のシーケンスエラーというのもあるからな。
tcp 上で?
プログラムがバグってるか、タコなプロトコルスタック
/デバイスドライバ/オペレーティングシステム でも使
ってるのか?
(まあ、過去にはそういう経験もしたことあるわけだが…。)
>>118 といい、痛い奴が最近多いのか?
> >>88の問題もアプリケーションレベルでACK/NAK
> のやり取りをすれば解決だな。
そんなことができれば、>>88 も苦労してないだうな。
0128デフォルトの名無しさん
2006/01/18(水) 23:21:11interoperabilityを考えたプロトコルなら普通(←言い過ぎか?)は
ACK/NAK相当の応答が入ると思う。
応答のタイムアウト等で>>88の問題にも対応できるし。
0129デフォルトの名無しさん
2006/01/19(木) 00:21:49ネゴシエーションとかのことを言ってるのかな?
ただそれは、通信路の話とは別の話で、例えば各々の
プロセスが共有メモリを介在して動く時にも必要な話だ
よね。
世の中、そういう階層の分離ができない奴がいて、
>>122 みたいに「ネットワークだから伝送エラーが起き
るな。なんとなく心配だから、ハンドシェークしておこ
う。」とか言う、勘違い君がいたりする。
> 応答のタイムアウト等で>>88の問題にも対応できるし。
⇒ >>103 クライアントからサーバへは一方通行の垂れ
流しプロトコルの為
0130デフォルトの名無しさん
2006/01/19(木) 00:42:27>>129
0131デフォルトの名無しさん
2006/01/19(木) 06:50:17自作してるんじゃないの?
0132デフォルトの名無しさん
2006/01/19(木) 11:28:490133デフォルトの名無しさん
2006/01/19(木) 11:33:570134デフォルトの名無しさん
2006/01/19(木) 12:01:23同じリスニングポートのサーバソケットを開けた。telnet 127.0.0.1 9999 でやった
時は前者のサーバソケットへ、telnet 192.168.1.170 9999 でやったときは
後者のサーバソケットへ接続。ふーんやっぱそうでつか。
0135デフォルトの名無しさん
2006/01/19(木) 12:32:24・TCP層のアドレスは<IPアドレス、ポート番号>。
・インターネットアーキテクチャではホストでなくインターフェースごとにIPアドレスを付ける。
の二つから。
0136デフォルトの名無しさん
2006/01/19(木) 16:06:422. パケットをキューに入れる (別のスレッドに渡すため)
3. 1. に戻る
というループをしてるんですが、recv が終了して次の recv に入るちょっとした間に
到着したパケットって次で取得できるんですか? それとも取り漏らす?
0137デフォルトの名無しさん
2006/01/19(木) 16:11:17その「ちょっとした間」に来るパケットの量が、
(OSの)UDPの受信バッファよりも多ければ取りこぼす。
0138デフォルトの名無しさん
2006/01/19(木) 16:21:41サンキュー、パケット受信に入っていなくても OS がしばらくは持っててくれるわけね。
たまにパケット送りそこなってるらしいアプリがあって、しかも原因不明らしく、なぜか
受信側に嫌疑が振られてたんだけど、これで心置きなく突っぱねることができそうです。
0139デフォルトの名無しさん
2006/01/19(木) 16:48:43> たまにパケット送りそこなってるらしいアプリがあって、しかも原因不明らしく、
インターネットアーキテクチャでは、
途中にいるルータが破棄する可能性が前提なので、
パケットを受け損なうことがあると困るのであれば、
TCPその他で保障してやる必要がある。応答確認、再送など。
ルータは中間にいない場合も、HUBが破棄するかも知れない。
0140デフォルトの名無しさん
2006/01/19(木) 17:18:56困る困らないは別として、パケットが十分に低いトラフィックで受信側NICまで届いているのに
APでは取りこぼしていたりすると「実装不味いんじゃない?AP作り直せば」ということになるでしょう。
>>138はそんな感じなのでは?
0141デフォルトの名無しさん
2006/01/19(木) 17:24:02重ねてありがとうございます。マルチキャスト使って LAN 内のサーバ
探してまして、その応答部分ですね。
C: 起動。活動中のサーバを探すためにマルチキャスト
S: 自分が活動中であることを送り返す ← ここ
C: 活動中のサーバのうち適切なところへ接続
サーバは常に何台か動いているので実害はないのですが、テストしてると
たまに起動サーバ数と応答数が合わないらしくて (再現性なし)。状況によっては
1〜2 台になったりもするんで、バグなら直しておかないと。
ほぼ同時に複数の応答パケットが返って来るんで、先の 「ちょっとした間」 で
取り漏れてるんじゃないかと疑われそうになったしだいです。
TCP のパケットエラーとかは皆無なんで、ネットワークのせいではなさそう
なんですけどね。というか送信側は別会社でソースぐちゃぐちゃだったんで
あれこれ別の理由を探してるのかなぁ、と…
どうもありがとうございました。
0142デフォルトの名無しさん
2006/01/19(木) 19:35:15UDPは喪失しているのかもしれないな。
0143デフォルトの名無しさん
2006/01/19(木) 19:44:50あまり考えられないけどなぁ・・・って普通に社内LAN通してるのか。
そりゃUDPなら落とすこともあるか。
0144デフォルトの名無しさん
2006/01/19(木) 22:02:53たまにと言うのがどれぐらいの頻度か知らんけど、
sniffer とか ethereal とかでモニタすると言う
のはどうだろうか?
0145デフォルトの名無しさん
2006/01/19(木) 22:35:49> イーサネットでの衝突
それはイーサネットレベルで検知・再送されるんじゃなかったけ。
0146デフォルトの名無しさん
2006/01/19(木) 22:47:440147デフォルトの名無しさん
2006/01/19(木) 22:54:34イーサにとってUDPもTCPもないでしょう? それは別のレベルでの話。 イーサは16回
再送を試みるらしい。
0148デフォルトの名無しさん
2006/01/19(木) 23:02:27ソケットにのぞき窓でもあるんですか?
0149デフォルトの名無しさん
2006/01/19(木) 23:30:200150デフォルトの名無しさん
2006/01/19(木) 23:44:49ほらあれだよ
ネットにつながってるLANのコネクタを監視したらいいじゃん
無差別だったらプロミスキャスだったっけな
etherealの名前のままEthernetをどんなパケットも逃さず監視するって感じなのかな
どうやってそういう風なプログラミングをするのかは不明だが・・・
0151デフォルトの名無しさん
2006/01/19(木) 23:54:41>>145>>147の言っているのは10Base-5とか昔の話じゃないの?
スイッチングHUBだって、キューが溢れたり、
内部バスの(バタフライなどの)スイッチングネットワークで衝突が起きたら捨て放置だよ。
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/phrensy/pub/papers/AroraLM94/node7.html
0152デフォルトの名無しさん
2006/01/19(木) 23:55:38> どんなパケットも逃さず監視する
逃しますって。ばんばんパケット飛んでると処理間に合わないから。
0153デフォルトの名無しさん
2006/01/20(金) 00:24:20まあ、Ethereal で全部取れたら、sniffer の糞重
い機器の立つ瀬がないわな。
0154デフォルトの名無しさん
2006/01/20(金) 05:15:43DirectPlayでピアツーピアアプリを開発しようとしていたのですが、WEBで検索していて、
以下のように変化してきています。
1.ピアツーピアは NAT 越えできないから、費用かかってもクラサバでやるべきだろう。
2.DirectPlay は推奨されていない(MS自身を含めて)から Socket でやるべきだろう。
で、今はサーバーを NAT の外に置き、クライアントはどこでも可、通信は Socket で行う。
という環境を想定しています。
そこで以下の疑問が発生して悩んでいます。
1.部分的に UDP を使いたいのですが、UDP もやはり NAT 越え出来ないのでしょうか?
今回の環境でいうと クライアントからの送信は UDP で行えるが、サーバーからクライアント
への送信に UDP は使えないのでしょうか?
2.速さを要求する部分には UDP を使うべきでしょうか?TCP-IP と UDP ではかなり差があるもの
なのでしょうか?
どうかよろしくご教授下さい。
0155デフォルトの名無しさん
2006/01/20(金) 08:37:37ダウト
>1.
そんなことはない
>2.
無視できない差がある
0156デフォルトの名無しさん
2006/01/20(金) 10:52:42NATごぅぇできないだろ
設定めんどうくさいじゃん
頭で思っただけでルータが設定されるならいいけど
0157デフォルトの名無しさん
2006/01/20(金) 11:02:29>1 そんなことはない
やはりできるのですね?DNSサーバーへの問い合わせとかにもUDP使われてる訳ですもんね。
調べてきます。
>2 無視できない差がある
やはり。
ちょっと、勉強し直してきます。また質問させて下さい。
0158デフォルトの名無しさん
2006/01/20(金) 13:47:55>そんなことはない
NAT 、静的IPマスカレードは、ゲートウェイ外部から内部へのアクセスはできました。
ところで、それ以外のIPマスカレードの場合、やはり外部から内部にアクセスはできないのでしょうか?
IP、UDPに関わらす。
0159デフォルトの名無しさん
2006/01/20(金) 15:07:47内部のPC のアドレスを a.a.a.a 、ルータの外部アドレスをb.b.b.b
どこか他の PC やサーバのアドレスを c.c.c.c、
p, q, r をポート番号としたとき、
多くのルーターは、
a.a.a.a:p ⇒ b.b.b.b:q ⇒ c.c.c.c: r と UDP パケットを転送すると、その後しばらくの間は、
c.c.c.c: r ⇒ b.b.b.b:q と到着したパケットを a.a.a.a : p に転送してくれる。
これを利用していろいろなことが出来る。
0160デフォルトの名無しさん
2006/01/20(金) 15:29:49UDP Hole punching でぐぐるといいよ。
0161デフォルトの名無しさん
2006/01/20(金) 16:04:36> 2.速さを要求する部分には UDP を使うべきでしょうか?
> TCP と UDP ではかなり差があるものなのでしょうか?
速度に関する特性が全く違うので応用による。
UDPで、どんな状況下でも効率の良い実装を行うのはかなり難しい。
0162デフォルトの名無しさん
2006/01/20(金) 16:48:570163デフォルトの名無しさん
2006/01/20(金) 19:47:17サーバー側のaccept()で待つソケットについて質問があります。
普通、accept()に突っ込むソケットacpt_sockはまずバインドして、listen()で接続を受け付ける
クライアント数を設定するわけですが、accept()してからだと、クライアント数を変更することが
できません。
accept()中でも接続を受け付けるクライアント数を変更したいのですが、何かいい方法を教え
ていただけないでしょうか。
0164デフォルトの名無しさん
2006/01/20(金) 19:55:02なるほど!スゴイ。このあたり掘り下げて調査してみます。
>>160
こ、これも!さっきWEBで見ていたGapNATとNATSとかより、確実そうな方法。調査してみます。
>>161
そうですか。では、UDPをアプリデータ通信よりも、経路確保やKEEP-ALIVEの為に使うのが現実的そうですね。
>>162
ありがとうございます。経路確保やKEEP-ALIVE以外は全てIP転送を使用するというところから初めてみます。
皆様、的確なご指示ありがとうございます。
以前、別スレで他の質問をした事がありますが、板違いで質問ツアー → 玉砕 というパターンばかりでした。
これほど的確に教えて頂けるものなのですね。感動しました。2ちゃんすごい。
これからはスレの内容を充分把握してから質問するよう心がけます。ありがとうごさいました。
0165デフォルトの名無しさん
2006/01/20(金) 21:41:040166デフォルトの名無しさん
2006/01/20(金) 21:49:38> 経路確保やKEEP-ALIVE以外は全てIP転送を使用する
UDPとTCPが並列関係。
IPはUDPとTCPの下位層で、
UDP使った時もTCP使った時も、IPを使っている。
TCP/IPというのは、IP, TCP, UDP, DNS, HTTPなどプロトコル群の総称。
同じ意味の言葉に、インターネット・プロトコル・スーツがある。
0167デフォルトの名無しさん
2006/01/20(金) 22:51:55ん? backlog を動的に変えたいのか?
まず、何のためにそんなことしたいのか書いたほうがいいと思う。
(backlog の意味を勘違いしてるに一票を投じておくか…。)
>>166
DNS と HTTP まで含むのか?
0168デフォルトの名無しさん
2006/01/20(金) 23:05:05そういう定義です。> TCP/IP
http://www.ipa.go.jp/security/rfc/RFC2828-03TJA.html#TCP/IP
http://www.instantweb.com/D/dictionary/foldoc.cgi?TCP%2FIP
0169デフォルトの名無しさん
2006/01/21(土) 07:03:10DNS -> UDP -> IP
HTTP -> TCP -> IP
ですよね?
どうして UDP/IP とは言わないんだろう・・・orz
0170デフォルトの名無しさん
2006/01/21(土) 07:26:47すみません。TCPのつもりでIPと書いていました。
用語を適切にしようするよう注意します。
0171デフォルトの名無しさん
2006/01/21(土) 07:35:08いや、言うよ?
0172デフォルトの名無しさん
2006/01/21(土) 07:37:25申し訳ありません。マルチポストしてしまいました。
2度とこのような事はしませんのでご勘弁下さい。
0173デフォルトの名無しさん
2006/01/21(土) 07:46:48言わないな。
TCP/IPが>>168の意味だから。
0174デフォルトの名無しさん
2006/01/21(土) 16:29:19だから、言うって。上のリンク見ても別に否定されないじゃん。
0175デフォルトの名無しさん
2006/01/21(土) 18:04:010176デフォルトの名無しさん
2006/01/21(土) 18:10:09まあ、DNSやHTTPをTCPやIPと同列に語るよりは、ずっとまとも。
0177デフォルトの名無しさん
2006/01/21(土) 18:41:49------------------------------
TCP UDP
------------------------------
IP
0178デフォルトの名無しさん
2006/01/21(土) 18:58:46言うよ。
単にTCPと比べて用途が限定されてるから機会がそれほど多くないだけで。
0179デフォルトの名無しさん
2006/01/21(土) 19:01:38「UDPとIP」を「UDP, IP」と書いたり言うことはあっても、UDP/IPは変だ。
0180デフォルトの名無しさん
2006/01/21(土) 19:17:140181デフォルトの名無しさん
2006/01/21(土) 19:20:42TCPについては「TCP/IP」と明記していながら
UDPについては「UDP」としか書かれていない、なんてことは
まともな書籍、資料等なら、まず無い。
0182デフォルトの名無しさん
2006/01/21(土) 19:59:170183デフォルトの名無しさん
2006/01/21(土) 20:46:440184デフォルトの名無しさん
2006/01/21(土) 21:00:310185デフォルトの名無しさん
2006/01/21(土) 22:35:05> 「UDPとIP」を「UDP, IP」と書いたり言うことは
> あっても、UDP/IPは変だ。
お前、UDP/IP って「UDP と IP」の意味だと思ってる
のか? そりゃそんな意味で UDP/IP なんて書く奴はい
ないよ。
>>184
何を言いたいの?
0186デフォルトの名無しさん
2006/01/21(土) 22:44:570187デフォルトの名無しさん
2006/01/21(土) 22:47:09>TCPについては「TCP/IP」と明記していながら
"TCP/IP" と書いたら、TCP だけでなく UDP 等も含んだプロトコルセットを
意味するのが一般的でしょう。反対に、UDP/IP という表記は多くの人に
とって違和感のある表現であると思われます。
0188デフォルトの名無しさん
2006/01/21(土) 23:03:410189デフォルトの名無しさん
2006/01/21(土) 23:06:27いつものことだよ
0190デフォルトの名無しさん
2006/01/21(土) 23:08:311.TCP でこの処理を行えないという点がよく分かりません。
「TCP は非対称だから」という事なのですが。接続の方向のことでしょうか?
2.UDPで UDP Hole punching を行った後は TCP で接続できるのでしょうか?
ちなみに、間違っているかも知れませんが 私は UDP Hole punching を以下のよう
に理解しています。
別々のNAT内に Ha, Hb がありルーターをそれぞれ Ra, Rb とする。
インターネット上に Hc がある。
1.Ha, Hb ともに Hc に接続 Hc は Ha, Hb のグローバルアドレスを記録する。
2.Ha は Hc から Hb のグローバルアドレスを取得し接続する。
この時、Rb が conn NAT でなければ越えられないが、Ra には Hb との変換レ
コードが記録される。
この時点で、Hb から Ha に接続できる。
3.同様に Hb が Ha に接続( punching )する。
0191デフォルトの名無しさん
2006/01/21(土) 23:15:17「TCP over IP」の意味で「TCP/IP」という言葉を使う人が、世界に一人も居ないと思ってるの?
それと同様の意図で「UDP/IP」と言うのは間違いだと言いたいわけ?
0192デフォルトの名無しさん
2006/01/21(土) 23:16:42よろしくお願いいたします。
0193デフォルトの名無しさん
2006/01/21(土) 23:30:26| UDP | TCP |
|―――――――|
| IP |
|―――――――|
0194デフォルトの名無しさん
2006/01/21(土) 23:31:050195デフォルトの名無しさん
2006/01/21(土) 23:31:10∧_∧ ミ ギャハッハッ ズレてる!ズレてる!
o/⌒(. ;´∀`)つ
と_)__つノ ☆ バンバン
∧_∧
o/⌒(゜Д゜ )つ
と_)__つノ
0196デフォルトの名無しさん
2006/01/21(土) 23:32:42>それと同様の意図で「UDP/IP」と言うのは間違いだと言いたいわけ?
こっちは世界的に見て少数派だろうなぁ。
UDP が over IP である事を厳格に明示したい場合ってどういう時?
0197デフォルトの名無しさん
2006/01/21(土) 23:34:46|
�D
m(・∀・)<あなたはだんだんどうでもよくなる…
/
�D ))
m(・∀・)<あなたはだんだんどうでもよくなる…
\
(( �D
0198デフォルトの名無しさん
2006/01/21(土) 23:48:51は?
あんた「UDP/IPは間違い」って言ってんだろ?
多数か少数かは関係ないだろ。
0199デフォルトの名無しさん
2006/01/21(土) 23:55:03誰と勘違いしてるのか知らんが、>>197 でも見て落ち着け。
ちなみに俺も、理由無しに UDP/IP なんて書いてる奴がいたら、ちょっと眉をひそめるな。
0200デフォルトの名無しさん
2006/01/22(日) 00:01:18.-、
(,,■)
0201デフォルトの名無しさん
2006/01/22(日) 00:22:161. TCPでも同様の技法は使える。
非対称の接続を行う場合対称構造にはならない。
(ただしTCPには対称に接続確立する方法がある)
2. NATルータは通常TCPとUDPを区別して管理しているので不能。
ちなみに、登録サーバがあるスタイルのものを、
UDP hole punchingと呼ぶ流儀もあるが、
http://en.wikipedia.org/wiki/UDP_hole_punching
portの利用方法のことだけを言う場合も多い。
http://muziyoshiz.jp/20041225.html
私は後者(の前者)をUCP hole punchingと読んでいる。
0202デフォルトの名無しさん
2006/01/22(日) 01:06:44たくさん送出しちゃいました・・別に大丈夫ですよね?
ちなみに私は18歳女子高生(処女)です。
0203デフォルトの名無しさん
2006/01/22(日) 01:11:360204デフォルトの名無しさん
2006/01/22(日) 01:12:19それはUDP/IPのパケットですね?
0205デフォルトの名無しさん
2006/01/22(日) 02:17:22買った参考書では、一対一でのチャットのソフトではTCP/IPを、複数での
チャットソフトではUDP用いていましたが、TCP/IPで同様に複数でチャットを
するには、接続分ソケットを用意するということでしょうか?
それと、WSAAsyncSelectを使いメッセージ等を単一で処理をするのと、
マルチスレッド化してaccept()などを使用するのと、どちらが良いのでしょうか?
どちらとも、ということでしたら、理由などを参考程度にお願いします。
0206デフォルトの名無しさん
2006/01/22(日) 02:20:040207デフォルトの名無しさん
2006/01/22(日) 02:23:35はい、UDP/IPとちがって、TCPは接続指向ですから、
接続後とにその端点であるソケットが必要になります。
0208205
2006/01/22(日) 02:30:180209デフォルトの名無しさん
2006/01/22(日) 02:35:23TCPは基本的にクラサバで、サーバー側がListenしてクライアントがConnectする。
Listenしているポートには、IPアドレス.ポート番号さえ違えば、いくらでも接続できる。(例:Webサーバーのポート80)
0210デフォルトの名無しさん
2006/01/22(日) 03:01:16<src IP, src port, dst IP, dst port>の四つ組なんですもの。
0211デフォルトの名無しさん
2006/01/22(日) 05:09:31どこかのサイトの誰かのローカルアドレスに届くだけだから大丈夫
0212デフォルトの名無しさん
2006/01/22(日) 12:40:51いや、UDPだって同じだろ?
0213デフォルトの名無しさん
2006/01/22(日) 12:49:12UDPには接続はない。常に一方向である。
よって<dst IP, dst port>だけで目的のソケットまで辿り着く。
TCPはそうではない。<src IP, src port, XXX, 80>は何組みもありうる。
これが>>209が理解し、>>212が理解してないこと。
UDPで、<src IP, src port>にパケットを返すケース、
それは上位層(セッション、アプリケーション)の仕様なのである。
# UDP hole punchingは上位層の振る舞いを利用する。
TCPの場合は、TCP層で<src IP, src port>が相手であることがはっきりしている。
0214デフォルトの名無しさん
2006/01/22(日) 13:29:18TCPのsrcaddr:srcpotが信頼できて、UDPのは信頼できないってだけの話か?
それともUDP・TCPのソケットレイヤにおける動作の違いが言いたい?
TCPだって、相手にデータを返すのは上位層の役割。送信と受信で
TCPソケットを分けるような変態設計もできるわけだし。
0215デフォルトの名無しさん
2006/01/22(日) 13:44:27物理的にも DstAddr、DstPort しか持っていないんですか?
0216デフォルトの名無しさん
2006/01/22(日) 13:47:450217デフォルトの名無しさん
2006/01/22(日) 13:54:28UDPパケットにも、ありますよ。
http://www.faqs.org/rfcs/rfc768.html
けどUDP層ではそれは使わないんです。
それがUDPとTCPのサービスの違いになっています。
> それともUDP・TCPのソケットレイヤにおける動作の違いが言いたい?
その動作はサービスの違いを反映しているんです。
OSIの言葉で言うところの、各層のエンティティのアドレスって考え方を理解してください。
>>210はTCPの極めて基本的な常識です。
TCPの接続を実現するためには四つ組を識別子に使わざるを得ないんです。
# <dst IP, dst port>が同じ接続を認めないといけないので。
UDPには接続がないので、そうではありません。
これを理解してない人はTCP/IPの基本を理解してないと言わざるを得ません。
0218デフォルトの名無しさん
2006/01/22(日) 13:57:33SrcAddrはIPヘッダに、SrcPortはUDPヘッダに。
0219デフォルトの名無しさん
2006/01/22(日) 14:15:36加えるにpseudo headerの中にSrcAddr, DstAddrもある。
0220デフォルトの名無しさん
2006/01/22(日) 14:30:18は間違い。UDPでもconnect済みのソケットは、srcを区別して捨てるようになるから。
0221デフォルトの名無しさん
2006/01/22(日) 14:31:18レイヤーが理解できていませんね。
ヒント: ACK パケット
>>219
え゛?
0222デフォルトの名無しさん
2006/01/22(日) 14:37:40ソケットレベルで無意味なACKは考えない。
そのために、パケットではなくデータという言葉を使ったんだから。
0223やっぱり、理解できていなかったか…。
2006/01/22(日) 14:48:12ふーん、そうなんだ。
で、誰がそんな話してるの?
独り言なら、チラシの裏へ…。
0224デフォルトの名無しさん
2006/01/22(日) 15:11:35http://homepage3.nifty.com/toremoro/p2p/firewall.html の下方にあるように UDP hole punching は UDP
でしかできないとなっています。でも以下の方法でやれば TCP でもできるのでは?...
1.STUN サーバー(グローバル状態)に接続して、自分の Address.Portを記録してもらう(サーバー用として)。
2.外部からつなぐ場合、STUN サーバーから Address.Portを取得して、UDP で「サーバー用にポートを切
り替えて」というパケットを送る。
3.ポートを切り替える。
4.外部からTCPで接続する。
駄目でしょうか?
0225デフォルトの名無しさん
2006/01/22(日) 15:40:15> 3.ポートを切り替える。
が無理です。
>>224のように登録サーバを使うhole punchingなら簡単です。
双方自分のIPアドレス、ポート番号を登録して、
ローカルソケットには登録したIPアドレス、ポート番号をbindし、
同時に相手にconnectしにいけばいいだけです。
UDPでも全く同じコードで動きます。
0226デフォルトの名無しさん
2006/01/22(日) 16:00:19>ローカルソケットには登録したIPアドレス、ポート番号をbindし、
ポートを切り替えるといってたのはその事です。やはりできるのですね?
なんでこれをやりたいかと言いますと、単にNATの背後にある PC 同士で通信したいだけなんです。
でも、UDP でやると セッションとかパケットの並べ替えとかを UDP の上に作りこまないといけないと
書いてあり、場合によっては UDP の上で TCP を発明するぐらい作りこむ事になりかねないって事
だったんです。
でも TCP でも やりようによってはできるんですね。やる気でてきました。
ところで、Symmetric NAT のルーターって全体の何割くらいあるものなのですか?
Symmetric NAT は、ポート番号総当りで突破できるでしょうか?
0227デフォルトの名無しさん
2006/01/22(日) 18:20:47・SYNパケットがhole punchingを行うことになるが、
相手がhole punchingする前にルータにSYNが到達した場合、
ルータの振る舞い、ルータの出したICMPを受けた時のプログラムの振る舞い。
一番簡単なのは中継サーバを使う方法。
0228デフォルトの名無しさん
2006/01/22(日) 20:23:32中継サーバーが確実ですね。
0229デフォルトの名無しさん
2006/01/22(日) 20:51:31udpで実際 Punching holeやってるが
コネクション型のTCPでできるの?
0230デフォルトの名無しさん
2006/01/22(日) 21:11:12すみません。あまりネットワーク詳しくない上に、確認する環境がないもので...orz
ただ、WEBで調査した結果、できそうだなと...
でも、ルータの変換テーブルへの記録され方が TCPとUDP で同じだとの前提ですが。(ConnNAT,Destricted何とかNAT,SymmetricNATなど)
方法としては単純で、以下の手順を行います。
1.PC-A から 外部の PC-B にクライアント接続します。PC-B は PC-B からみたリモートアドレスとリモートポートを取得します。
2.PC-A はローカルポートとリモートポートを逆にして、サーバーとして待機します。
3.外部の PC-X は PC-B から PC-A のアドレスを取得して、クライアントとして接続します。
UDP Hole Punching と違うのは、ポートを逆にする手順だけだと思います。 確認できたとしたら、是非教えて下さい。
0231デフォルトの名無しさん
2006/01/22(日) 21:16:480232デフォルトの名無しさん
2006/01/22(日) 21:19:430233デフォルトの名無しさん
2006/01/22(日) 21:24:390234デフォルトの名無しさん
2006/01/22(日) 21:29:42すみません。さっきの手順でつながるのは ConnNAT の場合だけでした。
DistrictedなんとかNAT (2種類) を考えた場合、 UDP Hole Punching と同じ手順が必要だと思います。
(UDP Hole Punching の手順に ポート逆転 を追加)
0236デフォルトの名無しさん
2006/01/22(日) 21:55:071.PC-A から 外部の PC-O にクライアント接続して待機。PC-O は PC-O からみたリモートアドレスとリモートポートを取得します。
2.PC-B から 外部の PC-O にクライアント接続して待機。PC-O は PC-O からみたリモートアドレスとリモートポートを取得します。
3.PC-A から PC-B に接続する場合、PC-O に要求を出します。
4.相手方のアドレスとポートを取得した両方の PC は切断して相手方にクライアント接続します。
接続は失敗しますが、自分側ルーターの変換テーブルに相手方とのレコードが残ります。(きっと)
5.PC-B はローカルポートとリモートポートを逆にして、サーバーとして待機します。
6.PC-A は PC-B にクライアント接続します。
0237デフォルトの名無しさん
2006/01/22(日) 23:23:41俺の認識だと
■UDPは非コネクション系だからNATはそのパケットが正規の
ものか認識できない IPアドレスでは
■送信した時のポートを覚えておいて、そのポートできたパケットを受け入れる
■送信したIPアドレスも覚えておく
TCPのコネクションだと相手のIP固定だからルーターも
アドレスで選別できるよね?
0238デフォルトの名無しさん
2006/01/22(日) 23:32:43ついでに
私が作ったのはTV電話だけど
UDPの欠落、順序違いはたまに発生するけど
頻度から考えてTCPの再発明までこったする必要ないと
思うが?
TV電話の音声・映像は逆に再要求で遅延がひどいパケットは
捨てたいからUDPが向いてるけど
>>236さんがリアルタイム性の強いものを作るならばUDPの方が
向いてるし、ファイル系の速度よりも信頼性を取るならば
リレーサーバーで十分と思うが
0239デフォルトの名無しさん
2006/01/22(日) 23:47:22>■送信したIPアドレスも覚えておく
Restricted Cone NAT 送信した相手のIPアドレスも覚える
Port-Restricted Cone NAT 送信した相手のIPアドレスとポート番号まで覚える
この場合は考慮しています。と言いますか、送信先を覚えない Conn NAT の場合
Punching する必要はなく、STUNサーバーからアドレス取得してアクセスできる。
自分はそう理解しています。(ひとりよがり...)
0240デフォルトの名無しさん
2006/01/22(日) 23:57:230241デフォルトの名無しさん
2006/01/23(月) 00:03:49あ、TV電話興味あるー!
今作ってるのは簡単な会議システムで、ライブ映像(音声)とファイル共有、ホワイトボード共有などです。
ライブ映像(音声)以外はローカルで完成しているのですが、マウス移動情報が大量に流れるのでUDPが理想的なのですが。
>>238 さんはTV電話はどのような技術を利用されたのですか?
自分は以前 Flash Communication Server で作ったことはあるのですが、クラサバだし、サーバーソフト値上がり(600万円!)
したので止めました。
今は RTC で作成を始めたところです。
>リアルタイム性の強いものを作るならばUDPの方が
>向いてるし、ファイル系の速度よりも信頼性を取るならば
>リレーサーバーで十分と思うが
また迷いが出て来ました...そんな気がしてたのですが。
でも ルーター の変換レコードって 90秒程度で消えるというような文章を目たもので。
KEEP-ALIVE 用のパケット送ってれば済む話?
よしゃぁ!UDPを試してみます。
0242デフォルトの名無しさん
2006/01/23(月) 00:07:30( ゚д゚)ハッ! それだけ STUNサーバー を経由するか?
ちょっと落ち着いてよく考えてみます。
0243デフォルトの名無しさん
2006/01/23(月) 00:10:46形態的にはネットゲームみたいにしたいんです。
ロビーで相手探して接続するというような。
0244デフォルトの名無しさん
2006/01/23(月) 00:15:39http://sumim.no-ip.com:8080/collab/20
0245デフォルトの名無しさん
2006/01/23(月) 00:26:01文書上に両方から書き込みができる、ズーム、移動等が同期で動くというどっかにありそうな。
場合によっては NetMeeting で事足りるじゃないかって言われるかも...orz
0246デフォルトの名無しさん
2006/01/23(月) 00:33:260247238
2006/01/23(月) 00:33:56書くことたくさんあるけど・・・・
リモートツールも作ってます
■ルーターには数分に一度データーを流すことにより接続を維持します
■ファイル転送はTCPでサーバー経由で十分です
■マウスはUDPの方がいいです。TCPでは効率悪すぎます
マシンスペック、回線により送る量の調整が必要となります
単純なホワイトボードだとマウス情報送るべきではないよ
■今はUPnPを期待して逆向き接続にしてます、双方UPnPが使用できない
時はリレーサーバー 複数人の場合は一人でもUPnPが使用できれば
それをサーバーにします
■UPnPはルーターにXMLで直接送ります。それによりSP2は回避できます
■winsockではUDPは相手に一度でもつながらないと以後 ソケットは
使用不可になるのでオプションで機能をOFFにします
Hole Punching時の不到達前提で相手に送るときです
0248238
2006/01/23(月) 00:40:30Hole Punchingは明日が予測できない技術だから
業務では使用しないほうがいいよ
0249デフォルトの名無しさん
2006/01/23(月) 01:07:02貴重なアドバイスありがとうございます。
>マシンスペック、回線により送る量の調整が必要となります
そこなんですよね。バッファリングというか、ハンドルの遊びみたいな部分というか。
UPnPって操作したことないので全くわかりません。ぅw
確か、これから使うグローバルアドレス等をPGで指定できるんですよね。勉強します。
>248
ですよね。現時点でも Synmetric NAT は越えられない訳だし...
http://www.newrong.com/product/natsdk/ とかはどうなんでしょうねぇ?
0250デフォルトの名無しさん
2006/01/23(月) 06:00:20> ■マウスはUDPの方がいいです。TCPでは効率悪すぎます
TCP_NODELAYやOOBつーもんがあるが
0251247
2006/01/23(月) 09:10:39すみません書き方悪かったです。本質的にはUDP,TCP関係ないです
回線的には書かれているようにTCP_NODELAYで乗り越えれます
レスの内容がリモートですので相手のマシンの処理能力に
影響される部分が多いです。時間情報つけて処理しきれない事に
気づいた時には回線上には大量のマウスデーターが順番待ちしてます
0252250
2006/01/23(月) 10:12:54むしろ捨てた方がいいという状況下で、
TCPはオーバースペックという話なら納得。
0253デフォルトの名無しさん
2006/01/23(月) 11:51:070254デフォルトの名無しさん
2006/01/23(月) 12:46:130255デフォルトの名無しさん
2006/01/23(月) 12:52:50リアルタイムを選ぶならjavaしかないすよね(至#;)
0256デフォルトの名無しさん
2006/01/23(月) 13:16:30BREW(Binary Runtime Environment for Wireless) 7
http://pc8.2ch.net/test/read.cgi/tech/1137502541/
CLDC+MIDP+携帯電話用Javaスレッド part 5
http://pc8.2ch.net/test/read.cgi/tech/1132493827/
おまけ:
iモード携帯電話用Java(iアプリ) Part10
http://pc8.2ch.net/test/read.cgi/tech/1131603113/
0257デフォルトの名無しさん
2006/01/23(月) 22:36:09そういう状況だと、TCP_NODELAY は関係ない。
そのために、OOB つーもんがあるんだが。
0258247
2006/01/24(火) 09:08:45単独に>>251だけ見た場合 そうですね誤解を受ける書き方ですね
ここまで掘り下げる話題でもないんだけど・・・・
リモートに関することでスレ違いだったのでハッキリかかなくてすみません
いらぬ誤解を生んだようです。
>>247でUDPの方が良いというのは訂正します。
TCPではできないというような印象を与えたようです
実際 私もTCPを使ってます(UDPの方が楽ですが)
>>250さんの言われている通りですが
マウスの生データーをTCPを使ってまで送る必要は無いということです
実際キャプチャするとわかりますが もの凄い数の微小データーが発生します
TCPですとデーターは一定の数まで送信されませんが 実際はTCP_NODELAYを指定しなくても
問題ないぐらいにデーター数は多いです。逆にTCP_NODELAYを指定すると
マウスデーター1つにつき1パケットになるので再送等のリスクは高まります
相手のマシンが たとえばwin98の低スペックの場合データーは処理しきれず
たまります。そこで>>257さんの言われるOut of Bandなわけですが
そこまでTCPの機能を駆使してもデーターを間引く事になります
相手の画面のホワイトボードにはカクカクした線がでます。
そのため、クライアント側でマウスのデーターは補間して送る必要があります
■マウスのデーターを生で送るべきではない
■もし送るならばUDPで十分(TCPでもかまわない)
■データーを落としたくなければアルゴリズムを見直す。
(ここから先はこのスレッドと関係ないけど)
0259デフォルトの名無しさん
2006/01/24(火) 13:14:380260デフォルトの名無しさん
2006/01/28(土) 18:45:59カーソル移動しなくてもデータが生成されるようなハードからの生データは
送るべきないだろうけど、座標情報なら送っていのでは?
XとかVNCでもそうやってるだろうし
0261デフォルトの名無しさん
2006/01/28(土) 19:16:43Xはraw bandwidth X拡張ってのがあった。それも端折る。
>>258はまじめだねえ。
0262デフォルトの名無しさん
2006/01/29(日) 13:19:410263デフォルトの名無しさん
2006/01/29(日) 14:07:36現在、ある程度のjavaの勉強が終わったので、javaでネットワークの勉強を始めようと思っています。
最終的にはちょっとしたネットを使ったゲームができればいいなと思っています。
そこでいろいろ検索したのですが、ネットワーク初心者向けのサイトが見つからなかったので
「基礎からわかるTCP/IP Javaネットワークプログラミング」って本を買おうかと思っているのですが
他にオススメのとかご存知の方いるでしょうか。サイトとかでも教えていただけるとうれしいです。
0264デフォルトの名無しさん
2006/01/29(日) 15:16:290265デフォルトの名無しさん
2006/01/29(日) 22:53:310266デフォルトの名無しさん
2006/01/30(月) 02:10:27そんなことされるくらいなら唐辛子の持込を許可してやるよ。
0267海原雄山
2006/01/30(月) 02:33:000268デフォルトの名無しさん
2006/01/30(月) 15:54:44キャッシュサーバーとしての機能のみを備えたもの
(ウェブコンテンツをキャッシュして、
回線速度とコンテンツの内容からの即時性を元に、
キャッシュされたものをクライアントに返すか、
ウェブサーバーまで最新コンテンツをとりに行くか判断)
をプログラミングしたいと思っているのですが、
参考にすればいいページやソースコードなどあれば教えて下さい。
0269デフォルトの名無しさん
2006/01/30(月) 16:08:48> コンテンツデリバリーサーバーの、
> キャッシュサーバーとしての機能のみを備えたもの
それキャッシュサーバーやん。
http://www.squid-cache.org/Doc/FAQ/FAQ.html
http://www.squid-cache.org/Doc/Prog-Guide/
http://www.linux.or.jp/JF/JFdocs/TransparentProxy.html
http://www.squid-cache.org/related-software.html
0270デフォルトの名無しさん
2006/01/30(月) 16:09:10その本で十分じゃねえか? 分からなかったら本屋行って他の本買いまくれ。
分かるまで右から順番に買って行け。左からでもいいぞ。
0271デフォルトの名無しさん
2006/01/30(月) 18:23:09http://pc.watch.impress.co.jp/docs/2006/0130/kaigai237.htm
サーバで効果あるかもしれないな。
0272268
2006/01/30(月) 18:43:17回答&リンクありがとうございます。
0273デフォルトの名無しさん
2006/01/31(火) 09:28:10本屋に行くたびに順番が変わってたりして。
0274デフォルトの名無しさん
2006/01/31(火) 13:46:35それを防止したいなら全部大人買いだ。箱で買え。
本棚ごと買え。株式交換で本屋ごと買収だ。
0275デフォルトの名無しさん
2006/02/01(水) 15:18:54コードも一応うまく動いているようで、クライアント側で"hello"と打てばサーバー側がそれを受け取ります。
それぞれどういう役割をしているかなんとなく理解しているつもりです。
で、これを具体的に使った例が見たいんですが
「TCP/IP ソケット プログラミング」で検索しても
具体的な例はどこにも見つかりません。
なんか簡単な飛行機の予約システムとか
本を注文するシステムのような具体例が載っているリンク知りませんか?
"hello"とかサーバーの時間を調べるくらいじゃ全然面白くないんですよねぇ。
どうかお願いします。
0276デフォルトの名無しさん
2006/02/01(水) 15:49:50Visual C# for Win64API
Visual C# for JVM
つまり.NETはいらない。
ネイティブとジャヴァヴァーチャルマシーンで動くC#が最高。
そういうこと。
0277デフォルトの名無しさん
2006/02/01(水) 16:24:58テンプレにRFC集のリンクがあるからHTTPでもSMTPでも好きなの読め
0278デフォルトの名無しさん
2006/02/01(水) 17:10:12手近で具体的な使用例といえば、
いま>>275がレスを書き込んだ2ちゃんねるとか。
0279デフォルトの名無しさん
2006/02/01(水) 18:58:58サーバ側で accept したら thread を立ち上げるものです。
接続が1つの場合は問題なく動くのですが、同時に多数の接続を試みると、
双方の recv がしばしば期待(固定長サイズ受信)に反して 0 (EOF)を受信してしまいます。
送信側では send は正常に返っているようなのですが、どうも具合が良く分からないのです。
多数同時接続の時のデバッグするときはどうしていますか?
0280デフォルトの名無しさん
2006/02/01(水) 19:07:30send や recv は、戻り値を見てこんな感じで送る必要がありますが、
やっていますか?
int len = data_size;
char* p = data_ptr;
while (len > 0)
int sent = send(socket, p, len);
if (sent <= 0) エラー処理
len -= sent;
data_ptr += sent;
}
0281デフォルトの名無しさん
2006/02/01(水) 19:08:18>data_ptr += sent;
p+= sent の間違い。
要は、たぶん期待したデータサイズだけ送れていないのではないか、と。
0282デフォルトの名無しさん
2006/02/01(水) 19:26:31早速の回答ありがとうございます。
送り側のループ処理ですね!
受信側は recv を MSG_WAITALL で呼んでいたのですが、なるほど確認してみます!
0283280
2006/02/01(水) 22:32:09同時に一斉にアクセスをかけてみると幾つかの現象が生じるみたいです。
1つのホストでサーバ&クライアントを動かして、ログを元にペアとなったPIDを
順に追ってみると、サーバが存在しないプロセスに対して応答していることが分かりました。
以下は互いに通信した実際のPIDの組み合わせですが、サーバの20605
はいないはずの何かから accept して、意味のないデータを受信しているようなんです。
どの当りが影響しているのでしょう??
server-client
20603-20600
20604-20601
20605-????? ← クライアントは存在しないプロセス!?
20609-20602
20610-20606
20611-20607
20612-20608
0284280
2006/02/01(水) 23:17:47accept して、pthread_create した直後に、usleep をちょっと挟んだだけで、上記不具合は
全く生じなくなってしまいました(いや、うれしいんですが)。どういうことなんでしょ。。。
if ( (s = accept(sock, 5)) != -1 ){
pthread_create(XXXX);
usleep(5000);
}
みたいな感じです。
0285デフォルトの名無しさん
2006/02/01(水) 23:19:34俺はお前じゃねー通の
0286デフォルトの名無しさん
2006/02/01(水) 23:25:57send側に問題がないのなら、recvの処理に問題があるのでしょう。
MSG_WAITALL を使わずにループにしてみてはどうですか?
移植性も高まるし。
0287デフォルトの名無しさん
2006/02/02(木) 01:20:07問題の部分を引用しないと、なにが悪いか分かるわけないっつの
0288デフォルトの名無しさん
2006/02/05(日) 18:33:42で、質問です
1 TCPソケット使って GET / HTTP/1.1 をHTTP鯖に送る
2 レスポンスが帰ってくる
3 データ部分に0f38とか、ソースに本来ないものが含まれる
さいしょ、chunk分けされたものかなーって思ってたけど、
RFCに載ってないのかよーわからん・・・
具体的なサイトは、このスレをtelnetでgetしてみると得られるかもしれません。
(とりあえずまんま元の質問をコピペ)
0289288
2006/02/05(日) 18:35:27質問は、この0f38とか言う文字列が何を指しているのか、
最終的には回避したいので、回避する方法につながる何かの情報提供をおまちしておりまゥゥゥゥゥィ
0290デフォルトの名無しさん
2006/02/05(日) 19:23:24文字通りchunkじゃないの?
HTTP/1.1つけてGETしたんならchunk対応はMUSTなので
平気でchunkで送っていいことになってる。
対応できないんなら1.1を名乗っちゃいけない
0291デフォルトの名無しさん
2006/02/05(日) 19:52:530293デフォルトの名無しさん
2006/02/05(日) 20:21:080294デフォルトの名無しさん
2006/02/06(月) 12:29:28UDPでサーバーにあるテキストファイルの内容を読むのは可能ですか?
もし可能であればどうすればいいのか簡単な流れを教えてください。
関連する検索キーワードでもいいです。
まさかfopen()やfread()はクライアント側からは使えないですよね・・・
0295デフォルトの名無しさん
2006/02/06(月) 12:31:31UDPを誤解してないか?
0296デフォルトの名無しさん
2006/02/06(月) 12:36:12自分が分かっているのはUDPでコネクションレスの通信ができる、程度です。
もしかして、サーバー側にfopen()とかやらせるには
server.cの中でfopen("xxx.txt", "rb");なんて書いてやればいいんでしょうか?
でも、どのタイミングでやらせればいいんでしょう?
すみません・・・
0297デフォルトの名無しさん
2006/02/06(月) 12:39:21> UDPでコネクションレスの通信
その解釈は正しくて、UDPはそれ以上でもそれ以下でもない。
> サーバー側にfopen()とかやらせるには
やらせるには、サーバ側に
> server.cの中でfopen("xxx.txt", "rb");なんて書いてやればいいん
です。
> どのタイミングでやらせればいいんでしょう?
UDPで送信する前にやっておかなくてはいけませんね
ファイルの内容が実行中に変わらないのなら、プログラム初期化時にやっても良いですし
常に変動し続けるのなら、送信する直前にするのもいいでしょう
0298デフォルトの名無しさん
2006/02/06(月) 12:47:59実はクライアント側からコマンドを打てばサーバー側でなんでもできると思ってました・・・(恥
ファイルの内容はもしかすると変動するかもしれないので、送信する直前にしてみます。
また質問することが「多々」あると思いますがよろしくお願いします。自分でももっと勉強しますから。
0299デフォルトの名無しさん
2006/02/06(月) 12:51:49> 実はクライアント側からコマンドを打てばサーバー側でなんでもでき
ます。
ただし、当たり前ですが全て貴方が実装しなくてはなりません
0300デフォルトの名無しさん
2006/02/06(月) 13:10:20あら、実装すればサーバー側でなんでもできちゃうんですね。
いらっしゃるなら、ついでにもう一つ質問を・・・
UDP(コネクションレス)ならマルチユーザーになった場合、
二人のクライアントが同時にサーバーにあるデータを変えてしまうような場面に遭遇しますか?
TCP/IP(コネクションあり)だとクライアントとサーバーが
一対一でつないでいる間は他のクライアントはつなげなかったんでしたっけ?
それならそんな場面に出くわすことはなさそうですが・・・
0301デフォルトの名無しさん
2006/02/06(月) 13:13:080302デフォルトの名無しさん
2006/02/06(月) 13:14:540303デフォルトの名無しさん
2006/02/06(月) 13:21:57> UDP(コネクションレス)ならマルチユーザーになった場合、
> 二人のクライアントが同時にサーバーにあるデータを変えてしまうような場面に遭遇しますか?
いやだから、UDPはover IPな通信路を築いているだけで、
サーバ側やクライアント側のアプリケーションプロトコルはまったく感知しないんですよ
貴方の言っていることをちょっと大きく言えば
1 神飛行機に「お願いです、命たすけてくだしあ」って書いて天空に飛ばしてみる
2 神が受け取る。けど助ける命いっぱいある
3 どれ先に実行すれば良いか悩む
4 もうpanicですよ
という1〜4の手順の中で、UDPに相当するのは”神飛行機”になります。
神飛行機が神の審判を助けたり、貴方のお友達を助けるわけじゃないですよね?
この「審判」や「助ける」のはover 神飛行機なアプリケーションプロトコルなので、
貴方が「審判」の実装や、「助ける」の実装をしなくてはならないのです。
> TCP/IP(コネクションあり)だとクライアントとサーバーが一対一でつないでいる間は
> 他のクライアントはつなげなかったんでしたっけ?
> それならそんな場面に出くわすことはなさそうですが・・・
んなことない
TCPのリスナは「待つだけ」で、「コネクションが到達」したら「接続されたソケットを作」ってまた待ち続けるだけ
0304デフォルトの名無しさん
2006/02/06(月) 13:31:43でも多分なかなか分かってくれなさそう
0305デフォルトの名無しさん
2006/02/06(月) 13:38:480306デフォルトの名無しさん
2006/02/06(月) 13:39:24どのクライアントがどういうタイミングに来たときにどうするか決めてやらないといけないんですね。
>>TCPのリスナは「待つだけ」で、「コネクションが到達」したら「接続されたソケットを作」ってまた待ち続けるだけ
ああ!そうでしたね。
よく見たら、つなげられる上限を決める定数が上の方で定義されてました。
もっと勉強しときます。
図書館がそろそろ閉まるので今日はこの辺で。また来ます。ありがとうございました!
0307デフォルトの名無しさん
2006/02/06(月) 13:44:19一概に「アプリケーションプロトコルとは〜というもの」とは言えないけれど、
とりあえずステートマシン(=状態遷移を伴い、状態によって挙動が変わるプログラム)を組まなくてはならないと思う
まぁ、「どういう場合に問題が起こるか?」というだけで授業まるまる1つ使うくらいの物になるから、そのへんは勉強だわな
>>305
わすれてタタタタタタタ\\・・
0308デフォルトの名無しさん
2006/02/06(月) 13:45:25発生することもないだろ。UDP もしかり。要は作り次第。
どうでもいいがエラく早く閉まる図書館だな。
0309デフォルトの名無しさん
2006/02/06(月) 13:46:580310デフォルトの名無しさん
2006/02/06(月) 14:07:58今TCPでプログラム組んでます。
send()の直前でsetsockopt()でTCPヘッダのDSCP値を
変更してパケット出力をするプログラム書いてるのですが、
etherealでパケット確認すると、TCPヘッダのチェックサム値が
エラーとなってます。
受信先ではきちんとデータ取れてるんですが・・・。で、質問なんですが、
1.チェックサムの計算って誰がやるの?NIC?OS?ソケット?
2.チェックサムが異常のパケットって破棄されると思ってたんですが、
受け取れるのはなぜ?(recv()もエラーになってない。)実は破棄
されない?
全くもってわからず困ってます。どなたか俺の神飛行機を受け取って
助けてくださいorz。
0311デフォルトの名無しさん
2006/02/06(月) 14:16:01TCP/IPを実装しているのは、例えばNICとかルータとかだよな。
どの部分でTCPのチェックサムを処理しているかわからないけれど、
TCPのチェックサムでエラーが発見された場合は再送信するようになってるはず
受け取れるということはチェックサムが正しいことになるのでは?
と神飛行機に書いてとばしてみる
0312デフォルトの名無しさん
2006/02/06(月) 14:34:14レスありがとうございます。
>再送信するようになってるはず
そうなると再送要求のパケットが飛ぶはずですよね?
再送要求も出てないのですよね・・・。ethrealのバグか?
他のパケットキャプチャソフト使ってもうちょっと試してみます。
他にも回答頂ける方いましたらplz m(__)m
スミマセンがageで。
0313デフォルトの名無しさん
2006/02/06(月) 14:35:40> そうなると再送要求のパケットが飛ぶはずですよね?
うーん・・・どうだったかなぁ
なんだか再送信要求のパケットなんて飛ばなかったと思うんだが・・・
0314310
2006/02/06(月) 15:08:13現象が起きたのはLinuxの送信ポートのキャプチャを見てたのですが、
Windowsの受信ポートのキャプチャを見たら、正しいパケットでした。
Linuxの方のetherealのバグかは謎ですが、パケットを拾ってる
タイミングに問題ありなのかな?と思ってます。ちと実験で、
Windowsで送信する際にDSCP値書き換えた場合の送信ポートの
パケットとLinuxで受信したパケットを拾ってちと検証してみます。
再送要求のパケットなんてありませんでしたね(^^;失礼しました。
何分勉強途中なもので。
ありがとうございましたm(__)m
0315デフォルトの名無しさん
2006/02/06(月) 17:35:12パケットをかすめ取っていると、CRCは当然合いません。
0316デフォルトの名無しさん
2006/02/06(月) 18:42:58> なるほど。
あの例えでわかったんかよ(ワラ
>>308
listenじゃなくて次のacceptだろ?
0317310
2006/02/09(木) 11:32:33>>315
>いまどきCRCの生成はNICにオフロードされているので
オフロードってどういうことですか?今時って事は昔は
また違ったのでしょうか?興味本位で教えてください。
また別の質問です。スイマセン(--ゞ。
TCP/IPの受信バッファのサイズはRWIN値で設定されているのは
わかりますが、このサイズを超えたデータを受信した場合は、
超えた部分は破棄されると考えて問題ないでしょうか?
例えばRWIN値が5KBとし1KBのデータが連続的に送られてくるとします。
最初の1KBのデータを受信し、そのデータに何らかの処理を行ってる最中
にもデータは送られてる訳で、6個目以降のデータは破棄されてしまうの
でしょうか?
RWIN値のMAX値って64Kだと思うのですが、1MBのデータ送った場合等、
受信速度>送信速度でない場合データ取りこぼしまくるんじゃないかと
思うのですが。
稚拙な質問ですが教えてください。
0318デフォルトの名無しさん
2006/02/09(木) 11:33:56> TCP/IPの受信バッファのサイズはRWIN値で設定されているのは
> わかりますが、このサイズを超えたデータを受信した場合は、
> 超えた部分は破棄されると考えて問題ないでしょうか
破棄される
その代わり相手が再送信する
あまりにも送信できないとタイムアウトで切断される
じゃなかったっけ?
0319デフォルトの名無しさん
2006/02/09(木) 19:56:49その後はACKが来るのを待つ。
それが伝送制御ってもんだ。
だからRWINが大きいほうがスループットが上がるんだよ。
0320デフォルトの名無しさん
2006/02/09(木) 21:31:32参考になるようなページを教えて下さい。
0321デフォルトの名無しさん
2006/02/09(木) 23:06:42Checksum Offload 機能でググれ
ただ、いつも>>315の通りなわけじゃない。(断言しているが)
0322デフォルトの名無しさん
2006/02/09(木) 23:09:36またか>>268
0323310
2006/02/10(金) 12:47:44精進しますm(__)m
0324デフォルトの名無しさん
2006/02/10(金) 18:38:01で質問させていただいているものなのですが
ネットワーク関係はこちらのほうがよさそうなので
もし、よろしければ上記のアドレスの疑問なのですが教えていただけないでしょうか。
いろいろ試したところクライアント側の送信がゲームの毎フレームごとに
送信されておらず一定時間ごとに送信されてしまっているため
サーバー側で座標をクライアント側から毎フレームごと得られずカクカクしてしまっているようなのです。
win2k
VC#2003使用
通信部分はゲームのメインループから
・サーバー
try
{
Int32 port = 9999;
IPAddress localAddr = IPAddress.Parse("192.168.0.1");
server = new TcpListener(localAddr, port);
server.Start();
t= new Thread(new ThreadStart(receive));
t.Start();
}
catch
{}
・クライアント
t= new Thread(new ThreadStart(Con));
t.Start();
のようにスレッド化してあります
0325デフォルトの名無しさん
2006/02/10(金) 18:44:37でも、とりあえずどんな時間間隔でどれくらいのデータが送受信できてるのか確かめないとね
0326デフォルトの名無しさん
2006/02/10(金) 18:47:49C#はよく知らないが、世間で言うところの TCP_NODELAY オプションを
使うといいのではないかな。
0327411
2006/02/10(金) 21:13:29nagleアルゴリズム調べさせていただきTCP_NODELAYに関してもわかりましたが
オプションらしきものがMSのドキュメントを見てもわからないため
UDPでの通信をしてみようと思っています。
>>247
でマウスの位置を送るようなことが書いてあり
リアルタイムデータ送信ならUDPのほうがよいみたいですので。
また、何かありましたらよろしくお願いします
0328デフォルトの名無しさん
2006/02/10(金) 21:16:50setsockopt()とか無いの?
//儚いUDPを使う>>327の強気の態度に惚れるかもしれん
0329324
2006/02/10(金) 22:12:13TCP使用時とほぼ同じ動きを行います。
ゲームの1フレームごとに通信が確立していない可能性が高そうなので
マルチスレッドの部分も含めて非同期通信部分を見直します。
0330411
2006/02/10(金) 22:17:41try catch構文で通信のエラーを破棄する処理を入れれば問題なく動く場合でも
try catch構文をはずすだけでエラーをはいて強制終了する場合がある。
スレッドを用いた場合は明らかに通信の回数が減っている
ただし、スレッドを用いない場合は通信受付待機の時間が
ゲーム画面の1フレームの更新時間にかなりの影響を及ぼし
ゲームにならなくなってしまう。
0331デフォルトの名無しさん
2006/02/10(金) 22:28:580332デフォルトの名無しさん
2006/02/10(金) 22:31:12逆に質問
同期UDPって何だ・・・
0333324
2006/02/10(金) 22:34:50ありがとうございます。
なにぶん未熟なものでして、TCPで使っていた
マルチスレッドを利用したUDPの非同期?通信は試してみたのですが
TCPのときとさほどかわりませんでした。
今行っているゲームの通信部分は3Dモデルの主人公の動きを相手側でも
同じように再現するために座標を送っています。
0334デフォルトの名無しさん
2006/02/10(金) 22:37:02UDP結構使える?
うちのLANだと1〜2%ロスだったけど、WANに出ると正直どうなるかわからんのだ・・
0335デフォルトの名無しさん
2006/02/10(金) 22:39:04tcp_client_instance.NoDelay = true;
0336324
2006/02/10(金) 23:05:04client = new TcpClient("192.168.0.1", port);
client.NoDelay = true;
と定義できました。
しかし、動作は変わりませんでした。やはり非同期通信がうまくいっていないようです。
>>334
自分もLAN環境での実験ですが
やはりロスは出ているようです
0337デフォルトの名無しさん
2006/02/11(土) 00:16:590338デフォルトの名無しさん
2006/02/11(土) 00:59:44あれか?
プログラムレベルで同期処理するのを同期通信って言うのか?
ならノンブロッキングソケット使ってるってことか?
0339デフォルトの名無しさん
2006/02/11(土) 01:06:430340デフォルトの名無しさん
2006/02/11(土) 05:09:34一つのサーバーにhttpリクエストを生み出すことのできるフリーウェアってありますか?
0341デフォルトの名無しさん
2006/02/11(土) 06:10:44wget
0342340
2006/02/11(土) 09:31:210343324
2006/02/11(土) 14:35:11それが原因で接続したり切断されたりしていたようです。
無事3Dゲームのネットワーク化に成功しました。
いろいろありがとうございました。
0344デフォルトの名無しさん
2006/02/12(日) 17:59:08------------------------------
#include <stdio.h>
#include <sys/socket.h>
#include <netdb.h>
int main(void)
{
char*ptr, **pptr;
charstr[4];
struct hostent*hptr;
ptr="www.asahi.com";
hptr=gethostbyname(ptr);
pptr = hptr->h_addr_list;
printf("address:%s\n",inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
}
------------------------------
以上のような短いプログラムを作ったのですが出力が
address:(null)となってしまいIPアドレスが表示できません。
asahi以外にも試したのですが同じ結果になりました。
どうしたら正常に表示できるのでしょうか。ちなみに
他のhostent構造体の例えばh_name等は正常に表示できました。
OSはsuse10.0 x86_64版です。
0345デフォルトの名無しさん
2006/02/12(日) 19:14:10そこを20とかに増やしてみては
0347デフォルトの名無しさん
2006/02/12(日) 20:07:45>>346
レスありがとうございます。
いやIPアドレス4バイトなのでcharで4バイト確保しました。
とりあえずchar str[20]位で領域増やしてみます。
0348デフォルトの名無しさん
2006/02/12(日) 22:08:57> いやIPアドレス4バイトなのでcharで4バイト確保しました。
あのな、sizeof("xxx.xxx.xxx.xxx")っていくつか考えてみよう。
0349デフォルトの名無しさん
2006/02/12(日) 22:33:50そうでした、すっかり勘違いしてた。また>>344のプログラムで単純にstrの領域を増やすと
セグメンテーションエラーになったので
#include <arpa/inet.h>
を加えchar str[16]にしたところ、無事IPアドレスが表示されました。
---------------------------------------
#include <sys/socket.h>
#include <netdb.h>
#include <stdio.h>
#include <arpa/inet.h>
int main(void)
{
char str[16];
char *ptr, **pptr;
struct hostent *hptr;
ptr="www.asahi.com";
hptr=gethostbyname(ptr);
pptr = hptr->h_addr_list;
/* printf("\taddress: %s\n",inet_ntoa(*(struct in_addr *)*pptr)); */
printf("\taddress: %s\n",inet_ntop(hptr->h_addrtype, *pptr, str, sizeof(str)));
printf("%s\n",hptr->h_name);
}
--------------------------------------
>>345>>346>>348
どうもありがとうございました。
0350デフォルトの名無しさん
2006/02/13(月) 20:58:57誰かの自宅サーバっぽいIPアドレスのSMTPサーバに接続しようとしている
ログが多数、残っていました。結局、コネクションは成立していません。
ウイルス、Spyware系のチェックはしたのですが、検出されず。
メールを送ろうとしているプロセスを突き止めるには、どうすればよいでしょうか?
Win2000,VS2004(C++)です。
0351デフォルトの名無しさん
2006/02/13(月) 21:12:43実際どのくらいの頻度でひっくり返る?
0352デフォルトの名無しさん
2006/02/13(月) 21:18:31VC 使えるんなら、netstat -o をズート実行してsmtp へコネクションを
張ったプロセスを見つけたら PID からプロセスの情報を得てログする、
というプログラムを書いて一晩くらい走らせてみては?
0353350
2006/02/13(月) 21:39:21ヤツってメール送る?
0354デフォルトの名無しさん
2006/02/13(月) 21:46:30ポート開けないヤツが使ってると思われ。
0355350
2006/02/13(月) 21:56:13その場合は、どうすればプロセスを特定できるんだろう?
とりあえずVMWare起動したww
0356デフォルトの名無しさん
2006/02/13(月) 22:07:050357350
2006/02/13(月) 22:54:20思い過ごし?
それとミスったけど、ポートはPOP(110)でした。
0358デフォルトの名無しさん
2006/02/13(月) 23:16:46インターバルタイマーが必要で SIGALRM を使用してるんですが、
同じプロセスで 受信処理のために NONBLOCK の select() を使用すると、
タイムアウト設定してコールしてもselect()のタイマーが正常に働きません。
どうすればいいんでしょうか?
できれば子プロセスで処理を分けずに。
またselect() のイベントでイベントハンドラーを起動するような作り方は通常
するんですか?
0359デフォルトの名無しさん
2006/02/13(月) 23:17:35セキュリティ板いけよ。
0360デフォルトの名無しさん
2006/02/13(月) 23:18:34> インターバルタイマーが必要で SIGALRM を使用してるんですが、
そこもselect()使えば?
0361デフォルトの名無しさん
2006/02/13(月) 23:20:41もちろん状況次第だが、関西地方のフレッツ ADSL で、
結構ひっくり返ったことがある。
# ソフトがバグってて、パケット逆転したら受信してい
# た画像がブロックノイズだらけになって、ばれた。
0362358
2006/02/13(月) 23:23:160363デフォルトの名無しさん
2006/02/14(火) 02:45:55中断させたいときは、別のスレッドなどから
shutdown、closesocket、などを呼んで中断させる方法しか思い浮かばないのですが、
もっとスマートな方法はありませんか?
0364デフォルトの名無しさん
2006/02/14(火) 03:11:50同様に、WindowsならEventSelectでEventを待つよ。
IOCPのサンプルなんかで、このやり方を使ってる。
0365デフォルトの名無しさん
2006/02/14(火) 03:23:16なるほど結構ひっくり返るもんなんだな
0366デフォルトの名無しさん
2006/02/14(火) 08:38:34UNIXならsignal受けてEINTRのexeptionで復帰させるとか、
selecltじゃなくてpoll使ってurgent data受けるとか。
selectとurgent dataもOKなのかもしれないけれど、
undocumentedなので使ったことなし。
0367デフォルトの名無しさん
2006/02/14(火) 13:03:28>>366
返信ありがとうございます。
一緒にパイプを持って、それで抜けるようにします。
0368デフォルトの名無しさん
2006/02/14(火) 16:29:49経験上、帯域上限辺りまで使うと結構ひっくり返る希ガス
0369デフォルトの名無しさん
2006/02/14(火) 20:03:38SIO_RCVALLした所で10022が出るPCやWSARecvのところで10055が出るPCがあったりするのでお知恵を拝借させて頂けませんでしょうか
動かしてみたOSはWindows2000とWindowsXPです。Adminユーザーで実行してます。
----------------------------------------
#include <winsock2.h>
#include <mstcpip.h>
#include <stdio.h>
int main(int argc, char **argv){
SOCKET sock = INVALID_SOCKET; DWORD d, optval = 1, flags = 0, len; SOCKET_ADDRESS_LIST *addrlist; SOCKADDR_IN addr_in; WSADATA wsd; char buffer[65536]; int i; WSABUF wsb;
if (0 != WSAStartup(MAKEWORD(2, 2), &wsd)) goto err;
if (INVALID_SOCKET == (sock = WSASocket(AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, 0))) goto err;
if (SOCKET_ERROR == WSAIoctl(sock, SIO_ADDRESS_LIST_QUERY, NULL, 0, buffer, 1024, &d, NULL, NULL)) goto err;
addrlist = (SOCKET_ADDRESS_LIST*)buffer;
if (0 == addrlist->iAddressCount) goto close;
addr_in.sin_addr.s_addr = ((SOCKADDR_IN*)(addrlist->Address[0].lpSockaddr))->sin_addr.s_addr;
addr_in.sin_family = AF_INET; addr_in.sin_port = htons(0);
if (SOCKET_ERROR == bind(sock, (SOCKADDR*)&addr_in, sizeof(addr_in))) goto err;
if (SOCKET_ERROR == WSAIoctl(sock, SIO_RCVALL, &optval, sizeof(optval), NULL, 0, &d, NULL, NULL)) goto err;
for(i = 0; i < 10;i++){
wsb.buf = buffer; wsb.len = sizeof(buffer);
if (SOCKET_ERROR == WSARecv(sock, &wsb, 1, &len, &flags, NULL, NULL)) goto err;
}
goto close;
err:
printf("ERR %u\n", WSAGetLastError());
close:
if (sock != INVALID_SOCKET){ shutdown(sock, SD_BOTH); closesocket(sock);}
WSACleanup();
return 0;
}
0370319
2006/02/16(木) 19:56:51> (1)ICF/ICSのサービスを開始しろ
> (2)Personal Firewallを停止しろ
(3)IPSEC Services サービスを開始しろ
MSDNのサンプルで
printf("NOTE: IPv6 does not currently support the SIO_RCVALL* ioctls\n");
ってのを見付けたんでサービス関係をその通りに動かして、IPv6がアダプタのプロパティに入ってないことを確認したんだけど状況かわらずです
WSA*を使っているのが間違いの元かとも思いWSASocket→socket、WSAIoctl→ioctlsocket、WSARecv→recvと変えてみてもやはり同じでした
RCVALLするまでの準備の部分に何か誤りがあるのでしょうか?
0371369
2006/02/16(木) 19:58:410372デフォルトの名無しさん
2006/02/16(木) 22:27:260373デフォルトの名無しさん
2006/02/18(土) 01:05:12オープンしたソケットで利用中のNICのMACアドレスを得る方法を
教えていただけますでしょうか?
接続元、接続先のMACアドレスどちらでもかまいません。
OSはWindows XPです。
0374デフォルトの名無しさん
2006/02/18(土) 01:10:16で、IPX_ADDRESS_DATA::nodenumかな。
もちろん、IPXソケット限定だけど。
0375373
2006/02/18(土) 18:57:240376デフォルトの名無しさん
2006/02/19(日) 12:29:090377デフォルトの名無しさん
2006/02/21(火) 21:47:270378^ω^ ◆8vOv.D2p4.
2006/02/22(水) 18:47:13自分で立てる→127.0.0.1で接続 はできました。
ところが、人様に立ててもらって、IPを教えてもらったところ、接続しようとしても駄目でした。
その人は、自分のマシンで自作のチャットサーバを動かして、外部から接続できている、
と言ってるので、その人のネットワーク環境は特に問題なさそうです。(ポート解放等
自分→ループバック でできるのに、インターネット経由で繋がらない場合、
どんなミスがありえるんでしょうか・・・?
127.0.0.1の場合も、グローバルIPを入力しても、
同じコードで、 sin_addr.S_addr:=inet_addr(PChar(ip));
としてるので、本質的には同じだと思ってたんですが。。。
ちなみに、WSAAsyncSelectを使う非同期の、TCPソケットです。
開発環境はDelphi6Personal + ProjectJEDIのWinsock2.pas です。
0379^ω^ ◆8vOv.D2p4.
2006/02/22(水) 19:03:570380デフォルトの名無しさん
2006/02/22(水) 22:18:47作っているのですが、切断時に
Socket.Close()
を行うと下記の例外が発生するのですが、
どうすれば回避できるでしょうか?
----------------
破棄されたオブジェクトにアクセスできません。
オブジェクト名 'System.Net.Sockets.Socket' です。
0381デフォルトの名無しさん
2006/02/22(水) 23:03:51ソケットのファイルディスクリプタ(int)から通信が行われている自分側のポート番号取得することは可能?
accept したあとの子プロセスから呼び出される関数で、ファイルディスクリプタはもらうんだけど
struct sock_addr_in の構造体はスコープ外で直接アクセスできない、という条件です。
0382デフォルトの名無しさん
2006/02/22(水) 23:07:570383デフォルトの名無しさん
2006/02/22(水) 23:26:33�d!
0384デフォルトの名無しさん
2006/02/22(水) 23:33:12このスレはアンチM$の粘着UNIXオタが常駐してるだけだから
winsockのまともな返答は期待できないと思った方が良い
そうだよな
おまえら
0385デフォルトの名無しさん
2006/02/22(水) 23:35:40このスレは「UNIXネットワークプログラミング相談室」と改名するか
UNIX板に移動した方がいいんじゃないかって
UNIX厨は隔離板から出てくるなよ
0386デフォルトの名無しさん
2006/02/22(水) 23:40:35みたいなのはおれも感じてたが。
そうか。
0387デフォルトの名無しさん
2006/02/22(水) 23:44:31俺としては「WinSockプログラミング相談室」の方がいいかなあ。
UNIX厨が出てこられるとマジうざいんで。
0388382
2006/02/22(水) 23:51:46中身のないレスをするアンチUNIX厨は鬱陶しい。
0389デフォルトの名無しさん
2006/02/23(木) 00:09:20( ゚д゚) UNIX厨言われちゃってるよ…
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
\/ /
 ̄ ̄ ̄
0390デフォルトの名無しさん
2006/02/23(木) 00:49:27C:\WINDOWS\system32\drivers\etcにある
hostsファイルに記述したホスト名から
IPアドレスを取得したいのですが、取得できません。
どうしてでしょうか?
例えばhostsファイルに
38.25.63.10 x.acme.com
のようにかいてgethostbynameでx.acme.comを指定してやれば
38.25.63.10が取得できると思っているのですが・・・
0391デフォルトの名無しさん
2006/02/23(木) 01:01:36コードさらさないでどうやってこたえろと
0392デフォルトの名無しさん
2006/02/23(木) 01:44:46とか数年前の記憶を元にほざいてみる。
0394382
2006/02/23(木) 01:48:21ファイル名?
HOSTSで合ってるよ。
http://book.itzero.com/read/others/0505/Oreilly.Ipv6.Network.Administration.Mar.2005.eBook-LiB_html/0596009348/ipv6na-CHP-5-SECT-3.html
0395デフォルトの名無しさん
2006/02/23(木) 10:58:07たぶんそのソケットが既にCloseされてるから。
Connectedプロパティを確認してみてください。
なぜCloseされているのかはプログラムの作者以外誰にもわからない。
0396デフォルトの名無しさん
2006/02/23(木) 20:38:55簡単なネットワーク対戦可能なインベーダーを作成中なのですが、
一般的に皆様がこのようなゲームを作成する場合、常に移動すべく玉の
座標情報送信処理は、どのような感じ・どのぐらいの間隔で行ってるのでしょうか?
(20msに一回、UDPにて更新処理を行おうかと思っていますが…)
0397デフォルトの名無しさん
2006/02/23(木) 23:25:26動いたら送信
動かなかったら送信しない
このとき送るのは可能な限り
差分ではなく適当な絶対値
0398デフォルトの名無しさん
2006/02/23(木) 23:59:33動きが計算できるタマだったらいちいち送る必要はないんじゃないか?
プレイヤーの座標を最優先する。
0399396
2006/02/24(金) 01:40:24動きに関しては誘導弾など可変の性質を持つものがあるので計算はできないです。
普段の座標情報(弾道)送信処理は
弾座標送信←20ms→弾座標送信←20ms→弾座標送信←20ms→弾座標送信…
のようになっていて、
キー入力によるプレイヤー座標の送信処理が発生した場合に
弾座標送信←x→人座標送信←20ms-x→弾座標送信←20ms→弾座標送信…
└ ←20ms→ ┘
のような作りになっています。用はプレイヤー移動による座標送信処理は
定期的に20msごとに行われるサイクルの、その20msの中のどこかに割り込みが
入るみたいな感じで作ってあります。
二番目の質問である>どのくらいの間隔で行っているのでしょうか
というのは質問の仕方が悪かったです。
上記の仕組みで、間隔の20msは値として小さすぎるなどの問題はないでしょうか?
0400デフォルトの名無しさん
2006/02/24(金) 01:42:12遅延問題も兼ねるので、そのあたりはまるっきりあなたのセンスかと
0401デフォルトの名無しさん
2006/02/24(金) 01:57:29そのへんの見極めが出来てないようでは
0402396
2006/02/24(金) 02:09:07云々以前の問題ですね・・やはり最適な値というか、問題なさそーな
値を自分で見つけるしかないということですかね。
ロックオンとか無しでの手動誘導です。プログラミング自体慣れていないので
アルゴリズム的なセンスがないのは痛感してます…
色々と参考になりました。ありがとうございます。
0403390
2006/02/24(金) 07:44:44hostsファイルに記述してgethostbynameを呼ぶと復帰値NULLで
取得できませんでした。
lmhostsファイルに記述してgethostbynameを呼ぶと復帰値からIPアドレスを
取得できました。
どうしてhostsファイルを見にいってくれないんだろう?
0404デフォルトの名無しさん
2006/02/24(金) 07:49:440405デフォルトの名無しさん
2006/02/24(金) 17:50:41lngReturn = NetMessageBufferSend(NULL,address,fromname,
(BYTE *)msg,sizeof(WCHAR) * lstrlenW(msg));
Win2kではfromnameが反映され正常に送信できますが
WinXPSP2ではlngReturnに0xE1が戻ってきます。
fromnameをNULLにすれば正常送信できますが、勝手にマシン名が入ってしまいます。
何故?
XPでもfromnameを反映できる方法がありますか
0406597
2006/02/25(土) 09:17:04TCPの最初と最後の3wayとかの部分も自分で書くんですよね?
で、送るのはsendtoで良いと思うのですが、受け取るのはrecvfromですか?
つまり、生ソケットでTCP/IPを使う場合、UDP用のAPIを使うの?
0407デフォルトの名無しさん
2006/02/25(土) 09:27:55だから普通send, recv。
>>6に実装リストあるよ。
0408デフォルトの名無しさん
2006/02/26(日) 00:20:38> hosts ファイルに記述して gethostbyname
> を呼ぶと復帰値 NULL で取得できませんでした。
ちゃんとマニュアル読めよ。
Return Values
If no error occurs, gethostbyname returns a pointer
to the hostent structure described above. Otherwise,
it returns a null pointer and a specific error number
can be retrieved by calling WSAGetLastError.
host ファイルを見に行く以前の問題だよ。
0409デフォルトの名無しさん
2006/02/27(月) 04:10:48SOCKET client_sock = accept(...);
HANDLE event = CreateEvent(...); // マニュアルリセットはfalse
...
WSAEventSelect( client_sock, event, FD_READ | FD_CLOSE );
...
while(1)
{
result = WaitForMultipleObjects( event_size, event_array, false, INFINITE );
switch( result )
{
....
}
}
サーバーサイドはこのような感じなのです。
クライアントサイドで、
send( ... ); //1回目
send( ... ); //2回目
などとやると、1回目は、WaitForMultipleObjectsから戻り、正常に受信するのですが、
二回目以降がWaitForMultipleObjectsから戻ってきません。
1回目と2回目の間にSleep(10)などを入れると、二回目も正常に受信するのですが、
これはどういうことなのでしょうか?
0410デフォルトの名無しさん
2006/02/27(月) 05:40:421回目の処理が終わる前に受信しちゃうんでない?
0411デフォルトの名無しさん
2006/02/27(月) 07:14:110412デフォルトの名無しさん
2006/02/27(月) 08:53:05何で擬似パケットを用意するのですか?
0413デフォルトの名無しさん
2006/02/27(月) 09:16:570414デフォルトの名無しさん
2006/02/27(月) 11:00:15チェックサムの値は計算できるので、
プログラマの好みの問題としか言いようがない。
0415409
2006/02/27(月) 16:34:04FD_CLOSEも通知されません。
0416デフォルトの名無しさん
2006/02/27(月) 16:40:360417^ω^ ◆8vOv.D2p4.
2006/02/27(月) 18:24:23メッセージループでイベントを受信→処理 としていますが、
この場合、AllocateHWndを呼び出したスレッドと、
作られたウィンドウのメッセージループは、
スレッドセーフにしなくても大丈夫ですよね?
Delphi+Winsock(WSAAsyncSelect)の話です
0418デフォルトの名無しさん
2006/02/27(月) 18:29:31ところがSP2の導入でそれが不可能になったと聞きました。
そこで質問です、今現在IPヘッダ,TCPヘッダを書き換えて
パケットを送信する方法は無いのでしょうか?
以下の中に答えはあるんでしょうか?
�@SP2をアンインストールすればできる
�AWinPcapを利用すれば出来る
�BUnixだったら出来る
�C上記以外の方法で出来る
�Dなにやっても無理。現実は非情である。
色々間違った質問だと思いますが、良かったら答えてくださいませ
よろしくお願いします。
0419デフォルトの名無しさん
2006/02/27(月) 18:34:26でも。
>>418
ほほう!そうなんですか?
てっきりそーゆーのは
ネットワークカードのドライバ直で叩くんだと思ってました
0420デフォルトの名無しさん
2006/02/27(月) 19:58:15Linuxでpacket(7)とか。
ただ、ISPでフィルタリングされている場合は外に出ない。
0421409
2006/02/27(月) 20:22:30すいません。レス見逃してました。
410さんの言うとおり、1回目の処理中に2回目のイベントが発生してるっぽいです。
WaitForMultipleObjectsが呼ばれている状態でシグナル状態になったイベントしか通達されてない状態(ぽい)です
どのように回避すればいいのでしょうか?
0422デフォルトの名無しさん
2006/02/27(月) 21:04:26これは何でわかったの?
0423デフォルトの名無しさん
2006/02/27(月) 21:18:24「発生してるっぽい 」ってことで予想です。
0424デフォルトの名無しさん
2006/02/27(月) 21:28:020425デフォルトの名無しさん
2006/02/27(月) 22:20:36-1まで読むように書き換えたら正常に動くようになりました。ありがとうございます。
そうだったんですか。知りませんでした・・・
0426デフォルトの名無しさん
2006/02/28(火) 11:00:18rawソケット使わないと駄目ですかね?
0427デフォルトの名無しさん
2006/02/28(火) 12:35:01とりあえず、WinPcapというか、その中のPacket.libを使えば
どんなイーサネットフレームの読み書きでもできる。
NDISレベルで読み書きするので、ATMとかFDDIでもOKだと思う。
イーサネットカードしか持ってないので知らんが。
ただし、パケットをイーサネット(データリンク)のヘッダまで含めて
自分で作らないといけない。Linuxのpacket socketなら、arpの解決
ぐらいはしてくれた気がするが、それもしてくれない。
iphlprのSendARP呼べば終わることだけど。
IP、TCPを書き換えてってのが、OSのスタックが吐いたパケットに
加工する、という意味なら、仮想インターフェイスを作って、
そこへ書き込まれたフレームを読んで、加工して、実インターフェイスに
書き出す、とか。
GREのトンネル作るとか、802.1qのタグ振るとか、MPLSのラベル割り込ませるとか、SoftEther的なもの
つくるとかだったらこっち。
仮想インターフェイスのつくり方は、openvpnとか、tapcontrol.exeとかでぐぐれ。
0428デフォルトの名無しさん
2006/02/28(火) 15:51:15418 さんの質問と多少かぶるのですが↓のような環境で
AのポートaaaaとSのポートbbbb」がTCP接続されているのですが、
[PC(A)]---[PC(B)]---[router(R)]---(TheInternet)---[Server(S)]
(a) (b) (c) (d) (e) (f)
(A)(a)192.168.1.2 OS:WinXP (ポートaaaaでクライアントを使用)
(B)(b)192.168.1.1 OS:WinXP (Windows付属のネットワーク共有(DHCP)が稼動)
(c)192.168.0.2
(R)(d)192.168.0.1
(e)202.yyy.yy.y
(S)(f)202.xxx.xx.x (ポートbbbbでサーバー稼動)
BでA←→S間のパケットを編集する場合どのようにしたらいいでしょうか。
VC#のraw Socketを使ってBを通過するパケットのIPヘッダーなどをモニター
したり、IPヘッダーを作ってB→Aに送ったりすることはできたのですが
AからのパケットをSに流さずにBで止める方法がわかりません。
427 さんのWinPcapをつかえば可能なのでしょうか。
なにとぞご教授のほどお願いします。
(ちなみにAのクライアントソフトはホストのIPとポートが固定なのでBで串などは
つかえそうにありません。)
0429デフォルトの名無しさん
2006/02/28(火) 15:59:03Aのクライアントソフト、これの詳細plzwっうぇwっうぇ
0430デフォルトの名無しさん
2006/02/28(火) 16:00:48[PC(A)]---[PC(B)]---[router(R)]---(TheInternet)---[Server(S)]
NIC~(a)~~~(b)~~(c)~~~(d)~~~~~(e)~~~~~~~~~~~~~~~~~~(f)
0431417^ω^ ◆8vOv.D2p4.
2006/02/28(火) 16:50:240432デフォルトの名無しさん
2006/02/28(火) 20:48:260433デフォルトの名無しさん
2006/02/28(火) 21:05:03コマンドプロンプトのnet viewでLAN上のPCの一覧が
表示されるんですが、どっかのPCが突然落ちた場合でも
net viewでそのPCがいつまでも表示されてしまいます。
nbtstat -Rとかやってもだめでした。
いい方法がありましたら教えてください。
0434デフォルトの名無しさん
2006/02/28(火) 21:32:54更新間隔を短くすれば、当然ネットワーク負荷はあがるが、
失効までの間隔も短くなる。
0435デフォルトの名無しさん
2006/02/28(火) 22:33:370436デフォルトの名無しさん
2006/02/28(火) 22:53:100437デフォルトの名無しさん
2006/03/01(水) 01:27:291. 「Routing and Remote Access」サービスを止めるか、iphelperの
EnableRouter()で、パケットのフォワーディングを止める。で、WinPcap
使って、自分のプログラムでフォワーディングする。ついでに加工する。
2. NDISのフィルタドライバで、パケットのドロップ、加工を制御する。
のどちらかだと思うけど、1はダサい。やるなら2。
フィルタドライバはWINDDKのPassThruドライバを雛形にすれば良い。
WINDDKがめんどくさいか、MSDNに入ってなくて手に入らないなら、
ttp://www.ntkernel.com/w&p.php?id=7
のWinpkFilterが使えそうな気がする。privateかeducational useなら無料
らしい。
>>432の言うように、Linuxにするなら、iptablesのモジュールにするのが
手っ取り早いと思う。MASQUERADEみたいなもんか。
0438デフォルトの名無しさん
2006/03/01(水) 12:40:102のNDISフィルタはDDKがないのと自分にはまだ敷居が高そうなので
とりあえず1のIpHelper+WinPcapを試すことにしました。
>>432 PC(B)がメインPCなので普段よく使うアプリなどの関係で
なかなかLinxにきりえにくに状況です。(PC(A)はスペック低すぎるので)
ただいつかはLinuxメインでいきたいとおもいます。
0439デフォルトの名無しさん
2006/03/02(木) 02:17:44net-snmpの実装があまりにもすぱっげちぃで
はきそうで
そのいいソース知ってる人いませんか?
0440デフォルトの名無しさん
2006/03/02(木) 06:41:43snmpのライブラリを書くわけ?
利用するコードを書くの?
0441デフォルトの名無しさん
2006/03/02(木) 10:00:210442デフォルトの名無しさん
2006/03/02(木) 10:14:090443417^ω^ ◆8vOv.D2p4.
2006/03/02(木) 12:51:39recvしてみて返り値がSOCKET_ERRORなら閉じてる
0以上なら繋がってる
じゃだめかな
0444デフォルトの名無しさん
2006/03/02(木) 16:18:15コネクション型だとして、getpeernameとか呼んでみたらどうかな。
0445デフォルトの名無しさん
2006/03/02(木) 16:27:06close() しない限り勝手に閉じないよ。
接続しているかそうでないかなら>>444
0446デフォルトの名無しさん
2006/03/02(木) 20:55:16実装上でアドバイスください
WinSockで TCPでデーターを読み込む場合
1つのセッションで全てを行ってもよろしいのでしょうか?
もちろん回線的には変わらないのでしょうが
内部のバッファ的にセッションをいくつか張ってデーターを
やりとりした方が有利なのでしょうか?
0447デフォルトの名無しさん
2006/03/02(木) 20:57:070448デフォルトの名無しさん
2006/03/02(木) 21:00:52一つのセッションだと、恐らく接続先は単一のサーバであって、
要求はたぶん一つ程度のスレッドで処理される。
要求を複数に分割できるのなら、複数に分けて並行して行えば
複数のサーバに分散されて処理されるかもしれないし、
そうでなくても複数のスレッドに分散されて、先方のCPUの
処理時間を多く利用できるかもしれない。
行儀は悪い。
0449441
2006/03/02(木) 22:11:010450446
2006/03/02(木) 22:22:37サーバー側のほうまでは考えておりませんでした。
たしかにその通りですね。
クライアント側もWinsockですし
やはり単一スレッドでいじめない方がよろしいですよね?
Winsock1.0の頃はCPU負荷だけでデーター保障されてる
TCPでもデータートンでましたし・・・
0451デフォルトの名無しさん
2006/03/03(金) 00:55:28だれかtrapだけでも作り方教えてください
0452デフォルトの名無しさん
2006/03/03(金) 02:10:53perl の Net::SNMP::Transport あたりを参考にしてみれば。
Cのシンプルなやつもありそうだけど、簡単にググった程度では見つからなかった。
0453デフォルトの名無しさん
2006/03/03(金) 03:28:13開発開始!力ある者だけこぃ!
0454417^ω^ ◆8vOv.D2p4.
2006/03/03(金) 13:18:17ぐぐった
http://www112.sakura.ne.jp/~kaientai-project/creategame.htm
これはひどい
0455デフォルトの名無しさん
2006/03/04(土) 05:06:27どこがどのように信用できないのでしょうか?
意図したようにちゃんと動かないとか?
0456デフォルトの名無しさん
2006/03/04(土) 05:32:26言った奴に聞け
0457デフォルトの名無しさん
2006/03/04(土) 05:45:580458デフォルトの名無しさん
2006/03/04(土) 07:54:49>>269
0459デフォルトの名無しさん
2006/03/04(土) 08:35:45javaでかかれたものはないでしょうか?
0460デフォルトの名無しさん
2006/03/04(土) 08:43:14>>269
0461デフォルトの名無しさん
2006/03/04(土) 16:09:40http://www.jumperz.net/index.php
0462デフォルトの名無しさん
2006/03/04(土) 18:20:36誰が自分のどの曲にアクセスしているのか調べるツールを作ろうかと思っています。
パケットを監視してどのIPに対してデータを送信しているのか調べるツールはフリーでも
既にあるようなので作れないことはないんじゃないかと。
ちなみに私はネットワークプログラミングの知識は今現在全くないです。
ネットで調べてはいるのですが、既に具体的なやり方を知っている方がいたら是非教えてください。参考になるサイトなどでも構いません。
言語はC++です。
よろしくお願いします。
0463デフォルトの名無しさん
2006/03/04(土) 18:37:45ttp://www.sysinternals.com/
0464デフォルトの名無しさん
2006/03/04(土) 19:24:21netstat -t
0465デフォルトの名無しさん
2006/03/04(土) 23:41:22WindowsならWinSock2でパケットを拾うことができる
WinSock2はNT系のみしか実装されてないけどね
拾うデータは完全に生のRAWパケットだから自前で分別して組み立てて判別しないといけない
0466デフォルトの名無しさん
2006/03/05(日) 02:05:16サンプルとかありますか?
HTTPだけでも対応してみたい
0467デフォルトの名無しさん
2006/03/05(日) 04:32:420468デフォルトの名無しさん
2006/03/05(日) 15:55:12送受信を同じポートにするって可能ですか?
0469デフォルトの名無しさん
2006/03/05(日) 16:04:560470デフォルトの名無しさん
2006/03/05(日) 16:09:430471デフォルトの名無しさん
2006/03/05(日) 16:22:46サーバーのプログラムが受信用のポートを用意している状態で、
そのポートから、別のプログラムがインターネット側に
パケットを送信する事は可能でしょうか?
0472デフォルトの名無しさん
2006/03/05(日) 16:24:050473デフォルトの名無しさん
2006/03/05(日) 16:28:16と同じ意味なら可能。
0474デフォルトの名無しさん
2006/03/05(日) 16:55:24可能というかaccept後のソケットでは普通のことです。
0475デフォルトの名無しさん
2006/03/06(月) 00:51:080476デフォルトの名無しさん
2006/03/06(月) 01:13:28pollで1025以上扱うにはどうすればいいの?
0477デフォルトの名無しさん
2006/03/06(月) 01:56:560478デフォルトの名無しさん
2006/03/06(月) 02:56:200479471
2006/03/06(月) 07:58:23ここで言う「サーバーのプログラム」と「別のプログラム」は
同一のPCの上で動作しているのですが、問題無いですか?
0480デフォルトの名無しさん
2006/03/06(月) 12:58:130481デフォルトの名無しさん
2006/03/06(月) 14:51:40「UNIX単体」で動く(デタラメな)データベースは作成できました。
それをUDPソケットを使って
1. 航空便名char FlightID[20]
2. 8つのオプションint option(空席チェックや購入など)
3. 購入の場合はそのチケットの枚数int seat
だけを送って、その結果をサーバーのファイルから読んでクライアントに返す、
というのをやるつもりです。
で、今
クライアント: flightIDを入力
サーバー: そんなflightIDがあるかチェック
そのflightIDがあれば
クライアント: optionを入力
サーバー: optionを送って結果を返す、って方法を考えてます
(よって入力出力入力出力と計二回やり取りすることになります)。
でも、UDPって二回もやり取りできないような気がしてきました。←説明すると長くなります
flightIDとoptionは一度に送って結果も一度に返すようにすべきですか?
あー、やっぱりうまく説明できない。
どっっっこ探しても実用的な(パクれる)サンプルがないし…もう鬱出氏脳…。
0482294
2006/03/06(月) 14:57:41UDPクライアントの引数は4つありますよね?(って一般的なのかも知らないですが)
4つ目はポート番号で省略ができることは分かります。
でも3つ目はエコー用の文字列ですよね?
今回はこれ使わないんですけど、ないと走りませんよね?
一般的にはこの3つ目の引数には""とか"Dummy"とか適当に入れちゃっていいんですか?
0483デフォルトの名無しさん
2006/03/06(月) 14:59:310484294
2006/03/06(月) 15:01:430485デフォルトの名無しさん
2006/03/06(月) 15:01:57>>4
> TCP/IPによるネットワーク構築
>〈Vol.1〉原理・プロトコル・アーキテクチャ
>http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
で一から勉強しろ。
0486デフォルトの名無しさん
2006/03/06(月) 15:04:31HTTPサーバがどうやって動いてるのか調べてみればいい
君のやりたいことそのまんまだから
0487482 = 294
2006/03/06(月) 15:18:01第一日本に住んでないし。
本ならバイブルとされているはずの
W. Richard Stevens著UNIX NETWORKING PROGRAMMING第一巻が
手元にあるけど実用的な使い方には一切触れてない凄物。
TCP/IP SOCKETS IN Cという本もあるけど、これもそう。
検索してもこんなの↓ばっかり。
ttp://www.ksworks.org/memo/net/udpsndrcv.htm
実際に「インタラクティブ」なのが一つたりとも見つからない。
マジ、これはイジメか?
>>486
>同期の必要性がある場合はUDPなんかつかうな
あ、それがキーかもです。
今回はUDPでやれ、ってことになってます。
UDPは"One message at a time"ですよね?
ってことは一度に送る方法しかないってことですか? ←取り敢えずここははっきりさせましょう
0488デフォルトの名無しさん
2006/03/06(月) 15:22:100489482 = 294
2006/03/06(月) 15:25:08それを言い出したらみんなプログラミングなんかせずに
データベースはオラクル使え、表計算はエクセル使え、となるじゃないですか。
0490デフォルトの名無しさん
2006/03/06(月) 16:01:08その状態でTCP並のことをしようというのであればそれなりに自分でやる必要がある。
再送の機能を付けるとかね。でもそんなのはTCPでやれば悩むことはなくなる。
0491デフォルトの名無しさん
2006/03/06(月) 16:02:150492デフォルトの名無しさん
2006/03/06(月) 16:10:17届いたかもわからないし、途中で分割されることもあるし、順番がばらばらになる
送りたいデータをひとかたまりとしてデータのサイズと分割数とどの位置のデータか
を含めて小分けにしてばらまく
受け取る側で全部そろうまで待機しつづける、タイムアウトになったら必要な位置の
データをもう一回まいてもらう
まずそこから作らないといけない
0493デフォルトの名無しさん
2006/03/06(月) 16:24:14オラクルはメンテナンスも含めればとんでもない費用が掛かるし、
ちょっとした集計にエクセルは重くなりますよね。
でも、SSHもrpcも費用が掛からず後者に至ってはシステム標準。
土方プログラマなら兎も角、SEならプログラミングコストを削減することも仕事のうちです。
つーか、UDPがどんなものかも知らないのにネットワークプログラミングを語られてもね。
0494デフォルトの名無しさん
2006/03/06(月) 17:32:510495デフォルトの名無しさん
2006/03/06(月) 18:02:14クライアント側で自分が今使ってるポート番号を
知る方法ってありませぬか?
普通気にすることはないので、スルーしてたんですが、
必要な状態に陥ってしまったのでorz。
環境はLinuxでございます。
どなたか教えてください。おながいします。
0496デフォルトの名無しさん
2006/03/06(月) 18:07:09netstatのソースでも読めばよいのでは
0497デフォルトの名無しさん
2006/03/06(月) 18:16:50/proc/net の下で使えそうなのを探してみる
0498495
2006/03/06(月) 18:33:30スイマセン。恥ずかしながらwindowsばっかで仕事してました。
急遽Linuxで作るハメになっちゃったんで、ソース追っかける
とかは中々難しいです。
>>497のディレクトリの直下ってこれ何が入ってるんでしょう?
viewとかで見たらなんか文字列がゴチャゴチャとありますが。
と、こんなレベルなんです(--;。
こういう回答が出ると言うことは、ズバっとコマンドで指定して
取る事は出来ないのでしょうか?ホントスミマセン。
0499デフォルトの名無しさん
2006/03/06(月) 18:33:30> でも、UDPって二回もやり取りできないような気がしてきました。←説明すると長くなります
できます。←説明すると長くなります
0500デフォルトの名無しさん
2006/03/06(月) 18:35:43getsockname
0501デフォルトの名無しさん
2006/03/06(月) 19:28:27> クライアント側で自分が今使ってるポート番号を
> 知る方法ってありませぬか?
これは他のプロセスを含むのか含まないのか?
含むなら netstat --tcp -a で出来る。
ちなみにこれの元になるものが /proc/net 以下の
仮想ファイルだ。
0502デフォルトの名無しさん
2006/03/06(月) 19:29:07lsofで出来るけど。
0503デフォルトの名無しさん
2006/03/06(月) 20:03:49シェルスクリプトでなにか作るのはなんていうの?
0504^ω^ ◆8vOv.D2p4.
2006/03/06(月) 20:04:20windowsが恥ずかしいのか・・・
0505デフォルトの名無しさん
2006/03/06(月) 20:06:150506デフォルトの名無しさん
2006/03/06(月) 20:33:22恥ずかしいと思う。
0507デフォルトの名無しさん
2006/03/07(火) 00:52:55RFCしか読まないんだけど、やっぱり
バイブルと呼ばれる日本語の本読んだほうが
いいの?2冊だけあるんだけどRFCに書いてること
回りくどい日本語で書いてあるだけとしか思えない
俺は馬鹿なのだろうか
0508デフォルトの名無しさん
2006/03/07(火) 00:59:410509デフォルトの名無しさん
2006/03/07(火) 01:05:00ちゃんとdraft-*も読んだ方がいいですよ。
0510デフォルトの名無しさん
2006/03/07(火) 09:48:04リクエストを送るときに
GET /index.html HTTP/1.0\r\n\r\n
と2回改行コードを入れないとサーバが改行コードとして認識して
くれてないみたいなんですがこれで普通なんですか?
とりあえず動いてるのでいいですけどすっきりしないので知ってる
方がいたら教えてください
0511デフォルトの名無しさん
2006/03/07(火) 11:37:06>>5行って、HTTPのRFC読んでください。
0512デフォルトの名無しさん
2006/03/07(火) 12:11:35\r\n
インデント正確にするとこうだな
空行が終了判定だぞ
0513デフォルトの名無しさん
2006/03/07(火) 12:22:16ああ〜そうか(´A`)アホでした
すっきりしました!どうもありがとうございます
0514デフォルトの名無しさん
2006/03/07(火) 12:26:51HTTPリクエスト・ヘッダを勉強しろ
0515^ω^ ◆8vOv.D2p4.
2006/03/07(火) 13:59:55かっ・・かわいい
0516482 = 294
2006/03/07(火) 14:21:33>>492
ありがとうございます。
上に指示を仰いだらUDPで一回送って一回受け取りで桶、ということでした。
「それならそうと書け、ヴォケが、はったおすぞ!」とは口が裂けても言えませんでした。
>>493
誰でも最初は初心者だろ、(#゜д゜)凸ゴルァー!
本だけ渡されて「ほら、やれ」って言われてる身にもなってみろ!…とキレてみるか。
なんでネットワーキングプログラミング関連の本や資料は全部ボトムアップアプローチなんだろ?
トップダウンアプローチで書かれた本でも売れば絶対に売れるのに。
0517^ω^ ◆8vOv.D2p4.
2006/03/07(火) 14:49:52簡単なHTTPサーバーとかならボトアプの本でも載ってるじゃん
逆にそれより複雑だと買う人が絞られすぎちゃうんじゃね??
てか、プロトコル仕様とかで質問するなら
ボトアプの本も一個買ったらいいんじゃね?
なんか勘違いしてたらごめん
0518デフォルトの名無しさん
2006/03/07(火) 15:15:36表示するフォントを変えると可愛くなくなると思う。
0520デフォルトの名無しさん
2006/03/08(水) 00:57:39struct sockaddr_in 型の変数にアドレスやポートを
設定して、ソケットとbind した後は、
その sockaddr_in 変数は廃棄してしまってよいのでしょうか?
同じようにconnect()の場合もそうでしょうか?
0521デフォルトの名無しさん
2006/03/08(水) 01:04:40>本だけ渡されて「ほら、やれ」って言われてる身にもなってみろ!
土方プログラマ乙。
0522デフォルトの名無しさん
2006/03/08(水) 01:09:03OK。 ローカル変数で十分。
0523デフォルトの名無しさん
2006/03/08(水) 03:13:450524デフォルトの名無しさん
2006/03/08(水) 11:58:16typedef struct
{
int option;
char msg[8];
int login;
} message;
message msgStruct;
msgStruct.option = htonl(option);
gets(msgStruct.msg);
msgStruct.login = htonl(login);
send(s, &msgStruct, sizeof(msgStruct), 0);
のようにして構造体で送った値を
サーバー側で抽出、というか表示してやるにはどうすればいいですか?
intのはntohl()で戻してやる必要がある、とは書かれてるんですが
実際にどうやるのかは書かれていません。
教えて下さい。
0525デフォルトの名無しさん
2006/03/08(水) 12:08:39・構造体メンバーのメモリ配置が双方のコンパイラでどうなっているか確認。
・C言語初心者スレで構造体へのポインタの学習。
0526デフォルトの名無しさん
2006/03/08(水) 12:12:40送る側のプログラムをコンパイルしたコンパイラが、当該のコードで
その構造体に用いたアライメントやパディングなどをちゃんと理解して、
受信側でも送られたバイト列をその通りに解釈すればよい。
そういう面倒なことをしたくないのならば、テキスト表現で送るか
適当な形式で byte[] に詰め込んで送る。
例えば
unsigned char buf[16];
memcpy(buf, msg, 8);
buf[8] = option >> 24; buf[9] = option >> 16; buf[10] = option >> 8; buf[11] = option;
buf[12] = login >> 24; buf[13] = login >> 16; buf[14] = login >> 8; buf[15] = login;
などとして、受け取った側では option = (buf[8]<<24)|(buf[9]<<16)|(buf[10]<<8)|(buf[11]);
などとする(ただしintは32ビットと仮定)。
0527デフォルトの名無しさん
2006/03/08(水) 12:12:53ありがとうございます!
質問した直後にちょうど勘が働いてサーバー側で
printf("option: %d\n"msgStruct.option);ってやってみたらちゃんと出ました!
なぁんだ、ちゃんと届いてたのか。
また分からないことがあったら聞きますね。
0528デフォルトの名無しさん
2006/03/08(水) 12:14:150529デフォルトの名無しさん
2006/03/08(水) 12:18:22一応同じタイプのマシンなので面倒なことはしなくてよさそうです。
>>ってC++のパイプですか?それともビットシフトか何か…そういう使い方したことがないので。
ありがとうございました。また聞きますね。
>>528
はい、気をつけます。
結構調べた(かれこれ五時間)んですけどね。(藁
0530デフォルトの名無しさん
2006/03/08(水) 12:26:40ntohl()してねーじゃん(w
予想レス「しなくても動いたから大丈夫です!」
0531デフォルトの名無しさん
2006/03/08(水) 12:35:01はっ、Σ( ̄□ ̄lll)!!
突っ込み、ありがとうございます。
てか、しなくても動くんですね。じゃ、しなくてもいいk(ry
0533デフォルトの名無しさん
2006/03/08(水) 16:09:28コンパイラが違うと構造体のメモリの割り当て方が違う
32bit処理系だとcharのような要素があった場合32bit確保する場合がある
コンパイラオプションで変えれるからあんまりプログラムは意識しなくてもいいけど
サーバとクライアントがコンパイラが違う時は注意が必要
0534デフォルトの名無しさん
2006/03/08(水) 16:19:09何ていうコンパイラ?
0535デフォルトの名無しさん
2006/03/08(水) 16:25:02横着しないでちゃんとプロトコル決めろ
option:4byte:なんかのオプションのフラグ
msg:8byte:'\0'ターミネートされた文字列
login:4byte:なんかのログイン情報
で、合計16バイトのunsigned charな配列に確保。
0536デフォルトの名無しさん
2006/03/08(水) 23:57:470537デフォルトの名無しさん
2006/03/09(木) 01:59:460538482
2006/03/09(木) 06:36:04なんとかUDPでデータやり取りするプログラムできたんですが
時々、計算が合わないことが合わないことがあります。
フラグ立てたりしてデバッグしてもどう考えても間違いはない。
で、やっと気付いたんですが、
これが「UDPではデータを失うことがある」っちゅーことなんですね。
>>486さんの言った「同期の必要性」というのが今頃理解できた…もう鬱だ…氏n(ry
0539デフォルトの名無しさん
2006/03/09(木) 07:51:37シュミレートできるようなオープンソースのツールはないでしょうか。
キャッシュサーバーのテスト用として利用したいのですが。
0540デフォルトの名無しさん
2006/03/09(木) 08:10:36ほんとTCPにした方がいいな。
0541デフォルトの名無しさん
2006/03/09(木) 09:07:35送るデータを逐一保存しておいて、連番を振って管理。
受け取り側では受信できた番号を逐一報告。
送り側では受け取り確認の取れないデータを適当な間隔で再送。
これでどうよ?TCP 使うほうが遥かに楽だがなw
0543デフォルトの名無しさん
2006/03/09(木) 11:59:49> シュミレートできるような
kwsk
0544^ω^ ◆8vOv.D2p4.
2006/03/09(木) 12:05:38×シュミレート
○シミュレート
○スクリプト
×スプリクト
○じゃがいも
×がじゃいも
○しんぶんし
×しぶぶしぶん
0545デフォルトの名無しさん
2006/03/09(木) 12:19:08Linuxでnetem
http://linux-net.osdl.org/index.php/Netem
0546デフォルトの名無しさん
2006/03/09(木) 12:55:05482さんも使ったほうがいいねぇ。
0548魚チョコ
2006/03/09(木) 16:07:50実はシミュレートでもシの発音が [∫] で合ってないので、スィミュレイトと書いた方がましだし間違いが少ないと思うんだが、そう書いても考えのあはさかな杓子定規のたこに直されちゃうんだよなあ ミ゚仝 ゚ ミ
0550デフォルトの名無しさん
2006/03/10(金) 00:56:430551デフォルトの名無しさん
2006/03/10(金) 21:10:32ioctlsocket関数でノンブロッキング
selectでノンブロッキング
どっちがいいのでしょうか?
自分はioctlsocket関数でノンノンしたいのですが。
0552デフォルトの名無しさん
2006/03/10(金) 23:42:170553デフォルトの名無しさん
2006/03/10(金) 23:54:030554デフォルトの名無しさん
2006/03/11(土) 01:18:000555デフォルトの名無しさん
2006/03/11(土) 04:28:43キャッシュサーバーとサーバーの間に中継サーバを配置して、
キャッシュサーバーの機能テストのために、キャッシュサーバーがサーバーから
ファイルをダウンロードできる時間を設定で変化させることができる機能を持ったものです。
0556デフォルトの名無しさん
2006/03/11(土) 14:53:19アンビリーバボー
0557デフォルトの名無しさん
2006/03/12(日) 20:27:01socket(AF_INET, SOCK_RAW, IPPROTO_IP)
ってな感じでパケットキャプチャを作りました。
パケットの中身をrecv()して、自己PC発のパケットで
TCPヘッダ以降の 特定のパターンだけrejectというか、
発信を無効にしちゃいたいのです。
色々調べてLSPとやらでNICに直接話すのが筋と理解した
のですが、私のスキルでは難しかったです。
TTLだけ0にしちゃうとかとにかくそのパターンのパケットだけ
発信を無効にする簡易的な火壁のようなことをしたいのですが、
何か簡単な方法はないでしょうか?
0558デフォルトの名無しさん
2006/03/12(日) 21:10:48win2000/XPで、ウィルスバスターなどのように、常駐させておいて怪しい
通信を遮断したいです。プロミスキャストで出入りするパケットの中身は
見ることができるのですがそのソケットをシャットダウンすることが出来ないです。
やっぱwinpcapを使わないとだめですか?
0559デフォルトの名無しさん
2006/03/12(日) 21:33:35回避策はなくもないけど、ウィルスにも使われるような技術なので
そう簡単には見つからないでしょう
0560557
2006/03/12(日) 22:00:19そうですか。。情報ありがとうございます!
回避策になりそうな手段をもうちょっと調べてみます。
何かヒントになるキーワードがあればまたお願いします!
0561デフォルトの名無しさん
2006/03/13(月) 01:41:17ipfltdrv.sysでも使うとか。
0562558
2006/03/13(月) 02:05:23「ipfltdrv.sys」で検索してみたらもの凄く参考になりそうなページを発見。
ttp://ruffnex.oc.to/kenji/text/fire_a/
ナイスパスTHXです。やってみます。
0563558
2006/03/13(月) 02:15:27なので良さそうですね。ていうかまんまです。
ttp://ruffnex.oc.to/kenji/windriver/packet/
どう見ても欲しかった資料です。ありがとうございました>>561
0564デフォルトの名無しさん
2006/03/14(火) 14:45:26そんなんどこにでも転がってるけどwww
0565デフォルトの名無しさん
2006/03/14(火) 23:14:06recv()で取得したバイト数が合いません。
recv()で取得したデータの改行コードがCRLRになっているようなんですが、
これを直してあげる必要があるのでしょうか?
初歩的な質問で申し訳ありませんがよろしくお願いいたします。
0566デフォルトの名無しさん
2006/03/14(火) 23:31:35RETR でメッセージを受け取るときは . のみの行が終了基準だけど。
サイズで読み出そうとしてんの?
0567デフォルトの名無しさん
2006/03/14(火) 23:41:07RFCを読むべきです。でもヒマなので一応説明します。
LIST が返すサイズは、完全に正しいメッセージのオクテット数(バイト数)です。
LIST が返すサイズと、RETR で得られるメッセージのオクテット数が異なっているなら、
それはサーバのバグです。
メッセージ中の改行はすべてCRLFで、そうでないならこれまたサーバ(か何か)のバグです。
RETR の返答を recv して得られるバイト数は
ターミネーション ( . + CRLF ) や、行頭に . が有る場合に余分に
付加される . などがあるため、メッセージのオクテット数とは異なります。
RETR の返答をどう解釈するかは RFC を読んでください。
0568デフォルトの名無しさん
2006/03/14(火) 23:54:54RFCをちゃんと読んでみる事にします。
それでわからないときはまた質問することにします。
ありがとうございました。
0569デフォルトの名無しさん
2006/03/15(水) 00:37:04VCで簡単にデータやりとりしてみたいんですが・・・
0570デフォルトの名無しさん
2006/03/15(水) 03:26:46勉強って言うのは自分で調べるところから始まるんだぞ
0571デフォルトの名無しさん
2006/03/15(水) 04:08:55569じゃないけど、まず2chや人に聞こうとしていた自分の心にずしんと響きました。
根性たたきなおして勉強します。
そしてどうしても分からなくなったときには、力を貸してください。
それでは。
0572デフォルトの名無しさん
2006/03/15(水) 04:44:140573デフォルトの名無しさん
2006/03/15(水) 11:20:25氏ね糞
0574デフォルトの名無しさん
2006/03/15(水) 11:21:070575デフォルトの名無しさん
2006/03/15(水) 11:40:15自分で調べる手段の一つが人に聞くことなわけだが
学生の間しか言えない名言だな
0576デフォルトの名無しさん
2006/03/15(水) 12:49:400577デフォルトの名無しさん
2006/03/15(水) 12:53:430578デフォルトの名無しさん
2006/03/15(水) 13:09:030580デフォルトの名無しさん
2006/03/15(水) 14:03:180581576
2006/03/15(水) 14:03:35それとも落ちこぼれ社会人かしら?
はたまた後は老けて行くだけのNEET君ですか?
0583576
2006/03/15(水) 14:09:09ままのおっぱいでもしゃぶってろよwwwwwwwwwwwwwwwwwwww
0584デフォルトの名無しさん
2006/03/15(水) 14:13:06小・中・高・大学生・社会人にやさしくしろ
無職にもな!
0585デフォルトの名無しさん
2006/03/15(水) 15:09:57いや、態々レス番書くほどの内容か?
0586デフォルトの名無しさん
2006/03/15(水) 15:11:47関係ない無職の俺が傷ついた
0587576
2006/03/15(水) 15:47:06wwwwww
0589デフォルトの名無しさん
2006/03/15(水) 23:09:17あるいは人が書いたものを読むとか。
それとも自分で引数をいろいろ与えてどんな動作をするか調査するのかい?
0590参加者募集中!
2006/03/15(水) 23:12:25★★★自動売買ソフトを作ろうぜ★★★ Part3
http://live19.2ch.net/test/read.cgi/stock/1141718486/l50
0591デフォルトの名無しさん
2006/03/15(水) 23:15:30kqueueとかOSに特化したサーバは、そういったシンプルなサーバよりどの程度優れてるの?
性能が5%改善しました!とかなら馬鹿らしくて、チューンしたいとも思わないところです
0592デフォルトの名無しさん
2006/03/15(水) 23:20:020594デフォルトの名無しさん
2006/03/16(木) 00:31:26libeventでも使っとけば? select/poll/kqueueのwrapperライブラリ。
0595デフォルトの名無しさん
2006/03/16(木) 00:42:56調べてみます、情報ありがと
0596デフォルトの名無しさん
2006/03/18(土) 09:44:22指定した割合でパケットをロスさせたり、
順番を入れ替えたりすることが可能な言語はあるのでしょうか?
下のスレで質問させていただいたのですが、
しばらくしてもご返答がいただけなかったので、
ここでたずねさせて頂きました。よろしくお願いします。
http://pc8.2ch.net/test/read.cgi/tech/1135634403/
0597デフォルトの名無しさん
2006/03/18(土) 10:33:030598デフォルトの名無しさん
2006/03/18(土) 10:48:270599デフォルトの名無しさん
2006/03/18(土) 10:59:53ところでもちろんUDPだよね? TCPではスタックレベルでパッケとロス等は吸収・復帰されるから
アプリケーションレベルでのロスはあり得ない。
ちなみに>>545という方法も検討したら?
0600デフォルトの名無しさん
2006/03/18(土) 11:56:52>>597
例えばどのような言語があるのでしょうか?
宜しければ教えていただきたいです。
>>559
下位層(2層や3層)レベルでのパケットのロスが生み出せれば良いと
考えているのですが、、
>>545のツールも参考にさせていただきます。
0601デフォルトの名無しさん
2006/03/18(土) 12:34:17パッケとロス
0603599
2006/03/18(土) 12:41:52> 下位層(2層や3層)レベルでのパケットのロスが生み出せれば良いと考えているのですが、、
Linuxならiptableのモジュールでパケットをある確率で落とすというというのがあるけどね。
ホスト単体で出来るから便利。 パケット入れ替えというのはたしか無いと思ったけど。
0604デフォルトの名無しさん
2006/03/18(土) 12:54:07イーサネット層とかをコードレベルで扱える言語ならできるのでは?
Javaとかじゃ無理なような。
0605デフォルトの名無しさん
2006/03/18(土) 13:06:280606デフォルトの名無しさん
2006/03/18(土) 13:42:58例えば何さ?
0607デフォルトの名無しさん
2006/03/18(土) 14:03:21質問の答えにはなってないけど聞いてみる
0608デフォルトの名無しさん
2006/03/18(土) 14:05:380609デフォルトの名無しさん
2006/03/18(土) 14:11:26実際のネットワークで実験しないといけないなら駄目だろうけど
挙動のシミュレーションがしたいだけなら、TCPの上で仮想的に実装しても
と思ったんだけど
叩かれそうだから去ろう
0610デフォルトの名無しさん
2006/03/18(土) 14:27:48全然しらんかった。
0611デフォルトの名無しさん
2006/03/18(土) 14:33:400612デフォルトの名無しさん
2006/03/18(土) 16:38:13> 例えばどのような言語があるのでしょうか?
なんでこんな質問のしかたするの?
「機械語」とか書かれても困るんじゃないの?
ここで聞くってことは、自分で作ろうとしてるか誰かに
作ってもらおうと思ってるんじゃないのか?
もしそうなら、「○○の OS + △△の言語で、□□は実
現できるでしょうか?」と聞いた方が、あんたも回答者も
幸せになれると思うよ。
0613デフォルトの名無しさん
2006/03/18(土) 17:07:380614http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 18:34:12もしくは64bitにネイティブ対応した置換ソフトないですか?
0615デフォルトの名無しさん
2006/03/18(土) 19:27:37WinInetでレジュームをする方法、あるいは他のコンポーネントで使いやすいものがあれば紹介してください。
0616デフォルトの名無しさん
2006/03/18(土) 19:30:50httpかftpかその他のプロトコルか自前のプロトコルかもわからないのに
答えようが無い。
0617デフォルトの名無しさん
2006/03/18(土) 23:59:07HTTPなら↓でも読んでこいと
http://www.studyinghttp.net/
0618デフォルトの名無しさん
2006/03/19(日) 00:22:26機械語じゃなくても可能だろ
0619デフォルトの名無しさん
2006/03/19(日) 00:41:52要点ずれてるぞ
0620デフォルトの名無しさん
2006/03/19(日) 01:39:15バナナです。
バナナだけじゃないだろ。
0621デフォルトの名無しさん
2006/03/19(日) 02:02:26もっと効率のいい質問の仕方をしなさいって事だと思うんだが
0622デフォルトの名無しさん
2006/03/19(日) 04:10:32何故2つに別れているかが良く判りません。2つに分けて設計されているのは
どうしてなのでしょうか?
0623デフォルトの名無しさん
2006/03/19(日) 04:35:340624デフォルトの名無しさん
2006/03/19(日) 07:59:53待ち受けバックログの長さを指示するだけです。
0625デフォルトの名無しさん
2006/03/19(日) 20:42:55パケットキャプチャは出来たのですが、パケットを
蹴ることができません。
>>563 を拝見したのですが、どうも完全にVBの出る幕では
無さそうです。蹴る方法だけでも良い方法はないでしょうか?
以下のソフトはオールVB製でFirewallを実現しているよう
なので、きっと何か方法がありそうなのですが、これを見て
何か分かる方はいらっしゃいませんでしょうか?
ttp://www.vector.co.jp/magazine/softnews/040721/n0407211.html
↑からドライバを作るのではなく、ドライバをタイマー監視か
何かをしてパケットを蹴る動作を実現しているっぽいということ
は読み取れるのですが、具体的な方法がみつかりません。。
どうやれば、ドライバにちょっかいを出せるでしょうか?
よろしくお願いします。
0626625
2006/03/19(日) 21:06:51"ドライバを使わずに強引な方法で通信を切断〜"という
くだりがあり、"通信が完了する前に処理をしきらないと〜"
という言葉もありました。
どうやら、ドライバにちょっかいを出しているのではなく、
他の手段をとっているようです。
何かヒントありませんでしょうか?
よろしくお願いします。
0627デフォルトの名無しさん
2006/03/19(日) 21:11:230628デフォルトの名無しさん
2006/03/19(日) 21:22:120629ナイスガイ ◆http/iAti.
2006/03/19(日) 21:55:10たぶん、「RSTパケット」を送ってるんじゃまいか?
「通信が完了するまえに」ってのが怪しいw
0630625
2006/03/19(日) 22:47:51ぼんやりとですけど、意味は分かりました。
色々しらべてみます。
ついでにVBから生パケットを送出する良Sampleを
ご存知でしたら、教えてくださいませ。
0631デフォルトの名無しさん
2006/03/19(日) 23:31:190632デフォルトの名無しさん
2006/03/20(月) 00:01:43> 何かヒントありませんでしょうか?
Ethereal とかで見てみればいいと思うけど。
0633デフォルトの名無しさん
2006/03/20(月) 01:16:130634625
2006/03/20(月) 01:55:03ありがとうございます!調べてみます!
0635デフォルトの名無しさん
2006/03/20(月) 07:13:070636デフォルトの名無しさん
2006/03/20(月) 07:16:49VBでもできそうだけど
0637デフォルトの名無しさん
2006/03/20(月) 09:32:19の冒頭に
#define SOCK_NAME "/tmp/socket" /* 通信に使うソケットファイル */
ってあってこれのお陰で実行すると
connect: No such file or directory
って出ます。当然うちのSolarisの/tmpにはsocketファイルなんてありません。
これってどっかからコピーできたりするもんですか?
ここの住人なら知ってるはず。
ちなみに"/tmp/socket" ソケットファイル の検索結果 約 31 件中 1 - 7 件目 (1.02 秒)
0638デフォルトの名無しさん
2006/03/20(月) 10:48:43あえて汚い言葉遣いで言わせて貰うが、
PF_UNIX とか気付かないし調べもしないでネットワークプログラミング
やろうなんて10日くらい早いと思う。あたまいかれてんじゃないの?
0639デフォルトの名無しさん
2006/03/20(月) 10:58:210640デフォルトの名無しさん
2006/03/20(月) 11:00:36サーバは起動したん?
0641デフォルトの名無しさん
2006/03/20(月) 12:32:33いやいや、それには後から気付いたねん。(^^ゞ
まずは引っかかったエラーから解いていこうかと。
小さなことからコツコツと…(目でかくして)。
>>640
それがしたんよ。
0642デフォルトの名無しさん
2006/03/20(月) 12:41:13UNIXドメインのソケットに"/tmp/socket"なアドレスbindしてない?
してなければ、named pipeなのかも。その場合mknod。
ただ、named pipeがなければ、サーバ側でエラーが出ているはずなんだけど。
0643デフォルトの名無しさん
2006/03/20(月) 12:44:19$ gcc levelXchatsv.c
$ ./a.out
$ ls -lF /tmp/socket
srwxr-xr-x 1 foo foo 0 2006-03-20 12:43 /tmp/socket=
できてるやん!
0644デフォルトの名無しさん
2006/03/20(月) 16:23:230645デフォルトの名無しさん
2006/03/21(火) 14:43:15Client側で
deposits: 100
withdrawals: 200
をServer側で
deposits: 500
withdrawals: 600
に値を変えてるんですが、結果は
Received:
totalBytesRcvd: 7
deposits: 500
withdrawals: 712
totalBytesRcvd: 8
deposits: 1476395508
withdrawals: 712
です。_| ̄|○
depositsの方は500に変わってるんですけどねぇ。
二回表示されてるのはtotalBytesRcvdがsizeof(msgStruct)の数に達してないせいです。
どこをどう直したらいいんでしょうか?
↓以下コード抜粋です。
0646デフォルトの名無しさん
2006/03/21(火) 14:52:33//とりあえず構造体
typedef struct {
int dep;
int wd;
} message;
0647デフォルトの名無しさん
2006/03/21(火) 14:54:46int deposits = 100;
int withdrawals = 200;
msgStruct.dep = htonl(deposits);
msgStruct.wd = htonl(withdrawals);
/* Send the string to the server */
if (send(sock, &msgStruct, sizeof(msgStruct), 0) != sizeof(msgStruct))
DieWithError("send() sent a different number of bytes than expected");
/* Receive the same string back from the server */
totalBytesRcvd = 0;
printf("Received: \n"); /* Setup to print the echoed string */
while (totalBytesRcvd < sizeof(msgStruct))
{
/* Receive up to the buffer size (minus 1 to leave space for
a null terminator) bytes from the sender */
if ((bytesRcvd = recv(sock, &msgStruct, sizeof(msgStruct) - 1, 0)) <= 0)
DieWithError("recv() failed or connection closed prematurely");
totalBytesRcvd += bytesRcvd; /* Keep tally of total bytes */
echoBuffer[bytesRcvd] = '\0'; /* Terminate the string! */
printf("totalBytesRcvd: %d\n", totalBytesRcvd);
printf("deposits: %d\n", ntohl(msgStruct.dep));
printf("withdrawals: %d\n", ntohl(msgStruct.wd));
}
0648デフォルトの名無しさん
2006/03/21(火) 15:08:34それから、bit patternだけど、
1476395508→1011000000000000000000111110100
500→111110100
な。
0649デフォルトの名無しさん
2006/03/21(火) 15:14:54早速サーバー側の
//int deposits = 500;
//int withdrawals = 600;
//msgStruct.dep = htonl(deposits);
//msgStruct.wd = htonl(withdrawals);
の部分コメントアウトしました。で結果は
Received:
totalBytesRcvd: 7
deposits: 100
withdrawals: 200
totalBytesRcvd: 8
deposits: -939523996
withdrawals: 200
この最初の一回は正しいように見えますが
クライアントのローカル変数なんでそのまま表示してる、なんて可能性はありますか?
あと、bit patternというのはどう使うんですか???
0650645
2006/03/21(火) 15:22:421476395508→1011000000000000000000111110100
の尻尾が
500→111110100
と同じ訳ですな!
しかし、なじぇでしょう?
0651デフォルトの名無しさん
2006/03/21(火) 15:29:06> totalBytesRcvd: 7
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:390752デフォルトの名無しさん
2006/04/09(日) 10:52:13クライアント側でソースアドレスをバインドすれば問題なし。
0753デフォルトの名無しさん
2006/04/09(日) 11:39:4110台で2000IPのトラフィック(1GbpsNICでも10Gbps)と、2000台で2000IPのトラフィック(100MbpsNICでも200Gbps)は違うし。
0754デフォルトの名無しさん
2006/04/09(日) 11:48:250755デフォルトの名無しさん
2006/04/09(日) 12:08:010756デフォルトの名無しさん
2006/04/09(日) 13:18:150757デフォルトの名無しさん
2006/04/09(日) 14:20:080759デフォルトの名無しさん
2006/04/09(日) 20:51:102000台も繋げるなら負荷が問題になるよなあ。
0760デフォルトの名無しさん
2006/04/10(月) 11:10:53負荷試験でも、試験対象がサーバソフトのコネクション捌きの性能だったり、
スケーラビリティだったりする場合、bpsはほとんど関係ない。
コネクション開始リクエストの送出にbpsが足りるかぐらい。
0761デフォルトの名無しさん
2006/04/10(月) 14:53:12Linux (Solarisも同じだったかも)なら
ifconfig eth0:1 ...
ifconfig eth0:2 ...
のようにしてどんどん増やして、その後どうやるか忘れたけどそのインターフェースを
通して接続する。他のOSでは知らない。
0762デフォルトの名無しさん
2006/04/12(水) 23:31:14小さなデータをできるだけ高速に通信したいのですが、ソケットでは
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
で作ったソケットを作り、物理層の上で通信するのが一番、高速ですか?
とりあえずこれで実装してみるつもりなのですが、ほかに速い方法があれば
教えてください。
0763デフォルトの名無しさん
2006/04/13(木) 00:18:41垂れ流し? ブロードキャスト? データは途中で消えてもいいの?
0764デフォルトの名無しさん
2006/04/13(木) 05:57:460765762
2006/04/13(木) 11:04:16通信は1対1でクロスケーブルで繋ぐつもりで、データの信頼性はあんまり重要ではないです。
0766デフォルトの名無しさん
2006/04/13(木) 11:30:42>物理層の上で通信するのが一番、高速ですか?
…うん。バカハブとか、速いもんね。
0767デフォルトの名無しさん
2006/04/13(木) 14:53:39処理速度云々はてめえで見積もれ。
できないなら、とりあえずTCPで実装してから考えれ。
0768デフォルトの名無しさん
2006/04/15(土) 00:48:02Bがなかなかこない場合、Bが抜けた状態でA,Cだけが
read()とかrecv()で取得されるという事はあり得るでしょうか?
0769デフォルトの名無しさん
2006/04/15(土) 01:03:270770デフォルトの名無しさん
2006/04/15(土) 01:17:31無い。そのためのTCP。
UDPならある。
0771デフォルトの名無しさん
2006/04/16(日) 02:48:09TCPにパケットとかデータグラムってないよ。
0772デフォルトの名無しさん
2006/04/16(日) 07:56:53RFC 793 - Transmission Control ProtocolのGLOSSARYより
segment
A logical unit of data, in particular a TCP segment is the
unit of data transfered between a pair of TCP modules.
TCPの提供するバイトストリームにはデータの切目はない。
この違いを理解してください。
それから「TCP/Lower-Level Interface」ではセグメントを意識したプログラミングになります。
0773デフォルトの名無しさん
2006/04/16(日) 18:11:58ルータの仮想サーバポートなどを設定していない状態で
NAT内からUDPパケットをある特定のIPアドレス(グローバル)に対して送信します。
その場合、
1. 送信先IPアドレスからの応答は受け取れる
2. 送信元ポートへの応答は受け取れる(送信元IPアドレスは関係ない)
3. 応答は受け取れない
どうなるのでしょうか?
やはり「送信して一定期間内であれば」という条件もあるのでしょうか?
DNSが使えるので、1はクリアできると思っていますが、不安なので質問しました。
0774デフォルトの名無しさん
2006/04/16(日) 18:59:59っていうのがわからんが・・・LAN内のことか?
ping打てばわかると思うけどOKだよ
中から外はいいんだけど
問題なのは外から中が出来ない場合がある
・NAT
・NATP
・IPマスカレード
・アドレス変換
・ポートフォワディング
どれがどうなのか、最近のルータはこれを一緒に説明しているからややこしい
0775デフォルトの名無しさん
2006/04/16(日) 19:28:09ルータのNATの実装による。1だったり2だったり。
0776デフォルトの名無しさん
2006/04/16(日) 19:33:13その辺のブロードバンドルータとかASDLのモデムとかを相手にしてるなら、
xxxx:p から(ルータ等経由して) yyyy:q へ udp パケットを送ったあとしばらくの間は、
yyyy:q から(同じルータを経由して) xxxx:p への udp パケットはルーティングしてくれる。
という程度の仮定が良いと思う。
0777デフォルトの名無しさん
2006/04/16(日) 21:50:310778デフォルトの名無しさん
2006/04/16(日) 21:58:57これがないとDNSとかUDPのサービスが受けられないよ
0779デフォルトの名無しさん
2006/04/16(日) 23:39:22ko un みたいに逆順になることはありえない よね?
0780デフォルトの名無しさん
2006/04/16(日) 23:42:050781773
2006/04/17(月) 01:28:04>>777
いや、1つはポートを空けていて、基本的にはそこで要求を待っているのですが、
何らかの要求に対して、別ポートをbindして、そこからからパケットを送信して、
それがいくつかのノードを経由して戻ってくるので、それを送信ポートで受け取りたかったのです。
UDPで一時ポートを使いたい。
送信から開始するので、ルータで設定する必要ないなら、
スレッド単位で独立した通信処理ができるので楽だなと思いまして。
>>773の1、2のどちらかは、実装による(規格化・標準化されていない)ということで、
パケットにセッションID振って、1つの待ち受けポートで全部受けて、
そのあとキューに振り分けて処理するのが安全そうですね・・・。
>>774
LAN内で、一般家庭用のルータに繋がっている想定です。
0782デフォルトの名無しさん
2006/04/17(月) 08:28:30まずはC言語をやり直した方がいいんじゃないかな
0783デフォルトの名無しさん
2006/04/17(月) 08:31:160784デフォルトの名無しさん
2006/04/17(月) 15:35:40readや、acceptを非同期にしたいのですがどのような手法を用いれば非同期に出来るのでしょうか?
ご回答よろしくお願い致します
0785デフォルトの名無しさん
2006/04/17(月) 15:40:170786デフォルトの名無しさん
2006/04/17(月) 15:49:23ありがとうございます。勉強してきます
0787デフォルトの名無しさん
2006/04/17(月) 19:22:05setsockoptでNON_BLOCK
0788デフォルトの名無しさん
2006/04/17(月) 20:54:49fcntlじゃね?
0789デフォルトの名無しさん
2006/04/17(月) 20:58:300790デフォルトの名無しさん
2006/04/17(月) 21:07:38正解。 Windowsだと、ioctlsocket()。
787
0791デフォルトの名無しさん
2006/04/17(月) 21:52:31Socketで通信できるのはTCP/IPだけですか?
USBの通信状態をモニターするプログラムを実装したいのですが
Socketでは無理なのでしょうか?
0792デフォルトの名無しさん
2006/04/17(月) 22:09:35そーゆーOSは聞いたこと無いなー
0793デフォルトの名無しさん
2006/04/17(月) 23:16:57やっぱりそうですか、どうもありがとう
0794デフォルトの名無しさん
2006/04/18(火) 00:35:370795デフォルトの名無しさん
2006/04/18(火) 00:45:40MACアドレス無くても、(IPとしてではなく)socketとして扱うなら
上位のレイヤで吸収できるんでない?
例えばAF_USBとかにして何らかの機器識別情報をパラメータにして。
0796デフォルトの名無しさん
2006/04/18(火) 02:57:00それ面白いな。採用。
0797デフォルトの名無しさん
2006/04/18(火) 08:17:540798デフォルトの名無しさん
2006/04/18(火) 09:23:420799デフォルトの名無しさん
2006/04/18(火) 10:50:36Winsock だと。
0800デフォルトの名無しさん
2006/04/18(火) 10:55:000801デフォルトの名無しさん
2006/04/18(火) 17:22:48クライアントはソケット通信で最初にポート80(Apache)にconnectするようになっています。
この状態でクライアント側で試しにCGIをシェル上で走らせてみると
CGIに書いてあるHTMLは表示されるのですがscanfがまったく無視された形で戻ってきます。
自分としてはCGI上に書いてあるscanfで処理が1回止まり、1度文字の入力ができれば
いいなぁと考えていたのですが、この考え方は間違っているでしょうか。
正しいか間違っているか、また間違っているならば後学の為にも正しい処理の概要を
教えて頂ければ幸いです。
言語はC言語、サーバーはRedHatです。よろしくお願いします。
0802デフォルトの名無しさん
2006/04/18(火) 17:30:410803デフォルトの名無しさん
2006/04/18(火) 19:10:08間違っています。
*** 終了 ***
0804デフォルトの名無しさん
2006/04/18(火) 21:31:39>>この状態でクライアント側で試しにCGIをシェル上で走らせてみると
この部分をこちらの理解可能な言葉に直してほしい。
client ----- apache (CGI)
ではないの?
CGIの標準入力は、postされたデータと繋がっているので、
処理が止まったりはしないけど、君の言っている意味がよく分からん。
0805801
2006/04/18(火) 22:04:37説明不足、言葉足らずですみません。
>client ----- apache (CGI)
クライアントでsocketを作成後connectしてApacheに繋ぎ、「GET / HTTP1.1/」などの
文字列をsendで送信するとApache(CGI)から結果が返ってくるのですが、
その途中でscanfなどで「待ち」の状態にできないものかと試行錯誤している状態です。
その際、ポートは80で繋がっていると思いますがこのポート番号でprintf,scanfなどを使い
クライアントとデータの送受信が出来ないものか悩んでおります。
何か書いているうちに自分でも訳が判らなくなってきました・・・
4月からソケットプログラミングの勉強を始めたばかりなのでご容赦頂ければと思います。
0806デフォルトの名無しさん
2006/04/18(火) 22:35:57間に httpd が居るので普通は無理です。
出来たとしても特定のウェブサーバの特殊な機能だと思った方がいい。
0807デフォルトの名無しさん
2006/04/18(火) 22:47:380808デフォルトの名無しさん
2006/04/19(水) 02:28:24そういうのはPOSTでやればやれんことも無いです。
Ajax push なんかはそんな感じ。
0809デフォルトの名無しさん
2006/04/19(水) 03:21:540810デフォルトの名無しさん
2006/04/19(水) 09:57:38回答するからちょっと待ちねぇ
0811デフォルトの名無しさん
2006/04/19(水) 17:41:28見ててうざいから消えて
0812デフォルトの名無しさん
2006/04/19(水) 20:13:41nphとPOSTの組み合わせでできるんじゃね?
とりあえずnphでぐぐれ。
0813>>804さん
2006/04/19(水) 21:38:44なにか送るまで待つってどうするのかというのがまず1つ。
HTTPだと、CGIに対してGETリクエストを出した後に、
さらにおなじプロセスに対してメッセージを送れないからなにを待つんだという話。
単にディレイ入れるならCGIでsleepするだけ。
CGIから別プロセスを立ち上げるか、別に待っているプロセスがいて、
CGIを通してそのプロセスにアクセスするのは可能。
ウェブベースのアプリケーションは大体そんな感じ。
>>809
帯域制限?
一定速度を上回るとディレイ時間を増やしていき、一定速度を下回ると減らす。
while () {
receive();
if (rate < max_rate) {
++delay;
} else {
--delay;
}
delay_thread(delay);// dly_tskやnanosleepなど
send();
}
ちょうどいい速度で落ち着く。
OSの機能であるならそれを使ったほうがよし。
0814デフォルトの名無しさん
2006/04/19(水) 21:40:25逆。
if (rate > max_rate) {
0815デフォルトの名無しさん
2006/04/23(日) 00:19:50ttp://ruffnex.oc.to/kenji/src/windows/HTTP/cHTTP.cpp
phpに対してHTMLを吸いだそうとすると、404だったり変な結果だったりします。
例)
cHTTP.exe http://www.phpoo.net/
cHTTP.exe http://www.phpoo.net/index.php
cHTTP.exe http://www.phpoo.net/index.php?p=index.html
何か解決方法はありませんか?
0816デフォルトの名無しさん
2006/04/23(日) 00:51:15リクエストヘッダをもう少し書いてあげれば?
Accept と User-Agent くらいは。
0817815
2006/04/23(日) 03:20:21ありがとうございます。
AcceptとUser-Agentは無くても大丈夫でしたが追加しておきます。
0818デフォルトの名無しさん
2006/04/23(日) 18:23:04環境はwindowsです。
LANとPHSが繋がっています。
PHSは、自動的に接続/切断 しています。
通信処理は、
socketでTCP/IPな転送と
InternetOpenの流れのAPI使っています。
0819デフォルトの名無しさん
2006/04/24(月) 15:56:50ソケットを Connect する前に、使いたいほうのインタフェイスアドレスに
bind しておけばsocket使うほうはインタフェイス固定にできます。
InternetOpen の方は・・・
route コマンドで一時的にそっちのIFの優先度を上げるくらいか。
0820デフォルトの名無しさん
2006/04/29(土) 20:07:55netperfのようなものでもっと小さいプログラムありませんか?
0821デフォルトの名無しさん
2006/04/29(土) 20:11:42死ねばいいよ^^
0822デフォルトの名無しさん
2006/04/29(土) 20:20:540823デフォルトの名無しさん
2006/04/30(日) 01:20:50まあネット関係の言語は歴史的にCのほうが実績が有る。
他の言語でも、Cの実装に忠実に再現されてれば大丈夫だけど、ほとんどは多少違うので他のシステムとの通信時のデバッグで嵌る。
UDPは基本的にセッションが無いので、アドレス変換用のテーブルが作れない。
自分でNAT作ってみれば分かるよ。UDPは通らないNATでいいやと思うから。
0824デフォルトの名無しさん
2006/04/30(日) 01:31:28| ノ ヽ
/ ● ● |
| ( _●_) ミ
彡、 |∪| 、`\
/ __ ヽノ /´> )
(___) / (_/
| /
| /\ \
| / ) )
∪ ( \
\_)
0825デフォルトの名無しさん
2006/04/30(日) 03:47:320826デフォルトの名無しさん
2006/04/30(日) 08:32:100828デフォルトの名無しさん
2006/04/30(日) 16:02:110829さらに釣られるとすると…
2006/04/30(日) 22:37:58えーと…200点満点では?
0830827
2006/04/30(日) 23:03:01何かOSI参照モデルが理解できないアフォが多いですね。
まあネット関係の言語は歴史的にBSDソケットのほうが実績が有る。
他のOSでも、BSDソケットの実装が忠実に再現されてれば大丈夫だけど、
Winsockの場合は多少違うので他のOSとの通信時のデバッグで嵌る。
ICMPは基本的にポート番号が存在しないので、NAPT変換用のテーブルが作られない。
自分でNAPT作ってみれば分かるよ。ICMPは通らないでいいやと思うから。
0832デフォルトの名無しさん
2006/05/05(金) 03:37:42Content-MD5 とはちゃうんか?
SCO-Hash: 6c9173af0bf8d9c21cb3526f8f39d0f6
とか。
0833デフォルトの名無しさん
2006/05/05(金) 10:42:320834デフォルトの名無しさん
2006/05/05(金) 22:27:26ここの独自機能っぽいが。
先頭1KBのハッシュとかなんとか。
0835デフォルトの名無しさん
2006/05/07(日) 00:52:05ドッキリでしょうか。
0836デフォルトの名無しさん
2006/05/07(日) 01:55:25Updated Date: 05-May-2006
Creation Date: 27-Apr-1994
Expiration Date: 28-Apr-2012
0837デフォルトの名無しさん
2006/05/07(日) 11:08:07どうもありがとう!!
0838デフォルトの名無しさん
2006/05/07(日) 16:49:52InternetSetOption/InternetQueryOptionでSECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPというフラグがあるので試しにこれをONにしようとしたら、Setはできないフラグでした・・・orz なら何の為にQueryはできるのか・・・
0839デフォルトの名無しさん
2006/05/07(日) 19:15:450840デフォルトの名無しさん
2006/05/07(日) 21:57:260841デフォルトの名無しさん
2006/05/07(日) 22:06:04InterlockedIncrement
InterlockedDecrement
InterlockedExchange
辺りを使えばいいんでない?
0842841
2006/05/07(日) 22:07:060843841
2006/05/07(日) 22:14:01INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPは
InternetOpenUrlのdwFlagsであらかじめ指定しておく必要があるんじゃまいか。
0845デフォルトの名無しさん
2006/05/07(日) 22:20:52場合による。
その変数に対する複数の演算が、ひとつの不可分な処理として必要なら必要。
あと、スレ違い。
http://pc8.2ch.net/test/read.cgi/tech/1130984585/
0846841
2006/05/07(日) 22:28:50INTERNET_STATUS_REDIRECTメッセージが飛んできたら検出できるはず。
0847デフォルトの名無しさん
2006/05/08(月) 00:12:58どうもshutdown, closeの仕方が分からない。
その辺がうまくないせいで、
同じポート番号での通信が一回しかできない。
あるポート番号で通信を行った後、
また同じポート番号を使う設定でサーバを立ち上げ直すと、
サーバがきちんとaccept状態になっていないのか、
クライアント側がconnectのところで失敗しちゃう。
チラ裏スマソ
0848デフォルトの名無しさん
2006/05/08(月) 00:19:06setsockoptでSO_REUSEADDRすれ。
shutdownは、closeする直前に「受信はするが送信しない」or
「送信はするが受信しない」という状態を作るだけでその現象とは関係ない。
ていうかbindの戻り値ちゃんと見てエラーチェックしろよ…
0849デフォルトの名無しさん
2006/05/08(月) 00:20:080850デフォルトの名無しさん
2006/05/08(月) 00:25:42チラ裏にレスくれて
ほんとありがとう。。。
なにを質問したらいいのかさえ分からなくて、
チラ裏状態のまま書き込んでしまったんだけど、
ともかく、その点についてやってみます!
0851デフォルトの名無しさん
2006/05/08(月) 01:13:320852デフォルトの名無しさん
2006/05/08(月) 07:20:550853デフォルトの名無しさん
2006/05/08(月) 08:11:170854デフォルトの名無しさん
2006/05/08(月) 12:53:37REUSEPORTだと他のプロセスもbindできてしまうから、
積極的にそうしたい理由がなければREUSEADDRの方がいいと思う。
0855デフォルトの名無しさん
2006/05/10(水) 00:22:39クライアントはダイアルアップルータを通してインターネットに接続できる
非固定のIPアドレスを持つとします。
公開された中継サーバにクライアントから接続して双方向にパケットを送信するとします。
TCPならクライアントからサーバに接続すればそのソケットを通して双方向に送信できます。
このときTCPなのでコネクション指向の接続であり、その場合もっと下位のレイヤでも
「セッション」のような概念をもち、サーバとクライアントのルーティングの情報をセッションとして保持していて
よって双方向の通信できると私は理解しています。
ではUDPのようなコネクションレスの場合はどうなのでしょうか?
クライアントがサーバに対してUDPのパケットを送信したらその瞬間に双方向のルーティング情報が
各経路に出来上がり、サーバからの返信も確実にクライアントに届くのでしょうか?
いっぱい間違えていると思いますが、教えてください。m(_ _)m
0856デフォルトの名無しさん
2006/05/10(水) 00:27:380857デフォルトの名無しさん
2006/05/10(水) 00:37:09届かねえ。
0858デフォルトの名無しさん
2006/05/10(水) 00:42:18届くよ。
0859デフォルトの名無しさん
2006/05/10(水) 00:42:47ありがとうございます。
届きませんか・・
残念
0860デフォルトの名無しさん
2006/05/10(水) 00:46:12どうルーティング情報が保持されるのか、など)がわかるような良い教科書はありませんか?
0861デフォルトの名無しさん
2006/05/10(水) 00:52:480862デフォルトの名無しさん
2006/05/10(水) 01:01:250863デフォルトの名無しさん
2006/05/10(水) 01:03:31TCPはpeer-to-peerのプロトコルだということを理解してください。
次にIP層のルーティング機能について理解してください。
>>4の↓を読めばいいです。
TCP/IPによるネットワーク構築 〈Vol.1〉原理・プロトコル・アーキテクチャ
0864デフォルトの名無しさん
2006/05/10(水) 08:00:46わかりました。ありがとうございます。
0865デフォルトの名無しさん
2006/05/11(木) 07:21:59命令を出したりするメインポート以外のファイル転送ポート等は使用する時だけ
接続し、使い終わったら閉じるようにしているのですが、こういうやり方は
まずかったりするでしょうか??
0866デフォルトの名無しさん
2006/05/11(木) 07:30:57ftpはまさにそういうプロトコル。利点としては非同期にファイル転送を停止したり出来る。
0867デフォルトの名無しさん
2006/05/11(木) 11:42:09まずくないと思うけど、漏れならクライアント側で接続先が同じ、
かつ再接続の頻度がそこそこ高い場合にはUDPのソケットは開きっぱなしにする。
安定して同じポート番号使って、NATに優しいプログラムにしたいから。
サーバ側は1つのソケットでいいから当然開きっぱなし。
0868デフォルトの名無しさん
2006/05/11(木) 11:43:130870デフォルトの名無しさん
2006/05/11(木) 12:04:380871865
2006/05/11(木) 17:49:35>>866
なるほど。現状のまま行こうと思います。ありがとうございます。
>>867
そういうのもあるんですね。参考になります。ありがとうございます。
0872866
2006/05/12(金) 01:14:33あ、1つ重要な欠点を忘れてた。 そのデータ転送のポートの割り当て方を気をつけないと
ファイアーウォール、NATルータを通り抜けれない可能性がある。 FTPみたいに
ダイナミックにポートを当てはめてその情報をコマンドでやりとりしてとかやるとまず
だめ。 NATルータはFTPを通すためにえらく面倒な特別処理をしている。
詳しくは:
RFC 3235 NAT Friendly Application Design Guidelines
0873デフォルトの名無しさん
2006/05/12(金) 01:45:41これってメッセージをやり取りするたびにTCPのコネクションって
切っても良いものでしょうか?
RTSPを使うアプリを見てると基本的にTCPのコネクションを維持しているようです。
0874デフォルトの名無しさん
2006/05/12(金) 07:19:570875デフォルトの名無しさん
2006/05/12(金) 15:47:17そんな事考えてるのはお前くらいのもんだよ。
0876デフォルトの名無しさん
2006/05/12(金) 15:48:38HTTP に KeepAlive 導入したヤシも似たようなこと考えてたんじゃネーノ?
0877デフォルトの名無しさん
2006/05/12(金) 18:37:32HTTP/1.0以前は同じページにcssやら画像100枚やら張られるなんて
想像してなかったんだろうな。
0878デフォルトの名無しさん
2006/05/12(金) 20:20:32RTSPもHTTPに似てるから同じでいいんじゃないか?w
0879デフォルトの名無しさん
2006/05/13(土) 00:28:39レス、ありがとうございます。
結局のとこ、どうなんでしょうね。
接続を維持していたほうが負荷が小さいのは間違いないですが。
切っても良いっちゃ良いんでしょうが。
0880デフォルトの名無しさん
2006/05/13(土) 01:43:17参考情報
HTTPのKeep-Aliveの説明
ttp://www.studyinghttp.net/connections
0881デフォルトの名無しさん
2006/05/13(土) 16:59:59世の中には接続を切るとそのままセッションも捨てられるしょぼいサーバも存在するかも。
切らないほうがトラブルに見舞われることは少ないと思われ。
0882873
2006/05/13(土) 21:37:49ありがとうございます。
ここまで、書いててまったく気づいてなかったのですが、
実はサーバー側の話です。
サーバー側で切ってしまうと、クライアントの方で問題にならないかな〜と
思いました。
まあ、いろんなクライアント試してみろって話ではあるんですが。
0883デフォルトの名無しさん
2006/05/13(土) 22:06:130884デフォルトの名無しさん
2006/05/14(日) 02:13:35バッテリ駆動機器は別だろう、勿論。
0885デフォルトの名無しさん
2006/05/14(日) 09:05:04問題にならないようにHTTPにはCookieがある。
HTTPはもはや汎用のプロトコルでセッション管理も必要だから。
あなたがどういう応用を想定しているか分からないので、
あなたのケースではどうだかは分からない。
0886デフォルトの名無しさん
2006/05/15(月) 02:12:01送り側のシステムでMTUサイズに自動で分割され、受け側のシステムで自動合成される。
つまりパケット喪失や輻輳等はあるが、自動合成後のパケットデータは信用できる。
と認識しているのですが、正しいでしょうか?
winsock2.0
vs2003
winXP win2000
0887デフォルトの名無しさん
2006/05/15(月) 05:16:44沖縄から北海道へ行くのに地面を掘ってブラジルへ行こうとするほどズレている
0888デフォルトの名無しさん
2006/05/15(月) 11:05:21winsock2なんですが、一度listenしたものをプロセスを維持したまま解除
(listenしない)にしたいです。
listenに使用したfd(SOCKET)を使ってshutdownやclosesocketしても
まだLISTEN状態です。
「setsockoptでSO_REUSEADDRを使えばよい(次回からも同ソケットに
bind&listenできる)」って記述は多くあるんですがそのものを解除したい場合
はどうしたらよいでしょうか。
0889886
2006/05/15(月) 11:17:480890デフォルトの名無しさん
2006/05/15(月) 11:28:540891888
2006/05/15(月) 12:09:43早速ありがとうございました。
shutdown -> closesocket だとダメでしたが、closesocket だけにすればLISTENを
解除することができました。
「shutdownは必須」とばかり思ってましたがリスナーソケットですし明示的に
shutdown(s, SD_RECEIVE)する必要は無かったんですね。勉強になりました。
0892デフォルトの名無しさん
2006/05/15(月) 20:13:320893デフォルトの名無しさん
2006/05/16(火) 08:41:36心のポートで聞いてくれないんです!
0894デフォルトの名無しさん
2006/05/16(火) 13:01:25プログラム側でaccept()してないだけでしょ?
0895デフォルトの名無しさん
2006/05/16(火) 19:56:32クライアントから1秒ごとに送られてくる、文字列を受信して
クライアントへその都度文字列を送信する
というサーバープログラムを作りたいのですが、
C++もソケットプログラミングも初心者の自分が勉強しやすい
おすすめの参考書、サイトありませんか?
0896デフォルトの名無しさん
2006/05/16(火) 20:36:540897デフォルトの名無しさん
2006/05/19(金) 23:57:49IPヘッダのポート番号をいじりたいのですが。
よく下のような表をみるのですがあってますか?
RAW Socketでいじれる範囲
----------------------------------------------------
Win95/98/Me Win2000/XP(SP1)/XP(SP2)
Ether fame NG NG
IP header NG OK
0898デフォルトの名無しさん
2006/05/20(土) 00:13:07サーバ側にあるDLLをネットワークを介してクライアント側で
使用することは出来ますでしょうか?
具体的には、CGI等でサーバ側のDLL機能を呼び出しクライアントの
PCを操作するようなことを想定しています。
COMとかに関係してくるんですかね?
よろしくお願いします
0899デフォルトの名無しさん
2006/05/20(土) 03:40:11CGI ならネットワーク関係ないです。
手抜きしてないでちゃんとサーバの方の資料を読んで。
0900デフォルトの名無しさん
2006/05/20(土) 09:17:53IPヘッダにport番号はありません。
0901デフォルトの名無しさん
2006/05/20(土) 10:07:52プロトコルIDだろ。そのくらい推測してやれよ。
↓ここでも読んででなおしてこい。
http://www.kachijiten.com/realintention/realbbs032/
0902デフォルトの名無しさん
2006/05/20(土) 10:23:340903デフォルトの名無しさん
2006/05/20(土) 10:29:23ここ読む限りどっちなのかわからんな
0904デフォルトの名無しさん
2006/05/20(土) 10:41:14プロトコルID ってなんだ?
プロトコル番号のことかな。
ていうか、プロトコル番号知ってる奴があんな質問しないと思う。
単に、IP ヘッダと TCP/UDP ヘッダの区別がついてないだけだろ。
0905900
2006/05/20(土) 10:54:37RAW Socketでいじれる範囲
----------------------------------------------------
Win95/98/Me Win2000/XP(SP1)/XP(SP2)
Ether fame NG NG
IP header NG OK
TCP/UDP header OK OK
0906デフォルトの名無しさん
2006/05/20(土) 11:11:440907デフォルトの名無しさん
2006/05/20(土) 17:08:250908デフォルトの名無しさん
2006/05/20(土) 18:03:590909デフォルトの名無しさん
2006/05/20(土) 18:07:410911デフォルトの名無しさん
2006/05/20(土) 22:40:10のせいで良スレが荒れるのが許せない。。。
0912デフォルトの名無しさん
2006/05/21(日) 01:00:260913デフォルトの名無しさん
2006/05/21(日) 01:01:21ここまであぼーん推奨
0914デフォルトの名無しさん
2006/05/21(日) 03:43:55[TcpListener].AcceptTcpClientにて得たTcpClientから接続要求してきたクライアントのIPアドレスを導き出したいのですが、
どうすれば良いのでしょうか?
--------------------------------------------
VS2003
XP 2000
0915デフォルトの名無しさん
2006/05/21(日) 04:23:44getpeername()
0916914
2006/05/21(日) 10:32:09s= [TcpListener].AcceptSocket()
s.RemoteEndPoint.ToString()
で行けました。
0917デフォルトの名無しさん
2006/05/24(水) 14:57:32ソケットって接続先がかわるたびに作成しなくちゃいけないんですか?
一つソケットを作っておいて、それを、アドレスの設定だけ変えて使いまわしては駄目なんですかね?
0918デフォルトの名無しさん
2006/05/24(水) 15:19:22TCPではできない。
UDPはそもそも「接続」という概念がない。
その他について俺は知らない。
0919デフォルトの名無しさん
2006/05/24(水) 15:23:42使い回せないのは接続であって、ソケットではない。
ただしhalf closedにならないように注意。
0920デフォルトの名無しさん
2006/05/24(水) 15:42:34あ、そうか、connect() でやればいいんじゃん。あー!
0921917
2006/05/24(水) 16:11:50出来るけど、一般的な方法ではないという事ですかね?
例えば、uriを入力したら結果を表示してくれる簡易ブラウザを作るとして、ソケットの作成は一回だけでいいんでしょうか?
それとも、uriを受け取るたびにsocket()とconnect()をすべきなんでしょうか?
0922デフォルトの名無しさん
2006/05/24(水) 16:24:02それが問題になりそうになれば、(まあそんなことはないと思うけれど)
再利用するようにすればいいんじゃない?
ちょっとした落とし穴があるから、最初から再利用は進めない。
http://www.kt.rim.or.jp/~ksk/sock-faq/unix-socket-faq-ja-2.html#time_wait
0923デフォルトの名無しさん
2006/05/24(水) 16:27:41例えばHTTP/1.1 ならば同一ホストに対しては繋ぎっぱなしにできることもあります。
再接続が必要な場合には既存のソケットは close して socket で新しくソケットの作成
からはじめるのが普通です。
connect / shutdown と違って、ソケットの生成と破棄は単なるカーネル内のメモリ操作に
過ぎませんので、あえて避ける理由はあまり無いと思われます。
0926デフォルトの名無しさん
2006/05/26(金) 20:24:43環境はUnixです。Windowsならicmp.dllというのがあるらしいのですが…。
0927デフォルトの名無しさん
2006/05/26(金) 20:55:310928デフォルトの名無しさん
2006/05/26(金) 21:21:44#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
int
socket(AF_INET, SOCK_RAW, proto);
manするとこう書いてある。
ってかmanしろボケ。
0929デフォルトの名無しさん
2006/05/27(土) 00:02:170930デフォルトの名無しさん
2006/05/27(土) 19:21:25クライアントからサーバへsendmsgを使用し、UDP送信を行うとソケットに
自動的に空いてるポートが割り当てられますが、そのポートが割りついた
ソケットをそのまま使用して、recvmsgしても問題ないのでしょうか?
実際動かすと問題なく動作はするのですが、たまたま割りついたままに
なっているだけで、時間が経過すると外れたりするのでしょうか?
recmsgを使用するのであればbindすべきですか?
ご教授のほど宜しくお願いします
0931デフォルトの名無しさん
2006/05/27(土) 20:13:22c言語/winsockでネットワークプログラミングするとして、
送受信の時に
ttp://x68000.q-e-d.net/~68user/net/c-http-1.html
↑に書いてるようにファイル用の関数を使うべきなんですか?
send()やrecv()などの専用の関数がありますが、それは使わなくてもいいんでしょうか?
0932デフォルトの名無しさん
2006/05/27(土) 20:31:580933デフォルトの名無しさん
2006/05/27(土) 20:36:430934デフォルトの名無しさん
2006/05/27(土) 20:37:03そこに書いてあるような方法が一般的なんですか?
0935931
2006/05/27(土) 20:45:000936デフォルトの名無しさん
2006/05/27(土) 20:46:51気になるなら send/recv の方を使っておいた方がよいでしょう。
http://www.linux.or.jp/JM/html/LDP_man-pages/man2/send.2.html
send() は、ソケットが 接続された (connected) 状態にある場合にのみ使用できる
(つまり、どの相手に送信するかは既知である)。
send() と write() の違いは、引き数に flags があるかどうかだけである。
引き数 flags が 0 の場合、 send() は write() と等価である。
また、 send(s,buf,len) は sendto(s,buf,len,NULL,0) と等価である。
あなたの見ているサイトのこちらの場所では
http://x68000.q-e-d.net/~68user/net/udp-2.html
UDPがsend/recv
TCPがwrite/read
みたいな書き方されてますね
0937931
2006/05/27(土) 20:52:49よくわかりました!ありがとうございますm(_ _)m
0938デフォルトの名無しさん
2006/05/27(土) 20:59:59winsock らしいけど?
0939デフォルトの名無しさん
2006/05/27(土) 21:02:36なんでこんなとこ見てるんだろう?
ttp://x68000.q-e-d.net/~68user
いや、このサイトが良くないという意味ではなく。
0940デフォルトの名無しさん
2006/05/27(土) 21:14:50え?どういう意味??
MSDN を見ないって意味ならそれも仕方ないんじゃないかと思う。
だって、肝心なところは暗号化されてるし。
>>938 は、winsock では違うって意味で書いたんだけど。
0941931
2006/05/27(土) 21:29:34http://www.golgo.jp/winsock.html#l_select
http://www.h5.dion.ne.jp/~sigma/homepage/cyberspace/httpclient.html#c07
http://stylefree.net/main/nprogramming/windows/windows1.shtml
この辺りのサイト見させてもらってるんですが、送受信(具体的に言うとHTTPクライアントのような物を作りたい)のあたりで混乱してしまって・・
どこかwinsockで詳しいサイトありませんかね?(参考書買えって感じですかね?w)
0942デフォルトの名無しさん
2006/05/27(土) 22:48:32良いサイトを探すのは難しいかもしれないです。
自分も同じことを考えたんだけど、最終的には本を買うしかなかった。
http://www.amazon.co.jp/exec/obidos/ASIN/4797330449/503-2450924-1963916
これがいいです。
っていうより、これしか選択肢が無い。
HTTP クライアントなら、WinInet とか使ったらどうですか?
自分の少ない経験から思っただけですけど、
クライアントに BSD 由来の API を使うのはやめたほうが
いいような気がします。
解説って需要あるんですかね?
ちょっと書いてみたいような気もする。
0943デフォルトの名無しさん
2006/05/27(土) 22:59:21Winsock Programmer's FAQ (日本語訳)
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/
で十分じゃないのか?
0944デフォルトの名無しさん
2006/05/27(土) 23:04:53充分じゃないと思う。
0945931
2006/05/27(土) 23:28:26WinInet・・今ちょっと調べてみたんですけど、winsockよりだいぶ入り易そうですね。
今まで存在そのものを知りませんでしたw�d。
>>943
初級者なんで、一から順を追ってといった感じの解説サイト(本)じゃないと厳しいですね。。
0946デフォルトの名無しさん
2006/05/28(日) 01:49:42TCPのコネクション確立の仕方も知らずにネットワークプログラミングをするのはどうかと
#WindowsでHTTP/FTPだけならWinInetがあるから、知らなくても多少は大丈夫だろうけど
猫でもわかる〜でも読んでおけよ
しょぼいけど抑えるところは抑えてあるぞ
0947デフォルトの名無しさん
2006/05/28(日) 11:55:09インターネットで情報入手できる時代では有るけど、歴史が違うから、書籍のほうが詳細でよく吟味されてまとめてあって読みやすいよ。
この先、氏ぬまでwindowsしか弄らないと言い切れるなら、bsd系のapiも無視してもいいかも知れないけど、
unix系にしろ、歴史的経緯で基本はbsd系のapiに行き着くので、後で応用が利かずに苦労するよ。
たとえばTCPのソケットって面倒だなあってのは、UNIXの設計思想として何でもファイルの様に扱いたいって言うのが有って、ネットワークもファイルの様にソケットに読み書きすれば通信できるって風にしたいからとか基本が理解できてないと理解できないことも多い。
あとはネットワークに限らず、全てのソフトに言えるけど、長く使われてるものほど、バグが潰されてて枯れてて不具合に巻き込まれにくい。
IPスタックの歴史で長いのはbsd由来の実装だし、windows系はまだまだ歴史が浅いよ。
まあそろそろスーパーハカーがbsd由来のIPスタックに置き換わるような革新的なIPスタックを出してくれてもいいと思うけどな。
ディスクレスクライアントとか現実的に使われてる今時、ファイルシステムに依存するIPスタックもどうかと思うし。
0948デフォルトの名無しさん
2006/05/28(日) 12:37:04>一から順を追って
つ[RFC]
もし、プロトコルを理解する以前の問題なら
つ[>>4]
0949デフォルトの名無しさん
2006/05/28(日) 12:50:24Winsockは、その本が一番いいと思うけど、
カマー本のWinsockという手もある。
あっちはプロトコルの話が少し多い。
0950デフォルトの名無しさん
2006/05/28(日) 12:51:16ディスクレス・クライントはファイルを使わないのですか? (そうではないでしょう)
0951デフォルトの名無しさん
2006/05/28(日) 13:04:23ソケットがwriteでかけて,readで読めるだけでしょ?
0952デフォルトの名無しさん
2006/05/28(日) 13:07:41個人的には専用インタフェースが欲しいが
0953デフォルトの名無しさん
2006/05/28(日) 13:08:23ほとんどのプログラマはわざわざソケットをじかに叩く意味もないし。
0954942
2006/05/28(日) 18:12:32今は本格的にネットワークプログラミングを勉強しようと思ったわけではなくて、部分的に少し必要になっただけなので、winInetにお世話になろうと思います。
(時間があればみっちり勉強したいんですが・・)
0956デフォルトの名無しさん
2006/05/28(日) 19:33:53初学者だって書いてあるじゃない。
なんで RFC 薦めるの?
読んだことないけどなんかいい物だって聞いてるから?
0957デフォルトの名無しさん
2006/05/28(日) 19:35:46○めんどくさがり
0958デフォルトの名無しさん
2006/05/28(日) 19:38:02あのねぇ。
ここまでの書き込み見てわかるでしょ。
ネットワークどころか、プログラミングの初学者なの。
そういう人になんでわかりにくいもの薦めるかなぁ。
混乱させて楽しむってやつですか?
0959デフォルトの名無しさん
2006/05/28(日) 19:38:30噛み砕いて欲しいならせめて 「○○ってどういう意味ですか?」 くらいまで落として欲しいもんだね。
0960デフォルトの名無しさん
2006/05/28(日) 19:39:32偉いんだぞ!
おまいら頭が高い!
0961デフォルトの名無しさん
2006/05/28(日) 19:41:12この人は、そんな質問してないでしょ?
質問の答え書けばいいと思います。
Linux 系の人がうそ教えて喜んでたけどさぁ。
あれほんと悪質だよ。
ちゃんと答えかいてやればいいじゃない。
0962デフォルトの名無しさん
2006/05/28(日) 19:42:49じゃ、おまいが書いてあげれば良いじゃないか。
0963デフォルトの名無しさん
2006/05/28(日) 19:43:260964デフォルトの名無しさん
2006/05/28(日) 19:44:29なんかわかってしまった。
きっと教えるマニアっていうのがいるんだよね。
で、必死でぐぐりながら答えるの。
で、うまくぐぐれないと怒り出すの。
で、ぐぐってるだけで、きちんと知ってて教えてるわけじゃないから、
うそ教えてるの。
で、何で私が頭に来てるか理解できない。
0965デフォルトの名無しさん
2006/05/28(日) 19:45:07書いてあげたじゃん。
ちゃんとうそ教えてる人にも訂正するチャンス与えた。
0966デフォルトの名無しさん
2006/05/28(日) 19:45:170967デフォルトの名無しさん
2006/05/28(日) 19:46:420968デフォルトの名無しさん
2006/05/28(日) 19:47:16教えた。
過去ログ嫁。
すっごい感謝されてる。
涙流しながらありがとうって言われたよ。
0969デフォルトの名無しさん
2006/05/28(日) 19:48:44嘘つけ。
0970デフォルトの名無しさん
2006/05/28(日) 19:48:57神降臨
0971デフォルトの名無しさん
2006/05/28(日) 19:51:27あなた様のおかげで命を救われ、人生をやり直すことができました。
その節は本当にありがとうございました。
0972デフォルトの名無しさん
2006/05/28(日) 19:55:220973デフォルトの名無しさん
2006/05/28(日) 20:06:13ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′ <仲良くなってくれ
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 前224 〜 前194 )
0974デフォルトの名無しさん
2006/05/28(日) 21:59:560975デフォルトの名無しさん
2006/05/28(日) 22:27:260976デフォルトの名無しさん
2006/05/28(日) 22:28:400977デフォルトの名無しさん
2006/05/29(月) 02:09:21伝書鳩をつかってパケットを送りたいんだけど、助言頼む。
0978デフォルトの名無しさん
2006/05/29(月) 03:15:12悪いことは言わないからやめとけ、パケット消失しまくりだし、
あいつら暴れるから再送とかすげー面倒。
0979デフォルトの名無しさん
2006/05/29(月) 08:25:47初学者だからこそ基本は大事という意味で、RFCとかの仕様を読んだりソケットAPIの使い方を知るのが必要だけどな。
高レベルAPIのほうが簡単でいいけど、うまく逝かない時に何が起きてるのか理解できずに途方に暮れるだけ。
車作ろうと勉強してる香具師が、自動車工学とか勉強せずにエンジンの掛け方と止め方程度の操作だけしか知らずに車作れる訳ないじゃん。
0980デフォルトの名無しさん
2006/05/29(月) 08:48:110981デフォルトの名無しさん
2006/05/29(月) 12:13:270982デフォルトの名無しさん
2006/05/29(月) 12:33:01Encapsulation may be done with saran wrappers. Unintentional
encapsulation in hawks has been known to occur, with decapsulation
being messy and the packets mangled.
カプセル化はサランラップで可能らしい。なんだよこれw
0983デフォルトの名無しさん
2006/05/29(月) 12:42:55捕食されるのもencapsulationか
0984デフォルトの名無しさん
2006/05/29(月) 12:45:32鷹による予期せぬカプセル化が発生することがあります。
このカプセル化の解除はパケットの汚損を伴います。
か
0985デフォルトの名無しさん
2006/05/29(月) 12:50:58しかし予期せず鷹によって捕獲されることがあります。
取り戻しても、中身が汚れ、包みは外れているでしょう。
0986デフォルトの名無しさん
2006/05/29(月) 18:26:420987デフォルトの名無しさん
2006/05/29(月) 18:28:58えと、文字列に、IPアドレスの文字列かホスト名が入っているときに、
どちらが入っているかを判断する方法はあるでしょうか?教えてください。
0988デフォルトの名無しさん
2006/05/29(月) 18:35:51最初の文字が数値ならIPアドレスの文字列
それ以外ならホスト名
0989デフォルトの名無しさん
2006/05/29(月) 18:41:29ありがとうございました〜。
0990デフォルトの名無しさん
2006/05/29(月) 19:00:01質問に質問で答える香具師しかいない
昔とは随分質が落ちたものだ
0991デフォルトの名無しさん
2006/05/29(月) 19:28:41回答と質問を取り違える香具師がいる
昔とは随分質が落ちたものだ
0992デフォルトの名無しさん
2006/05/29(月) 20:54:37んなもんどっちが入っていようが gethostbyname() 使えばいいじゃないか。
0993デフォルトの名無しさん
2006/05/29(月) 21:00:30普通はまずinet_addrで確認してからだろ。
無駄なトラフィックかけるなよ。
0994デフォルトの名無しさん
2006/05/29(月) 21:07:16"localhost"かIPアドレス文字列の場合はトラフィック掛からないよ
0995デフォルトの名無しさん
2006/05/29(月) 21:17:18どうせあとでやるなら同じ。
やらないならその通りだが。
0996デフォルトの名無しさん
2006/05/29(月) 21:21:120997デフォルトの名無しさん
2006/05/29(月) 22:05:08接続をぬっころすことはできますか?
0998デフォルトの名無しさん
2006/05/30(火) 00:17:060999デフォルトの名無しさん
2006/05/30(火) 00:30:271000デフォルトの名無しさん
2006/05/30(火) 00:32:0010011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。