2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん ◆TCP/IPmFAM :04/09/26 17:26:23
主にソケットに関しての質疑応答スレです。

Programming 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/

過去スレ:
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port7 http://pc5.2ch.net/test/read.cgi/tech/1063035045/
Port8 http://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port9 http://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port10 http://pc5.2ch.net/test/read.cgi/tech/1090385857/

関連リンクは>>2-10辺り
足りなかったら適当に付け足してね

2 :デフォルトの名無しさん:04/09/26 17:27:08
図書コーナー!

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

3 :デフォルトの名無しさん:04/09/26 17:27:39
今までに出てきたURL抜粋

RFC 日本語版リスト
http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
C10K ヘヴィーロードサーバ
http://www.kegel.com/c10k.html
JPNIC RFC関連リンク集
http://rfc-jp.nic.ad.jp/link/
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
MSDN
http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp

ツール類
tcpdump
http://www.tcpdump.org/
Windump
http://netgroup-serv.polito.it/netgroup/tools.html
pathchar
ftp://ftp.ee.lbl.gov/pathchar/
pchar
http://www.employees.org/~bmah/Software/pchar/

4 :デフォルトの名無しさん:04/09/26 17:28:00
問題ありのサイト

ネットワークプログラミングの基礎知識
http://X68000.q-e-d.net/~68user/net/

5 :デフォルトの名無しさん:04/09/26 17:28:38
5げっと

6 :デフォルトの名無しさん:04/09/26 17:59:30
■ゲーム系関連スレ
実装や設計、雑談など主にソケットプログラミングについて。
スレタイトルにMMORPGとついていますが気にしている人は少ないです。

MMORPGを一緒に作りませんか?
http://pc5.2ch.net/test/read.cgi/gamedev/1078434119/
MMORPG 作成
http://pc5.2ch.net/test/read.cgi/gamedev/1005040802/
MMORPGを作ってみたい
http://pc5.2ch.net/test/read.cgi/gamedev/1061892441/

7 :デフォルトの名無しさん:04/09/26 18:37:12
ツール類には

ethereal
http://www.ethereal.com/

も入れて欲しいです。

8 :デフォルトの名無しさん:04/09/26 19:10:27
同じく、ツール類に入れて欲しい。

Packetyzer
http://www.networkchemistry.com/products/packetyzer/

9 :デフォルトの名無しさん:04/09/26 21:10:16


10 :デフォルトの名無しさん:04/09/26 23:47:39
漏れはPacMonPro使ってるが、使いやすいぞ
もちろん不正利用だが(w

11 :デフォルトの名無しさん:04/09/27 00:28:31
>>1 乙!

12 :デフォルトの名無しさん:04/09/27 07:18:54
RedHatLinux使っています。

socket システムコールshutdownを調べようと
$ man shutdown
すると、/sbin/shutdownのmanualが表示される
どうしたらsocket システムコールshutdownのmanualみれるの?

13 :デフォルトの名無しさん:04/09/27 07:19:46
>>12
man man

14 :デフォルトの名無しさん:04/09/27 08:18:16
man 2 shutdown

15 :デフォルトの名無しさん:04/09/27 08:24:23
>>14
ありがとう

16 :デフォルトの名無しさん:04/09/27 08:36:28
>>15
13には礼は無しかよ

17 :デフォルトの名無しさん:04/09/27 08:43:38
>>16
役にたたなかったから

18 :デフォルトの名無しさん:04/09/27 10:57:55
>>16
sageているから

19 :デフォルトの名無しさん:04/09/27 11:24:17
int MakeSocket(void){
struct hostent* myhost;
struct servent* service;
struct sockaddr_in server;
int sock;
service = getservbyname(SERVICE_NAME,"tcp")
myhost = gethostbyname("hoge-.com")
sock = socket(AF_INET,SOCK_STREAM,0)
server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_ANY);
service -> s_port = 25;
server.sin_port = htons(service -> s_port);
bind(sock,(struct sockaddr*)&server,sizeof(server))
listen(sock,5);
return sock;
}
としてこの後acceptしているのですが,25ポートにアクセスしてもサーバから
反応がありません.
何が問題でしょうか.
25番ポートを使用する他のプログラム(SMTP)は他に走っていません.

20 :デフォルトの名無しさん:04/09/27 11:49:22
>>19
・socket(), bind(), listen() のエラーチェックをちゃんとやりましょう
・そのプログラムが動いている同じホストから繋がるかどうか確認しましょう


21 :デフォルトの名無しさん:04/09/27 12:11:49
>>20
ありがとうございます.
解決しました.
関数にあくせぷとしたときの戻り値を渡すべきところを,ソケットを作ったときの
ディスクリプタをそのまま渡してしまったので,エラーが出ていたようです.
なんでこんなことに気がつかなかったのだろうか。。。

22 :デフォルトの名無しさん:04/09/27 12:12:52
C#の方のスレに一度投稿したのですが、話題がこちら向けだと思うので、此方にて再度質問させてください。

現在、下記URLのC#を使ったRawSocketのサンプルを元にネットワークプログラムを勉強しています。
ttp://www.thecodeproject.com/csharp/networkmonitor.asp

上記のソースを改良し、パケット取得時にIPヘッダにてTCPプロトコルのものだけを抽出し、
その後、パケットからTCPヘッダを取り、それぞれのデータに分割し、さらにデータ部だけを取り出し、
パケットモニタのように表示するという事をしました。

そこで、今度は分割されて送信されたTCPパケットを再結成したいのですが、
どのように行えばよいのでしょうか。
やりたいことは、分割されたパケットの場合、分割パケットが全て届いた所で、
データ部を全て結合して、別の処理部に渡したいのです。

また疑問なのは、TCP/IPパケットが分割されている途中に、他のパケットが割り込む事はあるのでしょうか?

つまり、AとBというデータが共に分割されて送られたとして、
Aの分割された複数のパケットが最後まで届く前にBの分割されたパケットが割り込むといった事は
あるのでしょうか。
それとも、分割されたデータを全部受け取るまでは、他のパケットは何処かにプールされていて、
割り込む事はないのでしょうか?

23 :デフォルトの名無しさん:04/09/27 13:27:04
http://www.yomiuri.co.jp/komachi/reader/200409/2004092200016.htm

こいつを救ってやって

24 :デフォルトの名無しさん:04/09/27 13:47:51
>>23
RFC2549を自前で実装すればなんとかなるんじゃねーの
すこし前にウィルスがかなり問題になってたからオススメはしないが

25 :デフォルトの名無しさん:04/09/27 13:56:15
バナーのひとつもメモリに入らないとみた

26 :デフォルトの名無しさん:04/09/27 13:58:36
>>25
http://my.reset.jp/~toragiku/kopa/6601sr.htm
RAMが64KBあるから入るんじゃない?

27 :デフォルトの名無しさん:04/09/27 13:59:48
>>26
503iよりショボい気が…

28 :デフォルトの名無しさん:04/09/27 15:12:29
>>22
RAW ソケットなら、たぶんパケットは受信した順に読み込まれます。
どんな順序で受信されるかは、送信側の機器及び通信経路上に存在する機器等に依存します。

29 :デフォルトの名無しさん:04/09/27 20:17:38
getsockoptでSO_LINGER指定でlinger構造体読みたいんだけど読めない
初期値が知りたいんだけど どうしたらいいかな

30 :デフォルトの名無しさん:04/09/28 00:15:45
>>22
ほぉ〜、このレベルの方がここにいたとは。ちょっと驚いた。

ワームを書く際によく用いられるチッキングという技術をyahooってみなよ

31 :デフォルトの名無しさん:04/09/28 05:59:27
長文ってだけでは。

32 :デフォルトの名無しさん:04/09/28 08:50:25
>>31
確かに聞いてる時点で>>22のネットワークプログラムのレベルは低いだろうけど、
『何を疑問に思っているのか』とか『何をしたい』とかそういう部分での
向上心?というか知識欲という部分ではレベル高いんじゃない?

そして、>>22に対する的確な回答を誰もしていない時点で
このスレの住民のレベルが知れてる・・・
勿論、俺も含めてだけどな。

33 :デフォルトの名無しさん:04/09/28 09:28:54
いや、別にいいんじゃない?
パケットは割れることあるし
ケツの片割れが先についても
頭が来るまでプールされるし
そのための背番号ついてるし

34 :デフォルトの名無しさん:04/09/28 10:36:49
>>32
基本的なところで知識の詰め込みが足りません、という気がするけど。
>>22はComerの本でも読みなさい、ってことで。


35 :デフォルトの名無しさん:04/09/28 11:41:43
> そして、>>22に対する的確な回答を誰もしていない時点で
> このスレの住民のレベルが知れてる・・・

あまりにも当たり前のことを聞いてるので誰も答えてないのかと。


36 :デフォルトの名無しさん:04/09/28 14:10:10
>>35
その返し方って、答えられない奴がよく使う方法だよね。
質問の仕方がアレな訳じゃないし、知ってるなら答えてやっても良い気がする。

俺?俺はその部分知らないから答えられないや。
仕事だとDLL化されたモジュールから呼んでるだけだから、
中身のロジック(アルゴリズム)なんてシラネ。

37 :デフォルトの名無しさん:04/09/28 14:16:45
22=30=32=36

38 :デフォルトの名無しさん:04/09/28 14:22:45
>>32
んなこたないって。
知識欲があるなら「TCP 仕組み」とかでググって、セグメントという重要な言葉くらいは見つけてくるはずだし、
IPパケットのフラグメント化とTCPデータのセグメント分割の区別のつかないような質問の仕方はしないはず。

39 :デフォルトの名無しさん:04/09/28 15:23:48
答えられない奴の常套句
「ググったほうが力になる。」

40 :マイク ◆yrBrqfF1Ew :04/09/28 15:45:44
googleした方が力になる。間違いない。

41 :デフォルトの名無しさん:04/09/28 23:18:26
だったら、こんなスレッドもMLも必要なくね?

42 :デフォルトの名無しさん:04/09/28 23:47:33
>>41
リソースの無駄だな。
過去スレ含めて削除したほうが良い。

43 :デフォルトの名無しさん:04/09/28 23:47:41
検索で探すのはね、結構時間のかかるものなのよ。
技術関連の情報なら、半日くらい直ぐに飛んでいく。

まあそれでも、90%位はそれで済ませてるが。

44 :デフォルトの名無しさん:04/09/29 00:43:42
素直に本買えと


45 :デフォルトの名無しさん:04/09/29 15:28:45
inet_ntoaとかの戻り値は、deleteしないでもいいんですよね

46 :デフォルトの名無しさん:04/09/29 15:39:23
当たり前だろ

47 :45:04/09/29 15:45:08
ごめんなさい

48 :デフォルトの名無しさん:04/09/29 19:24:02
ここはネスペも持ってない人ばかりですねw

49 :デフォルトの名無しさん:04/09/29 19:40:19
>>48
いつ取ったの?

50 :デフォルトの名無しさん:04/09/30 12:48:27
ネスペってのは Netscape の略


51 :デフォルトの名無しさん:04/09/30 12:59:40
>>49
なんでそんなことを聞くんだい?


52 :デフォルトの名無しさん:04/09/30 13:28:20
>>51
もう存在しない資格を取れと言われても……と思っただけだよ。

53 :デフォルトの名無しさん:04/09/30 15:01:35
なーんだ。しょうもな。そんな返しかよ。もう見飽きた。

54 :デフォルトの名無しさん:04/09/30 15:19:44
>>53

55 :デフォルトの名無しさん:04/09/30 15:21:40
つーか、ネスペレベルの知識もないやつばっかりだなと思った。

56 :49:04/09/30 15:37:13
>>51
何歳で取ったのか気になったのです
参考にしたいので教えてください

57 :デフォルトの名無しさん:04/09/30 15:45:57
なんでそんなことが聞きたいんだ?
俺が持ってるのはテクネだぞ。
でも、ネスペのほうがかっこいいだろ。
じじいよばわりしたいのか?俺は若いぞ。

58 :デフォルトの名無しさん:04/09/30 15:49:37
プログラマーも免許制にするべきだな。

59 : ◆cReQ1pJtI. :04/09/30 18:42:03
間違ってUNIXスレに書いてしまったんですが、移動してきました。

FTPクライアントのサブセットを作成していますが、
コマンドに対する応答の終了をどのように判断したらいいのか
悩んでいます。
多くのコマンドは1行の応答のようなので、その場合は改行を
見ればいいと思いますが、なかには複数行返ってくるものも
あるし、RFCにも複数行処理しろと書いてあります。

コマンドを送って、応答を待って、次のコマンドを送って、、

ってやれれば簡単でいいなと思ってるんですが、そのためには
応答の終了を知る必要があると思います。
回線状況が悪い場合も想定したいので、タイミングでの処理は
避けたいと思っています。

よろしくお願いします。

60 :デフォルトの名無しさん:04/09/30 18:47:11
ここでも読めば
http://x68000.startshop.co.jp/~68user/net/ftp-4.html

61 : ◆cReQ1pJtI. :04/09/30 18:54:34
>>60
ありがとうございます!!
すごく参考になりました。

62 :デフォルトの名無しさん:04/10/01 03:28:31
http://pc.2log.net/logic/archives/blog66.html
こんなんみつけたけど、コレって使えるのか?穴だらけの気がするんだが。

63 :デフォルトの名無しさん:04/10/01 04:42:38
ネタだろどうみても

64 :デフォルトの名無しさん:04/10/01 05:27:47
2chのdatを取得する際の判断として
HEADを見るようにしようとしてたのですが、
どうもdatによってヘッダ情報のパラメータがあったりなかったりするようなのですが、
なぜなのか分かる方いませんか?

例)
http://pc5.2ch.net/tech/dat/1095479831.dat

HTTP/1.1 200 OK

Date: Thu, 30 Sep 2004 20:20:32 GMT

Server: Apache/2.0.48 (Unix) PHP/4.3.4 mod_ssl/2.0.48 OpenSSL/0.9.7c

Last-Modified: Thu, 30 Sep 2004 17:13:29 GMT
ETag: "496df-1a469-cc126040"

Accept-Ranges: bytes

Vary: Accept-Encoding

Content-Encoding: gzip

Connection: close

Content-Type: text/plain

↑このヘッダ例では、なぜかContent-Lengthが含まれていない

65 :デフォルトの名無しさん:04/10/01 05:30:13
こちら場合はContent-Lengthがあります。
ほとんどの場合はこちらです。
pc5.2ch.net/tech/dat/1095583235.dat

HTTP/1.1 200 OK
Date: Thu, 30 Sep 2004 20:20:31 GMT
Server: Apache/2.0.48 (Unix) PHP/4.3.4 mod_ssl/2.0.48 OpenSSL/0.9.7c
Last-Modified: Thu, 30 Sep 2004 00:52:11 GMT
ETag: "4972f-6904-16ab64c0"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 9495
Connection: close
Content-Type: text/plain

66 :デフォルトの名無しさん:04/10/01 05:31:20
すみません、>>64こっち余計な改行入ってしまいました。

67 :デフォルトの名無しさん:04/10/01 05:48:31
ちなみに要求側はこうしてます
HEAD $uri HTTP/1.1
Accept-Encoding: gzip
Host: $host
User-Agent: Monazilla/1.00 (test)
Connection: close

68 :デフォルトの名無しさん:04/10/01 10:31:09
>>64
mod_deflateの仕様です。
datのサイズが大きいとContent-Lengthが付かなくなります。
したがって付いたり付かなかったりする可能性をあらかじめ
想定してコードを組むしかありません。

69 :デフォルトの名無しさん:04/10/01 10:34:49
>>67
Accept-Encoding: gzipを外せ

70 :デフォルトの名無しさん:04/10/01 10:54:54
それじゃ無駄に転送量増える

71 :デフォルトの名無しさん:04/10/01 11:13:46
>>68
うーむなるほど。

鯖側ではある程度のサイズからdat.gzに圧縮しているということで、
dat.gzのContent-Lengthを表示しても dat.gzじゃない他のファイルや、
datからdat.gzに切り替わった時などのサイズ比較には使えないから
敢えてContent-Lengthをヘッダに含めなくしている。

ということでしょうかね・・・ん?違うかな

72 :デフォルトの名無しさん:04/10/01 12:17:19
>>71
全然違う。
dat.gzの場合Content-Lengthは圧縮後のサイズになる(これはHTTPの
仕様)。
mod_deflateはメモリ上で一度にすべて圧縮できなかったとき、
圧縮後のサイズをその場で計算できないので
仕方がないからContent-Lengthなしで送り出す。
HTTP/1.1なんだからchunkedエンコーディングで送ってくれても
よさそうなもんだが

73 :デフォルトの名無しさん:04/10/01 12:53:39
ネットワークプログラミングの話題かどうか微妙なんですが、
javaMailって使えないって噂はほんとですか?

74 :デフォルトの名無しさん:04/10/01 13:14:05
>>72
その辺の話からすると、gzip を Accept して HEAD 要求するのって
そこそこCPUに厳しい処理っぽいような気がするけど、あってる?

75 :デフォルトの名無しさん:04/10/01 14:05:22
>>73
そういうのはレイヤが違います。
メーラ開発スレ(あるのか?)とかjavaスレへでもいってください。



76 :デフォルトの名無しさん:04/10/02 08:52:50
>>70
無駄とは思えないが

77 :デフォルトの名無しさん:04/10/02 09:10:35
>>76
理由は?

78 :デフォルトの名無しさん:04/10/02 09:15:18
>>77
圧縮の手間を省ける

79 :デフォルトの名無しさん:04/10/02 09:43:47
>>78
ttp://megumi.delta-z.org/~yajiman/no-heavy/flash/unix.swf
見たこと無いのかな

80 :デフォルトの名無しさん:04/10/02 10:24:13
>>30>>22よりかなり馬鹿なことは判った。

>>22はカマー本読んでTCP/IPの基本的なところを勉強してね。
プログラミングスキルは問題ないみたいだから。
ちなみにあなたの懸念は的中です。順番さえね…

81 :デフォルトの名無しさん:04/10/02 13:01:09
>>74
HEADで更新チェックしてるから負荷は小さいはずというのは
あまりなりたたないね。
つーか更新チェックならAccept-Encoding: gzipすべきでないってことか

82 :デフォルトの名無しさん:04/10/03 00:36:12
>>80
Comerの本を読めというのがとっくに既出なのに今頃出てきて何言ってんだ……。



83 :デフォルトの名無しさん:04/10/03 00:51:06
>>82
みんな無視してるのに今頃出てきて何言ってんだ……。

84 :デフォルトの名無しさん:04/10/03 13:54:56
80から82はまだそれほど時間たってないだろ。
ヒキコモリ>>83的には半日もあれば既に誰もがスレチェックずみなのかも知れんが。


85 :デフォルトの名無しさん:04/10/03 14:40:59
粘着かよ

86 :デフォルトの名無しさん:04/10/05 15:22:16
せめてageろ

87 :デフォルトの名無しさん:04/10/05 18:30:55
仮想ストレージに関する提案。

ストレージはデータの保存要求を受け付けるとすぐさま
ネットワーク上の別のストレージへデータを転送する。

この要求を受け付けた別のストレージは、すぐさま
ネットワーク上の別のストレージへデータを転送する。

これを繰り返すことでデータはストレージではなくネット上に配備されることになる。

即ち、受け付けるデータ分のメモリーがあれば、無限の仮想ストレージを構築できる。

偉大なるネットワークに感謝。

88 :デフォルトの名無しさん:04/10/05 20:34:06
suretigai

89 :デフォルトの名無しさん:04/10/05 20:43:47
MFCのCAsyncSocketを用いて
ソケット通信プロセスを作っています
サーバ、クライアント両方からsend()すると
両者の送信タイミングはかなりずれてるのに
遅れてsend()したソケットは
自分が送信したあとでないと受信しない現象が発生します
どうしてでしょうか?
よきアドバイスをよろしくお願いします。

90 :デフォルトの名無しさん:04/10/05 20:50:18
>>89
ストリーム型でかつ即座に送信すべきデータが流れるソケットならば、
ソケットトオプションでTCP_NODELAY あたりを指定してみては?

91 :デフォルトの名無しさん:04/10/06 12:42:27
テンプレに挙げられてる「WinSock2.0プログラミング」が絶版のままなんですけど、
和書でこれに代わる様なものはないのでしょうか?

92 :デフォルトの名無しさん:04/10/06 12:44:00
>>91
http://pc5.2ch.net/test/read.cgi/tech/1089492835/

93 :デフォルトの名無しさん:04/10/06 18:05:41
MFCのCAsyncsockを用いてソケット通信を行っています。
1対1の通信で、サーバがメッセージを投げそれの返信を
クライアントが返す通信を10msec間隔で繰り返しています
このときランダムに(強いて言えば3万トランザクションに1回)、
どちらかで200強msecの送信か受信遅延が発生しているようです
どうしてでしょうか?
心当たりのある方、お助けください。

94 :デフォルトの名無しさん:04/10/06 18:14:59
そんなもんだ

95 :デフォルトの名無しさん:04/10/06 18:36:55
MFCのCAsyncSocketを用いて
ソケット通信プロセスを作っています
今度はサーバからsend()でメッセージを送信し
クライアントはそれに対してsend()で返信します
これを10msec間隔でおこなっていますが
30000回に1回くらいのわりあいで
どちらかの送信または受信遅延が発生します
どうしてでしょうか?
よきアドバイスをよろしくお願いします

96 :デフォルトの名無しさん:04/10/06 19:28:33
>>94
そんなもんなんですかね〜
あ〜何とかなりませんかね〜
どうも受信遅延が怪しいのですが・・・

97 :デフォルトの名無しさん:04/10/06 19:31:55
まあええことよ

98 :デフォルトの名無しさん:04/10/06 19:44:32
>>96
プロトコル設計の段階で道を誤っていると思われ。

99 :デフォルトの名無しさん:04/10/06 20:04:30
そもそもネットワーク技術を正しく理解していないような気がするが。


100 :デフォルトの名無しさん:04/10/06 22:36:47
> MFCのCAsyncsockを用いて

今時何故…
こんなの考える気力も起きない…

101 :デフォルトの名無しさん:04/10/07 16:48:46
>>95
リアルタイム制御系かあるいは音声かVideoを載せてるか、どっちかか?

10msec間隔で送受信するような処理をMFCで実装しようとしてる時点でDQN決定!
遅延が許容できないのならwin32のWSAEventSelectでも使え、
ってwinsockの専門書に英語で書いてあるぞ。


102 :デフォルトの名無しさん:04/10/07 17:01:32
>>95
MFC/非MFCを問わず、Winsock2 のメッセージベースの非同期ソケットはメッセージポンプが
何らかの事情で滞ると、ネットワークの状況に関わらず遅延が生じてしまう。

専任のスレッドで select で待つか、I/O コンプリーションポート(ReadFileでコンプリーション
ルーチンを指定する)のが吉。

103 :101:04/10/07 18:09:20
>>102
I/O コンプリーションポート、最高パフォーマンスだが難しくねか?
オイラまだキッチリ実装されたサンプルソース見たことねえ
あれば教えてくれ

104 :デフォルトの名無しさん:04/10/07 18:51:58
>>103
難しいっていうか面倒なだけのような。トライアンドエラーとかしたくないコードになるし・・・
漏れは結局同期IOでプロトタイピングしてデバグ済ませて状態遷移を整理したうえで、
あらためてIOコンプリーションポートで実装しなおした。

IO Queueing とか企むとプログラムに不要な複雑さが増して死ねそうだったので、
結局パフォーマンスは出ていない模様(w

ところで .NET Framework では、メッセージベースじゃなくてI/Oコンプリーションポートの
方が非同期IOの基本になってるけど、皆これ使うかなぁ・・・


105 :デフォルトの名無しさん:04/10/07 23:45:48
サーバ側のrecvの返値が、クライアントから送ったデータのサイズになりません。
つまり全部送られてきていないみたいなんです。
どういう原因が考えられますでしょうか。

106 :デフォルトの名無しさん:04/10/07 23:46:56
>>105
まだデータが残っている。

107 :デフォルトの名無しさん:04/10/07 23:47:03
>>105
それは正常な動作です。
ソケットプログラミングの入門書でも読みましょう

108 :デフォルトの名無しさん:04/10/07 23:48:17
>>106
どこに?何の?

109 :デフォルトの名無しさん:04/10/07 23:52:10
ひょっとして何回もrecvする必要があるんですか?
いちおう、受信バッファのサイズは十分とっているんですが。

110 :デフォルトの名無しさん:04/10/07 23:54:30
>>109
だから>>1-のリンク見ろよ

111 :デフォルトの名無しさん:04/10/07 23:55:18
>>109
あたりまえだ

112 :デフォルトの名無しさん:04/10/08 00:25:49
結局あなたたちは、質問してきた初心者をバカにすることしかできないんですね。

113 :デフォルトの名無しさん:04/10/08 00:38:20
>>112
どの書き込みの人がバカにしているの?

114 :デフォルトの名無しさん:04/10/08 00:39:21
ばーか ばーか

115 :デフォルトの名無しさん:04/10/08 00:41:54
>>105
今どきIPv6経由しないネットがあると思うか?

116 :デフォルトの名無しさん:04/10/08 04:51:01
そりゃあるだろ。
第一IPv6と>>105は全く関係ないぞ。


117 : ◆FIcNi4f8js :04/10/08 10:01:06
パケット分割されないようにオプション付けて送信すれば?

118 :デフォルトの名無しさん:04/10/08 10:03:47
>>117
どうやって?

119 :デフォルトの名無しさん:04/10/08 10:36:31
>>112
というか「FAQ読め」と思う。

ネットワークの世界では自分の都合だけでAPIを決められないから、
>>109なんてことは当たり前にある。初心者がどれだけ不合理に思っても。
それを理解するのがネットワークプログラミングの始まり。

120 :デフォルトの名無しさん:04/10/08 12:07:19
マルチクライアントのサーバーを作ってるんですが、
recvの返値が0という方法以外ですべてのデータが送られたことを確認するには
どうしたらいいのでしょうか。

121 :デフォルトの名無しさん:04/10/08 12:09:08
最初にレングスを送る

122 :デフォルトの名無しさん:04/10/08 12:12:06
それだな

123 :デフォルトの名無しさん:04/10/08 12:17:44
やっぱり長さの情報を送るのがベストですか。
何か良い関数があればと思ったのですが・・・。
ともかくありがとうございました。

124 :デフォルトの名無しさん:04/10/08 20:55:36
MFCで、FTP受信をする以下の様なテストプログラムを作成したのですが
実際のファイルサイズよりも、かなり少ないサイズが表示されてしまいます。
正しいファイルサイズを表示させるにはどの様にすればよいのでしょうか?

CInternetSession IntSession("Test");
CFtpConnection *pFtpCon;
CInternetFile *pFile;

pFtpCon = IntSession.GetFtpConnection("ServerName", "UserName", "Password");
pFtpCon->SetCurrentDirectory("CurrentDirectory");
pFile = pFtpCon->OpenFile("FileName", GENERIC_READ);

TRACE("size = %u\n", pFile->GetLength());

pFile->Close();
if(pFile != NULL){ delete pFile; }
IntSession.Close();

125 :デフォルトの名無しさん:04/10/08 23:47:11
放置されているのでage

126 :デフォルトの名無しさん:04/10/09 00:32:42
> かなり少ない
ってどのくらいよ?


127 :124:04/10/09 00:47:30
>>126
え〜と、例えば1MB超えるようなデータでも 16824バイトと表示されてしまいます・・
というより、16824バイト以上のファイルは必ず、16824バイトになってしまいます。
FFFTPで見てみると、正しいサイズが表示されていますので、プログラムの問題だと思うのですが・・

128 :デフォルトの名無しさん:04/10/09 00:52:30
結局あなたたちは、質問してきた初心者をバカにすることしかできないんですね。

129 :デフォルトの名無しさん:04/10/09 00:59:24
結局あなたは、自分で一つも調べようとしないんですね。

130 :124:04/10/09 01:01:46
>>128
自分は皆が呆れるほど、何か根本的な部分で間違いを犯しているのでしょうか?
本当にわからないので、何方かご教示して頂けるとありがたいのですが・・

131 :デフォルトの名無しさん:04/10/09 01:04:03
>>130
1MB分受信できているの?

132 :124:04/10/09 01:04:12
ちなみに、>>125で上げたり、途中でちゃちゃ入れたりしているのは自分ではないです。

133 :131:04/10/09 01:04:43
受信はしていないのか。

134 :デフォルトの名無しさん:04/10/09 01:05:44
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_cftpconnection.3a3a.openfile.asp
と書いてあるけど、どうなん?

135 :デフォルトの名無しさん:04/10/09 01:05:49
レスが早くつくようにageてやったのに、なんだその言いぐさは・・・

136 :デフォルトの名無しさん:04/10/09 01:06:45
ageてやったのにだって( ´,_ゝ`)プッ

137 :124:04/10/09 01:06:49
>>131
OpenFile()の時点で受信しているのではないのですか?

138 :デフォルトの名無しさん:04/10/09 01:11:31
>>134を読め

139 :デフォルトの名無しさん:04/10/09 01:12:05
MSDN> アプリケーションは OpenFile を使ってファイルを開いてから、
MSDN> CInternetFile::Read を使用します。


140 :124:04/10/09 01:18:25
>>135
すみません・・ 上げて頂いたお陰でレスが付いた事は感謝しています。

>>134
Read(), Write(), Close(), FindFile() 以外呼べないんですか・・・
ではファイルサイズはどうやって取得するのでしょうか?

ちょっと、またテストプログラム書いてから来ます。

141 :デフォルトの名無しさん:04/10/09 01:21:31
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/vcrefcinternetfilegetlength.asp
まあこれを見る限りではファイルサイズを得るには>>124でいいみたいだけど(%uを使っているのは別として)

142 :デフォルトの名無しさん:04/10/09 01:55:35
サーバがSIZEコマンド対応してないか、
ls -lの結果がCFtpConnectionでパーズ出来ない形式なんだろう。

別のサーバで試してみたら?
いずれにせよ、ftpでファイルサイズが必ず取得できると
仮定したプログラムはまずい。サーバ固定でないのなら。

143 :124:04/10/09 02:34:14
>>142
なるほど! 勉強になりました!
要するに、FTPではサーバによってはファイルサイズが取得出来ないという事ですね。

ファイルサイズが取得出来ないので、カッコ悪いですが、こんな感じにしました。
char tmp[128];
DWORD size;
vector<char> buf;
while(size = pFile->Read(tmp, sizeof(tmp))){
for(int i = 0; i < size; ++i){ buf.push_back(tmp[i]); }
}

144 :デフォルトの名無しさん:04/10/09 03:38:53
だせー

145 :デフォルトの名無しさん:04/10/09 03:47:39
>>144
スマートな方法ありますか?

146 :デフォルトの名無しさん:04/10/09 03:56:12
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vclib/html/_mfc_cftpfilefind.asp
こんなのは?

147 :デフォルトの名無しさん:04/10/09 08:12:09
>>124
また荒しが粘着しているみたいなんで放置。

148 :デフォルトの名無しさん:04/10/09 12:52:50
147=某スレの88

149 :デフォルトの名無しさん:04/10/10 18:29:35
すみません。質問させてください。
ネットワークプログラミングっていうのは、一番上の層での話ですか?
業務
〜〜〜〜〜
基盤
〜〜〜〜〜
ネットワーク
って感じで層構造になっているじゃないですか?
それの一番上の層での話ですか?

150 :デフォルトの名無しさん:04/10/10 18:37:15
OSIの下の方

151 :デフォルトの名無しさん:04/10/10 18:47:43
え?下の方?
情報システム板で聞いたら、ネットワークエンジニアはOSIの下層をやるから
プログラミングなんて関係ない、と聞いたのですが・・・。

152 :デフォルトの名無しさん:04/10/10 18:49:37
それはネットワークエンジニアの話だろ

153 :デフォルトの名無しさん:04/10/10 18:51:07
>>151
くだらん事に頭使うヒマがあったら仕事しろ

154 :デフォルトの名無しさん:04/10/10 18:51:51
>>152
はい。ネットワークエンジニアのことです。
初心者ですまそ。

155 :デフォルトの名無しさん:04/10/10 18:52:29
とりあえずソケット使ってれば
ネットワークプログラミングしてるって言えなくも無い

156 :デフォルトの名無しさん:04/10/10 18:52:53
いや、来年就職活動です。
業務系・基盤系・ネットワーク系のどれが自分にあってるのか、模索してます。

157 :デフォルトの名無しさん:04/10/10 18:54:02
あんまり厳密にわけなくても・・
大きくない会社だとなんでもやらされるし

158 :デフォルトの名無しさん:04/10/10 18:56:13
>>156
なんにしろ、プログラマー板でやれよ

159 :デフォルトの名無しさん:04/10/10 18:56:36
>>151
下の層だからプログラミング関係ないという事はないだろ。
スイッチングHUBだってソフトウェアで動いているんだから。

機械のお守りするだけの人ならプログラミングは必要ないけどね。

160 :デフォルトの名無しさん:04/10/10 18:58:53
>>149
一番上は political or religious layer だろ。

161 :デフォルトの名無しさん:04/10/10 19:02:23
>>160
この馬鹿野郎が

162 :デフォルトの名無しさん:04/10/10 19:04:21
どこにでもいるんだな、>>160のように空気の読めない奴が。


163 :デフォルトの名無しさん:04/10/10 19:13:51
すみません。最後に一つだけ。
では、ネットワークエンジニアだったら、プログラミングはあまり関係ないということですか?

164 :デフォルトの名無しさん:04/10/10 19:16:20
情報システム板に行け。あそこは就職情報の板だから。
http://science3.2ch.net/infosys/

165 :デフォルトの名無しさん:04/10/10 19:16:41
ネットワークエンジニアは大雑把に分けて
1. ソフト(プログラム)を作る人
2. ハードを作る人
3. 1.2.を設置・運用する人
に分類されていてプログラミングをするのは1.の人だけ。
だから仕事によってはプログラミングする。

166 :デフォルトの名無しさん:04/10/10 19:19:59
>>165
ありがとうございます。ネットワークの設計・構築・運用をやってみたいと思っています。
ということは3.ですね。
みなさん、お邪魔しました。どうも!

167 :デフォルトの名無しさん:04/10/10 19:23:21
1.2.は通信機器を開発してる人ってこと?
で、3.がNEか。

168 :デフォルトの名無しさん:04/10/10 19:46:45
1.2.はあまりネットワークエンジニアとは呼ばないんじゃ?

169 :デフォルトの名無しさん:04/10/10 19:54:13
>>168
あくまでも、ネットワーク関連に携わる人の種類、ってことだろ。

170 :デフォルトの名無しさん:04/10/10 19:54:49
れんさば屋は3か

171 :デフォルトの名無しさん:04/10/10 20:00:08
>>170
サーバ管理者であって、ネットワークエンジニアじゃないだろ。

172 :デフォルトの名無しさん:04/10/10 20:04:27
ネットワークエンジニアの定義がわからん
つーかスレ違いsage…

173 :デフォルトの名無しさん:04/10/10 20:05:10
プログラミングってキーワードを出しまくってる割に選ばなかったってことは、
>>166は苦手なんだな

174 :デフォルトの名無しさん:04/10/10 20:09:55
>>173
再び参上。

そうなんです。苦手というか興味がないというか。


175 :デフォルトの名無しさん:04/10/10 20:12:30
>>174
どうでもいいから、ここから立ち去れ。

176 :デフォルトの名無しさん:04/10/10 20:19:40
話を振ってきたから再び書き込んだのに・・。
ウワアア━━━━━(`Д')━━━━━ ン ...

177 :デフォルトの名無しさん:04/10/10 21:17:56
うざ……

178 :デフォルトの名無しさん:04/10/11 02:56:43
ネットワークの設置やら保守なんてつまんなそう。
ソフト書くほうがよっぽどいいと思うが。

179 :デフォルトの名無しさん:04/10/11 03:01:53
床下に潜ってUTPケーブル這わせるだけでPGと同程度の給料がもらえます。
残業もほとんど無いし。

180 :デフォルトの名無しさん:04/10/11 05:16:36
だな

181 :デフォルトの名無しさん:04/10/11 13:28:40
WAN内でウィルス蔓延して、L3スイッチが高負荷で落ちて休日出勤とか、
SNMPマネージャのバグで基幹系ルータの設定がぐちゃになって、
ルータメーカのエンジニアとマシン室で一夜を明かしたり。

182 :デフォルトの名無しさん:04/10/11 13:49:26
PGよりマシだな

183 :デフォルトの名無しさん:04/10/11 15:09:07
>>179
そういうのの作業マニュアルを書く人を
おれはこの世で3番目くらいに尊敬する

184 :デフォルトの名無しさん:04/10/11 15:45:58
>>183
たいてい既存のドキュメントの切り貼りなんでつまんねーよ。
具体的には、コーディングが終わった後で作る納品用仕様書の次につまらない。

実際に作業するのはど素人だったりするんで、図解入れたりしてやらないと
いけないのは面倒だが。

185 :デフォルトの名無しさん:04/10/11 21:37:19
>>184
そうか・・・
マニュアル作成能力はオレには実装されてない機能だったから
あこがれてたんだよ

186 :デフォルトの名無しさん:04/10/12 18:40:18


187 :デフォルトの名無しさん:04/10/13 18:50:46
初心者です
FreeBSDを入れたPCにNICを2枚差して、ルーターではなく
サーバーAとサーバーBのクライアント(データーの受取)として
動作させたいんですが、socket()以下の書き方が判らずnetを探して
も、例がなくて困っております。
どなたかご教授願えませんか?

188 :デフォルトの名無しさん:04/10/13 19:09:07
>>187
bind()で、INADDR_ANYでbindするのではなく、
それぞれのインターフェイスについてるアドレスでbindすれば良い。

189 :デフォルトの名無しさん:04/10/13 19:57:35
>>188
なーんだ、ってとこです。
1週間悩んでいましたが、、、周りに詳しいのが
いないもんで。(中小企業)
ありがとうございました。


190 :デフォルトの名無しさん:04/10/13 20:10:47
APUE買いなさい。


191 :デフォルトの名無しさん:04/10/14 00:19:16
>>189
ソースを読め、ソースを。
ソースは君のお友達だよ!
いつでも君を待っている。

192 :デフォルトの名無しさん:04/10/14 02:32:21
二言目にはソースを読めなんていってるけど
ソースを読んで理解できる程度の知識があるなら
こんなところで質問しないと思うが・・・

193 :デフォルトの名無しさん:04/10/14 02:49:38
>>192
知識の問題じゃない。
理解しようという努力を怠ってるだけだ。

194 :デフォルトの名無しさん:04/10/14 08:06:17
>>189はそうじゃないだろ。


195 :デフォルトの名無しさん:04/10/14 11:17:12
bindが何の為にあるのかという意味を・・・

196 :デフォルトの名無しさん:04/10/14 11:46:16
確かに質問スレでソースを読めなんていうレスは要らない罠。

197 :デフォルトの名無しさん:04/10/14 16:37:26
ソースを読めば解決する質問もいらない

198 :デフォルトの名無しさん:04/10/14 17:01:37
ソース読んで解決しない問題とは?このスレいらないじゃん

199 :デフォルトの名無しさん:04/10/14 17:17:48
ソースに間違いが無いとは限らない。

200 :デフォルトの名無しさん:04/10/14 17:28:17
ちゃんとドキュメント書けよ

201 :デフォルトの名無しさん:04/10/14 17:29:28
ERROR:もうちょっと落ち着いて書きこみしてください。8秒ぐらい。


ホストnanashi.net

名前: デフォルトの名無しさん
E-mail:
内容:
201げっと

202 :デフォルトの名無しさん:04/10/15 06:36:46
引きこもってソフトウェアのソース読んでるようなヲタクばかり
じゃないんだから・・・
いやいややらされてる身にもなれ

203 :デフォルトの名無しさん:04/10/15 09:30:31
仕事としてベストを尽くせないやつはゴミ

204 :デフォルトの名無しさん:04/10/15 09:49:28
>>202
辞めるのは自由ですよ。

205 :デフォルトの名無しさん:04/10/15 16:28:32
嫌々やってるとストレス溜まるし、コルチゾールやインスリンが過剰分泌されて
肥満になったり鬱になったりするんだよね。 
その先には、生活習慣病や免疫力低下、更には発癌が待ってる。

楽しめないなら早めに見切って転職するのが吉かな

206 :デフォルトの名無しさん:04/10/15 23:40:17
>>191だ、ちょっと待ってくれ。
ソースって言ったのは>>189

> 1週間悩んでいましたが、、、周りに詳しいのが
> いないもんで。(中小企業)

って言ったからだ。毎回掲示板じゃ面倒だから、
ソースも読めるようになった方がいいだろ?

俺を置いてきぼりにして荒れないでくれ。


207 :デフォルトの名無しさん:04/10/17 02:19:06
宿題でUDPでTCPのようにエラー処理をし、相手に確実にデータを送れるようにしなさい。
と言うのが出ました。
Winsockを使い、5秒でタイムアウトするまで送れるようにし、タイムアウトするとエラーを返すようなのを組む問題です。

どのようにすればいいのでしょうか?
CRCチェックをするにも、そのチェック情報自体のチェックが必要だと思われますし・・・
フラグで破損の場合、破棄するようにしても、相手に届いたかどうかのチェック自体が届かない場合の処理などなど
どのように解決するとスマートに出来るのでしょうか?

宜しくお願いします。


208 :デフォルトの名無しさん:04/10/17 02:20:49
>>207
がんばれ。

209 :デフォルトの名無しさん:04/10/17 02:40:10
>>207
それはだね、UDPを使ってTCPを自力で実装しなさいという事なので、
>>1以下にあるリンクや本を漁れという、辛い修行なのだよ

210 :207:04/10/17 03:10:13
>>209
マジですか・・・
そんなに大変だったのですが・・・。

どうりで一ヶ月も期間をくれたわけか・・・
早くから手を付けといてよかった・・・。
危うく提出五日前辺りから手を付けて泣きを見る所でした。。。


211 :デフォルトの名無しさん:04/10/17 03:36:07
一番手っ取り早いのが、データをブロック単位に分けて
それらのチェック用データを先に相手側へ転送
相手側がチェック用データを要求する形でブロック単位で転送していく
相手側は要求したデータが来るまで要求し続ける。
最後に相手側が転送完了データを送信側に送って来た時点で、送信側のバッファを開放する。
そのデータが来なかった場合、タイムアウト時間を過ぎれば強制的にエラー吐いてタイムアウトを出せば良い。

受信側も要求したデータがいつまでたっても来なかった場合はタイムアウトを出す。


212 :211:04/10/17 03:38:05
付け足し。

送信先にデータが届いており、送信側に完了データが届かずにタイムアウトしたとして
プログラム側から再度データを送ろうとした時は、受信側はずっと完了データを送り続けるようにする。


213 :デフォルトの名無しさん:04/10/17 04:14:51
>それらのチェック用データを先に相手側へ転送

このデータが壊れてたり届かなかったときは?

214 :デフォルトの名無しさん:04/10/17 04:24:13
>>213
相手からの要求が来なければタイムアウトだから、その場合はタイムアウトでしょ


215 :デフォルトの名無しさん:04/10/17 05:16:20
>>207
>CRCチェックをするにも、そのチェック情報自体のチェックが必要だと思われますし・・・
一致しなければデータとCRC共に間違ってるとして扱えばいい

216 :デフォルトの名無しさん:04/10/17 05:32:05
そもそもUDPってフラグ指定でデータ化けしたら破棄するから
届くか届かないかしかないんじゃないかね?


217 :デフォルトの名無しさん:04/10/17 07:51:42
宿題なんだから自分で考えないと意味無いじゃん。
教えたがりもいいけどさ。

218 :デフォルトの名無しさん:04/10/17 07:56:52
しかも>211はセンスが悪い。

219 :デフォルトの名無しさん:04/10/17 09:23:14
>>218
じゃあセンスの良い方法を挙げてみろよ。


220 :デフォルトの名無しさん:04/10/17 09:59:40
http://pc5.2ch.net/test/read.cgi/tech/1095075678/981-982

221 :デフォルトの名無しさん:04/10/17 10:08:37
>>216
それと、パケットの到達順序くらいか。
UDP使ったことないんで、普通の状態で順番の入れ替わりが
おきるのかどうか知らんけど。

222 :デフォルトの名無しさん:04/10/17 11:06:06
おきまくり

223 :デフォルトの名無しさん:04/10/17 12:15:21
ネタにマジレスするのもあれだけど、
おきまくりだったな。
ローカルでやってもおきた。

224 :デフォルトの名無しさん:04/10/17 16:47:17
>>207
>211のように横着すると,このようにネタにされるわけです。

ちゃんと,>>1以下のリンクや本漁れよ〜。

225 :デフォルトの名無しさん:04/10/17 17:48:38
手間かかる割に意味のない課題だな

226 :デフォルトの名無しさん:04/10/17 18:02:53
車輪の再発明だしな('A`)

大昔の資料だけどこんなのが役に立つんでね?
ttp://www.st.rim.or.jp/~phinloda/proto.html

227 :デフォルトの名無しさん:04/10/17 18:05:28
届かないとか壊れたりとかならまだマシだが、順序が変わるのはめんどくさい

228 :デフォルトの名無しさん:04/10/17 18:14:10
問題は順序だな・・・


229 :デフォルトの名無しさん:04/10/17 18:19:50
プールしてソートすればいいだけ

230 :デフォルトの名無しさん:04/10/17 18:21:38
>>229
・・・・は?何を基準にソート?

231 :デフォルトの名無しさん:04/10/17 18:23:54
送るデータそのものに番号も付加しとけば良いだけじゃない?


232 :デフォルトの名無しさん:04/10/17 18:25:46
そんな簡単な物だったら誰も何も言わないわな

233 :デフォルトの名無しさん:04/10/17 18:27:53
なんの基準もなしに並べ替えたいなら超能力でも使っとけ。

234 :デフォルトの名無しさん:04/10/17 18:29:22
>>233
そういう問題で言ってるんじゃないだろう。
まあやってみなよ。

235 :デフォルトの名無しさん:04/10/17 18:30:29
何の説明もなしに脳内問題を持ち出されても意味わからん。

236 :デフォルトの名無しさん:04/10/17 18:32:07
問題 >>207

237 :デフォルトの名無しさん:04/10/17 18:34:57
お前が何を問題にしているのかと聞いてるんだが。
ID仕込んで何がまずいんだ?

238 :デフォルトの名無しさん:04/10/17 18:39:17
>>237
IDしこんだだけじゃ無理だろ

239 :デフォルトの名無しさん:04/10/17 18:40:08
実際にやってみればすぐに。

240 :デフォルトの名無しさん:04/10/17 18:49:42
本当にそんな難問が宿題なのかよ。
俺だったら月60万で2ヶ月もらっても自身がないな。

241 :デフォルトの名無しさん:04/10/17 18:52:46
先生が簡単にできるであろうと考えて問題作ったのならご愁傷様だな

242 :デフォルトの名無しさん:04/10/17 18:59:42
>>240
宿題なんだから、こんなもんだろ。
仕事で受けるような課題じゃ意味ないし。

243 :デフォルトの名無しさん:04/10/17 19:08:45
・タイムアウト5秒
・UDPを使って確実にデータを送る

確実にデータを受けとる必要は無いみたいだぞ?

244 :デフォルトの名無しさん:04/10/17 19:11:00
>>243
ガキかお前は

245 :デフォルトの名無しさん:04/10/17 19:11:14
スマートに作ろうとすると難しいよ。
ヘンテコなプログラムで我慢しる。

246 :デフォルトの名無しさん:04/10/17 19:35:30
うち、通信系を重視する大学なんだけどさ
エラー訂正とSocketの勉強が同時に出来るって事でUDPでTCPモドキな実装の宿題出された事あったよ。

送れなかったら送れないとエラーを表示さえ出来ればOKな問題だったので、何とかなったけど・・・
でも、多分殆ど送れないソースだったろうなぁ・・、課題としてはOKだったので問題なかったけどw

247 :デフォルトの名無しさん:04/10/17 20:00:01
じゃあ、常にエラーでどうよ?w

248 :デフォルトの名無しさん:04/10/17 20:33:27
なにもしないで5秒間待て。

249 :デフォルトの名無しさん:04/10/17 20:34:56
つーかさ
昔のパソコン通信はどうしてたんだ?
UDPみたいな感じだったんでしょ?
送信順序とかデータチェックとかどうやってたのかね?

250 :デフォルトの名無しさん:04/10/17 20:50:39
MNPつーのがあったけど。

251 :デフォルトの名無しさん:04/10/17 20:59:03
ていうかこんなの簡単だろ。
お前らレベル低すぎ。

252 :デフォルトの名無しさん:04/10/17 21:00:18
昔はパケット交換じゃなかったしな。

253 :デフォルトの名無しさん:04/10/17 21:40:55
>>251
じゃあお前のレベルとやらを披露してみせろや
簡単な概要で良いから手段を挙げろ。

254 :デフォルトの名無しさん:04/10/17 21:44:36
留byさいこー

255 :デフォルトの名無しさん:04/10/17 22:24:26
ここのスレで回答してる人はスキル高そうなんで勉強がてらみてるけど
全然具体的な答えを書かないので勉強にならなかったり

素直に>>1からのリンクをみた方がいいかな

256 :デフォルトの名無しさん:04/10/17 22:32:57
送信側はデータを分割して
ID(4byte)+DATALEN(4byte)+DATA(DATALENbyte)
という形式で送信する。IDは0から1ずつ増やしていく。
データの終わりはDATALENに0を指定する。

受信側はデータを受け取ったらその印にIDだけを投げ返す。まとめて投げても構わない。
データは保存しておき最も若いIDが存在するならそれをアプリに渡して破棄する。
# 0, 3(データの終わり), 2, 1の順に受け取ったら0をアプリに渡し、1を待ってから1, 2, 3と渡す。

送信側は受信側からの受け取り通知のあったIDのデータを破棄する。
送信して受け取り通知のないまま1秒経過したデータを再送する。
5回再送してもなお通知がなければ送信を打ち切る。

受信側は最初の受信から5秒間受信がなければ受信を打ち切る。

データの破損は考慮しない。UDPに任せる。
同時に送信するデータの個数は受け取り通知を見ながら調整する。
# 同時送信を1にすれば順番を考慮する必要はないので実装が楽になる。
# ただしパフォーマンスが落ちる。


257 :デフォルトの名無しさん:04/10/17 22:45:45
>>256
質問。
ラストの0を受け取った受信側が番号の0を送信側に送るみたいですが
それがもし届かなかった場合。
受信側では受信は完了してるのに、送信側は完了してないと言う矛盾が発生すると思われるのですが・・・


258 :デフォルトの名無しさん:04/10/17 23:27:16
再度0を送ればいいんじゃない?

259 :デフォルトの名無しさん:04/10/17 23:39:30
っていうかパケロスとか順番入れ替わったときの
補正機能の実装が出来たとしても確認試験とかそういうのが
えらい大変そう。

260 :デフォルトの名無しさん:04/10/17 23:59:29
>>257
それはキリがないのでどこであきらめるかという話になる。

受信完了が送信側に届かないことがあるので
受信完了のackをを返してもらうことにして届くまで再送しよう

受信完了ackが受信側に届かないことがあるので、
受信完了ackのackを返してもらうことにして届くまで再送しよう

受信完了ackのackが送信側に届かないことがあるので、
受信完了ackのackのackを返してもらうことにして届くまで再送しよう

...



261 :カントール:04/10/18 00:08:24
ノープロブレム

262 :デフォルトの名無しさん:04/10/18 00:41:18
順番が飛んだら、思いきって捨てましょう。
後は確認応答、リトライだけでなんとかなるんでない。

263 :デフォルトの名無しさん:04/10/18 01:09:45
・・・

264 :デフォルトの名無しさん:04/10/18 01:40:34
こればかりは真面目に考えた事が無い人にはわからんだろう
才能ある人は、なんとかなるんでない なんて言えないよな

265 :デフォルトの名無しさん:04/10/18 01:47:57
白ヤギさんからお手紙着いた
黒ヤギさんたら読まずに食べた
しかたがないからお手紙書いた
「さっきのお手紙ご用事なぁに?」

266 :デフォルトの名無しさん:04/10/18 02:04:42
ウィンドウ制御の実装か...
低レベル過ぎて詰まらん



267 :デフォルトの名無しさん:04/10/18 14:23:59
>>257
その食い違いが発生しても受信側は困らないから問題ない。
どうしても厳密にやりたいなら受信側が最後に終了通知を投げて
その応答がなかったらエラーにすればいい。

>>259
テストはライブラリのデバッグビルドでn%の確率で故意に順番入れ替えたり
ロストさせたり受信通知を送信しなかったりすればいい。
アプリがデータの整合性チェックするようにすれば異常も検出できるし。
あと同時に100プロセスとか立ち上げてこの方式が破綻する様を眺めてみるのも面白いかも。
帯域埋める->UDPロストしまくり->再送されまくりの悪循環

>>262
どっちみち複数のUDPを同時に受信して溜め込むようにしないと
パフォーマンスがた落ちになるから整列させる機能をつけない手はない。

268 :デフォルトの名無しさん:04/10/18 18:58:39
>>267
>帯域埋める->UDPロストしまくり->再送されまくりの悪循環
タイムアウト5秒で終了だな

269 :デフォルトの名無しさん:04/10/18 20:04:20
再送って、もっと下の層でも行われてなかったっけ?

270 :デフォルトの名無しさん:04/10/18 20:29:11
どの層だよ。


271 :デフォルトの名無しさん:04/10/18 22:16:38
コリジョン層

272 :デフォルトの名無しさん:04/10/18 22:44:11
コチジャン層?

273 :デフォルトの名無しさん:04/10/18 22:46:10
おねーさん、ナムル追加ね

274 :デフォルトの名無しさん:04/10/18 22:51:49
まず、カルビを全部網の上に並べるのよ。
そこでタイマーをセットする、タイムアウト時間は50秒ね。
タイムアウトが発生したら一気にID番号順に喰い始める。
ここでもたもたしてると肉が黒焦げになってロストするから要注意だ。


275 :デフォルトの名無しさん:04/10/19 00:08:06
>>274
先生! ID順に食べてるんですが真ん中にあるカルビが焦げてます!


276 :デフォルトの名無しさん:04/10/19 00:22:20
>>275
焦げてロストしたらリセットして再送要求を送るのよ。

おねーさん、カルビもう一人前追加

277 :デフォルトの名無しさん:04/10/19 00:25:37
先生! ホルモンがくっいて境目も順序もわかりません!

278 :デフォルトの名無しさん:04/10/19 00:41:46
>>277
そうなったらリセットです。

おねーさん、焼き網交換して

279 :デフォルトの名無しさん:04/10/19 01:39:59
我々のカルビが隣りの席に行ってしまったみたいです…

280 :デフォルトの名無しさん:04/10/19 04:31:05
すみませんC言語の宿題スレで質問したのですがこっち向きかと思い来ました。
すれ違いでしたらゴメンナサイ

http://www.geocities.jp/i035192/forksample.c
上のプログラムの実行結果をもとに
fork関数の使い方と親プロセスと子プロセスの処理について説明せよ

ネットワークアプリケーションとして複数のクライアントからの要求を受け付けるサーバプログラムの例をあげ説明せよ

すみませんが、この2つについて教えてください

281 :デフォルトの名無しさん:04/10/19 04:35:58
(・3・)

282 :デフォルトの名無しさん:04/10/19 04:36:49
思考停止して丸投げするなら宿題スレでやれ。
覚える気があるならここでも読んどけ。
http://x68000.q-e-d.net/~68user/net/

283 :デフォルトの名無しさん:04/10/19 04:45:23
>>282
宿題スレにも投げてるんだよ、彼は
何故誰も答えないかもわからず、あちこちに投げまくってるようだが。

284 :デフォルトの名無しさん:04/10/19 07:35:37
宿題スレは答えてやればいいのにな。
俺は行かないけどな。

285 :デフォルトの名無しさん:04/10/19 07:39:14
Google代行者に成り下がるような気分でイヤだ

286 :デフォルトの名無しさん:04/10/19 08:06:37
>>285
Google宣伝者に成り下がる気分は良いのか?

287 :デフォルトの名無しさん:04/10/19 08:15:45
>>286
なにそれ
意味わかんねえよ氏ね

288 :デフォルトの名無しさん:04/10/19 08:23:24
自分がわからなければ氏ねという低脳が居るのはここですか?w


289 :デフォルトの名無しさん:04/10/19 08:28:22
最近の学校は図書館もないのか。

290 :デフォルトの名無しさん:04/10/19 08:28:43
>>288
お前も同レベルだ

291 :デフォルトの名無しさん:04/10/19 10:37:47
>>280
2ch

292 :デフォルトの名無しさん:04/10/19 14:58:08
IPヘッダの先頭から9バイト目以降の8ビットの各値は、
デフォルトで0のようですが、任意のビットを立てる方法はないのでしょうか?
開発はVC++6.0です。
MFC使ったソケット通信プロセスに反映できないでしょうか?

293 :デフォルトの名無しさん:04/10/19 15:09:33
bit立てても、立てた通りに届かないのでは?

294 :デフォルトの名無しさん:04/10/19 15:46:33
>>292
9byte目ってprotocolか? それとも+8byte目のttlのことか?
なんにせよ意味のある値なので書き変えちゃダメ。

295 :デフォルトの名無しさん:04/10/19 16:09:18
>>294
TypeofServiceの優先度0〜2とD・T・Rの部分の話なんですが。

296 :デフォルトの名無しさん:04/10/19 16:14:29
独自プロトコルを定義したいのか?

297 :デフォルトの名無しさん:04/10/19 16:20:56
10msec間隔でソケット通信をしたいのだけど
どうしても20000回に1度程度の割合で300msec程度の送信か受信遅延が
発生しています。それの解決方法の一つとして
優先度や遅延処理のビットを変更して試したいのです。

298 :デフォルトの名無しさん:04/10/19 16:23:02
またお前か。

299 :デフォルトの名無しさん:04/10/19 16:33:43
そうです

300 :デフォルトの名無しさん:04/10/19 18:26:54
質問です。
IPアドレスからホスト名に変換する関数ってありませんか?
言語はCです。


301 :デフォルトの名無しさん:04/10/19 18:32:24
gethostbyaddr
これしきのことすら知らなくてネットワークプログラムを書くのは無謀。



302 :デフォルトの名無しさん:04/10/19 18:39:16
ネット周りのAPIなんて数限られてるんだから
遅延学習は非効率的だよな。

303 :デフォルトの名無しさん:04/10/19 18:42:28
>>301
二行目は余計

304 :デフォルトの名無しさん:04/10/19 18:45:20
事実だろ

305 :デフォルトの名無しさん:04/10/19 18:46:57
ウザ

306 :デフォルトの名無しさん:04/10/19 18:47:20
そうだけど・・・

307 :デフォルトの名無しさん:04/10/19 18:53:36
ネットワークプログラムの場合、プログラマがタコなリスクはSEGVどころじゃないからねえ
セキュアなプログラミングが必要と叫ばれたのはもう数年以上前だけどまだ場末には全然浸透してないし

308 :デフォルトの名無しさん:04/10/19 18:57:49
ウザ

309 :デフォルトの名無しさん:04/10/19 19:12:54
今使ってるOSじゃSEGVなんて出ません!

310 :デフォルトの名無しさん:04/10/19 19:52:25
MS-DOSでつか

311 :デフォルトの名無しさん:04/10/19 20:19:19
OS板の貴公子が作っているOSとか

312 :デフォルトの名無しさん:04/10/19 20:32:59
MXレコードを参照したいので,popenした後,標準出力から結果(nslookupした結果)を読んでいるのですが,
結果の途中でnull文字にぶち当たって,%s等をすると正確に全てを読み出せません.
MXレコードを参照するのはどんな方法で行うべきしょうか?

313 :デフォルトの名無しさん:04/10/19 20:39:09
>>310
なんでわかったんだよ
('A`)

314 :デフォルトの名無しさん:04/10/19 20:44:54
>>313
だってSEGVがないなんてまともなOSならほとんど考えられないし
つーかマジでMS-DOSでしたか
ご愁傷様('A`)

315 :デフォルトの名無しさん:04/10/19 20:53:21
>>312
SPAMメーラ作ってる人ですか?


316 :デフォルトの名無しさん:04/10/19 21:00:02
>>315
なんでわかったんだよ
('A`)

317 : ◆9dYLE8z3D6 :04/10/19 21:16:00
ふつーのSMTP鯖を勉強で作ってます
悪用する気はないです
ので,だれか回答お願いします

318 :デフォルトの名無しさん:04/10/19 21:21:48
%s等をしないで別の方法を使う

319 :デフォルトの名無しさん:04/10/19 21:57:01
普通のMTAはそんなショボいことはしない


320 :デフォルトの名無しさん:04/10/19 22:19:47
>>317
2ch だからとか悪用とかいうのは抜きにしても、質問の仕方が悪すぎ。
 「%s等をすると正確に全てを読み出せません」
なんだこりゃ。質問事項すら手抜きする馬鹿に誰が回答するんだ。この馬鹿。


321 :デフォルトの名無しさん:04/10/19 23:45:25
>>312
UNIXならres_query(3resolv)使えよ。

322 :デフォルトの名無しさん:04/10/20 01:02:59
>>301
gethostbyaddrなんて古いAPIをいまさら持ち出すんじゃない。
POSIX的にはもうObsolescentとなってるぞ。
ttp://www.opengroup.org/onlinepubs/009695399/functions/gethostbyaddr.html
> The gethostbyaddr() and gethostbyname() functions may be withdrawn in a future version.

これからの時代、getnameinfo()すら知らなくてネットワークプログラムを書くのは無謀。

323 :デフォルトの名無しさん:04/10/20 01:27:58
>>322
へぇ

324 :デフォルトの名無しさん:04/10/20 02:11:44
>>322
今使えれば良いじゃん

325 :デフォルトの名無しさん:04/10/20 10:57:06
これからの時代はJavaで書けば別にそんなもの知らなくてもいいような。


326 :デフォルトの名無しさん:04/10/20 17:40:30
POSIXの規格制定って、今更って気がするよね
UNIX自体死滅の寸前なのに
動くのが遅すぎだよ

327 :デフォルトの名無しさん:04/10/20 18:10:12
CはもうObsolescent


328 :デフォルトの名無しさん:04/10/20 21:10:38
これからの時代、Cを使ってネットワークプログラムを書くのは無謀。

329 :デフォルトの名無しさん:04/10/20 21:12:37
無謀も何もバッファオーバーフローしまくりで破綻してる品。

330 :デフォルトの名無しさん:04/10/20 21:13:21
かといってJavaでサーバ作るのもなー

331 :デフォルトの名無しさん:04/10/20 22:07:36
初歩的な質問ですがお願いします

Win32で名前つきパイプを使っているのですが、
サーバ側で、UNIXでいうselect()やpoll()の様に多重待ち(?)
を実現するのはどうやればいいんでしょうか

332 :デフォルトの名無しさん:04/10/20 22:08:28
>>331
select

333 :デフォルトの名無しさん:04/10/20 22:44:50
なんで、Win使ってるのにイベント駆動型にしないんだろ・・・
といつも思うのは俺だけ?



334 :331:04/10/20 22:54:02
調べてみました
WaitForMultipleObjects()
が使えそうなのでコレでやってみます



335 :デフォルトの名無しさん:04/10/20 22:56:27
WSAWaitForMultipleEventsのほうがいいかもな

336 :デフォルトの名無しさん:04/10/21 01:47:38
WSAWaitForMultipleEvents
ってNamedPipeで使えるのかな

337 :デフォルトの名無しさん:04/10/21 09:15:39
イベントで待ち合わせられるソケットの最大数は制限がある。
しかもかなり低め。本格的なサーバには使えない。
素直にメッセージループで処理するのが吉。
WindowsOSとsocketの親和性は次の通り。

WinProc > WaitForXXX > select

338 :デフォルトの名無しさん:04/10/21 09:18:00
重複I/Oでブロッキングせずにガンガン処理していった方が
パフォーマンスも良くなるし、簡単に実装出来る様な・・・


339 :デフォルトの名無しさん:04/10/21 09:27:44
>>338
MAXIMUM_WAIT_OBJECTS はいくつになってる?
想定される実用サーバの同時クライアント接続数と比較してみるとどうだろうか?
とうてい使い物にならないことがわかるはずだ。

340 :デフォルトの名無しさん:04/10/21 09:32:45
WaitForXXXは噂に反して、決して低負荷じゃない。
噂に流されないよう注意。

341 :デフォルトの名無しさん:04/10/22 02:37:21
WinでサーバサイドならIOCPじゃないのか。

342 :デフォルトの名無しさん:04/10/22 02:50:06
おまいらココ嫁
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html


343 :デフォルトの名無しさん:04/10/22 09:34:59
そうなんだ
selectって万能だから好んで使ってたんだけど

344 :デフォルトの名無しさん:04/10/22 10:24:50
>>343
WSAAsyncSelect使え

345 :デフォルトの名無しさん:04/10/22 10:26:52
>>344
や、Windowsじゃないし

346 :デフォルトの名無しさん:04/10/22 12:01:08
>>345
>>342はWinsockについて書いたものだ。

347 :デフォルトの名無しさん:04/10/22 13:11:58
UNIXでTCPを使って通信をしたいのですが、どのヘッダをインクルードして、どの関数を使えばよいのでしょうか?

348 :r:04/10/22 13:18:23
www.turbolinux.co.jp/world/library/features/c_magazine/vol_11.html
自分はここを参考にしました

>>347


349 :デフォルトの名無しさん:04/10/22 13:19:37
>>347
ヘッダはいろいろあるよ。
そういうのはまとまった情報無いんで。
10のうち真実が1しかないような初心者向け解説サイト
がたくさんあるから一通り読んで。

350 :デフォルトの名無しさん:04/10/22 13:38:47
StevensのUNIX Network Programmingの和訳を買え。


351 :デフォルトの名無しさん:04/10/22 14:48:30
> ヘッダはいろいろあるよ。
> そういうのはまとまった情報無いんで。

は?
 使いたい関数の man を読め。必要な include ファイルが書いてある。
でおしまいじゃん。


352 :デフォルトの名無しさん:04/10/22 14:49:20
>>351
自分がどの関数を使いたいかなんて素人にわかるわけ無いじゃん

353 :デフォルトの名無しさん:04/10/22 15:04:02
よって>>350が結論。

354 :351:04/10/22 23:14:55
「どの関数を」ってのを読み落としていたじゃん。


355 :デフォルトの名無しさん:04/10/24 07:23:55
WindowsのオーバーラップI/OとI/O完了ポートを使ってサーバを作ろうとしてます。
MSDNライブラリなどを見て、とりあえず1つのクライアントの接続を受け付けて
送受信を行うプログラムは動作したのですが、
なにぶん情報が少なくてよくワカンナイコトがいっぱいです。

1)複数の接続を受け入れる場合はバックログの数だけソケット確保・AcceptEXを
  しておいて適宜追加していく、という方法で良いのでしょうか。

2)AcceptEXは接続受け入れと最初のパケットの受信を行いますが
  クライアントが接続してきたにも関わらず何も送信してこない場合には
  とりあえず接続だけ確認して、しばらく待って何も送ってこないようなら
  切断したいのですが、コレはどのように対処すれば良いのでしょうか...

なんか根本的に間違ってる気がしないでもないのですが
アドバイスしていただけるとありがたいです。

356 :デフォルトの名無しさん:04/10/24 14:17:29
proposed-updates って何?

357 :356:04/10/24 14:18:15
ごめん誤爆した

358 :デフォルトの名無しさん:04/10/24 20:35:18
>>355
無理だから止めとけ

359 :デフォルトの名無しさん:04/10/24 22:44:54
>>355
この辺みてみたら?
http://www.codeproject.com/internet/JBSocketServer3.asp

360 :355:04/10/25 01:25:52
>>359
ありがd!超参考になったです( ´▽`)


361 :デフォルトの名無しさん:04/10/25 20:01:37
コネクションの終了時に、相手のFINに対する応答でACKではなくRSTを返すって、
普通じゃないとはおもうんですが、実装のヒントいただけないですかね?

いきなりRSTっていうのはsetsockoptで、SO_LINGER使えば
できることはわかったんですがRSTの契機をを相手のFINに対して
行いたいんです。

362 :デフォルトの名無しさん:04/10/25 20:05:55
>>361
「このままでは二人はダメになってしまうよ。もう別れようか・・・」

「うーん、あーごめんねーキャッチ入ったからー ばいばーい」 ガチャッ

「・・・」

あんまりだよそれは

363 :デフォルトの名無しさん:04/10/25 20:13:44
>>362
そうそう、そんな感じ。
二股はおろか、百股くらいなんでわずらわしいのは全部リセットしたいんですw
別れの余韻(TIME_WAIT)も不要です。

364 :デフォルトの名無しさん:04/10/26 02:15:28
RSTだと未受信のまで捨てられちまいそうな気がする

365 :デフォルトの名無しさん:04/10/26 05:10:12
>>361
この辺読んで勉強しろ
http://www.sean.de/Solaris/ttcp-2.gif
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.html

366 :デフォルトの名無しさん:04/10/26 13:51:06
Windowsの、しかもソケットじゃなくてMACアドレス取得に関しての
質問なのですが一応ネットワーク絡みということでこのスレで質問
させて下さい。
Win32APIのGetAdaptersInfoを使って全アダプタを調査、MACアドレスを
取得したのですが、IEEE1394のMACアドレスだけ取れませんでした。
ipconfig /allでも出てこないMACアドレスなのですが、getmac.exeでは
出てきます。どうやって取得するのでしょうか。

367 :361:04/10/26 16:51:59
>>364
一般的にはそうですね。
けど、特殊な要件でRSTとばすのは上位のAPレベルではもう処理が
終わったタイミングなんでとりあえず、それは無視できます。

>>365
レスd。
すいません。私がおバカなだけなのかもしれませんが、
残念ながら参考になりませんでした。
datagramのパケットにSYN/FINフラグの付けてパケットを減らすという技術は
わかりましたが、ちょっと意図するところと違ってそうです。

引き続き、なんか情報あればお願いします。

368 :デフォルトの名無しさん:04/10/26 21:34:25
age

369 :デフォルトの名無しさん:04/10/26 21:36:10
>>368
発言数が少ないわけでも無し、何故無意味に上げる?

370 :デフォルトの名無しさん:04/10/26 21:42:52
age

371 :デフォルトの名無しさん:04/10/26 21:44:23
>>369
アホを相手にしてはいけません

372 :デフォルトの名無しさん:04/10/26 21:50:16
( ´-`).。o(ageただけで噛みつかれた・・・)

373 :デフォルトの名無しさん:04/10/26 21:50:54
いらん事するからだろ

374 :デフォルトの名無しさん:04/10/26 21:51:24
>>372
何のためにやってんだ?お前

375 :デフォルトの名無しさん:04/10/26 21:52:56
>>374
なんか下がりすぎかなーと思って。

376 :デフォルトの名無しさん:04/10/26 21:54:12
>>375
余計なお世話だからやめとけ
全部のスレがそんな事やったらどうなると思う?

377 :デフォルトの名無しさん:04/10/26 21:55:11
>>376
ア ホ を相手にしてはいけません

378 :デフォルトの名無しさん:04/10/26 22:59:18
>>367
馬鹿な考え休むに似たり。

379 :776デフォルトの名無しさん:04/10/27 00:32:32
VC6とWinsockで簡単なチャットプログラムを組んでまして、
今まではchar型の文字列を↓のようなかたちでそのまま送受信してたのですが、

GetDlgItemText(hDlg,IDC_SENDTEXT,SendMsg,sizeof(SendMsg));//テキストボックスの文字を受け取って
send(sock,SendMsg,(int)strlen(SendMsg),0);//そのまま送信

これって文字列がそのまま覗き見されるような形で送受信されてるんでしょうか?
(基本的な部分の仕組みが分かってない…)
そうだとした場合、例えばですが、
内容を簡単に見られたくないテキストファイルをバイナリファイルにするような感じで
送受信するデータをバイナリ化するにはどうすればいいのでしょうか?
教えてください。お願いします。

380 :デフォルトの名無しさん:04/10/27 00:36:00
テキストファイルをバイナリファイルにする方法を使えばいいのでは?

381 :379:04/10/27 01:49:06
バイナリでファイル出力するときは確かWriteFile(〜)で
勝手にやってくれたように思いますが、、、これ以外方法をしらないんですが、
これでどうすればよいのか見当がつかないであります。
できればもう少し具体的に教えていただけないでしょうか。

382 :デフォルトの名無しさん:04/10/27 02:25:46
カエサル暗号でも使っとけ。

383 :デフォルトの名無しさん:04/10/27 02:28:09
fd = socket()でソケットを取得しておいて
その後、ネットワークのインターフェースをifdownしちゃったとしたら
このfdって使えるの?
その後でifupしたら、このfdって使えるの?

384 :デフォルトの名無しさん:04/10/27 02:32:59
やってみりゃいいじゃん?
簡単に試せるでしょ。


385 :デフォルトの名無しさん:04/10/27 03:08:02
g++ hoge.cc -lresolv
としてコンパイルしようとすると
usr/lib/gcc-lib/i686-pc-cygwin/3.3.3/../../../../i-686-pc-cygwin/bin/ld:
cannot find -lresolv
collect2: ld returned 1 exit status
となってしまうのですが,解決策をお願いします.
Cygwinです.

386 :デフォルトの名無しさん:04/10/27 03:32:59
resolvライブラリをインストールする。

387 :デフォルトの名無しさん:04/10/27 13:38:25
BGPについて詳しく説明してるサイトってないですか?

388 :デフォルトの名無しさん:04/10/27 13:43:17
本買え。最近出てなかったか?
ってーかBGPいじる奴がRFCも読めないんじゃ世の中迷惑するわけだが。


389 :デフォルトの名無しさん:04/10/28 02:41:19
Windowsでファイルを転送するプログラムの具体的な例が欲しいんだけど
スレッドと非同期I/Oを組み合わせてCかC++かJavaで誰かプログラム書いてソース公開して!

と言ってみるとソースがあがってくるか試してみるテスト

390 :デフォルトの名無しさん:04/10/28 03:24:07
javaならいくらでもあるだろ。探せ。


391 :デフォルトの名無しさん:04/10/28 08:23:59
WinとUNIX系で、ソースコードコンパチなネットワークサーバープログラムを組みたいのですが
そういうのに適したライブラリとか無いですかね?

392 :デフォルトの名無しさん:04/10/28 08:49:37
aprとかは?
俺はよく知らないけど

393 :デフォルトの名無しさん:04/10/28 08:51:25
cygwin

394 :デフォルトの名無しさん:04/10/28 09:24:19
Perl

395 :デフォルトの名無しさん:04/10/28 09:28:03
boost::socket
ace

396 :デフォルトの名無しさん:04/10/28 15:41:04
>>391
Java使えw

397 :デフォルトの名無しさん:04/10/28 18:35:01
>>389
つーかソース手に入れて何すんの?
ファイル転送プログラムなんてググりゃすぐでてくるだろ
目的を聞かしてよ

398 :デフォルトの名無しさん:04/10/28 18:38:54
>>395
boostにsocketなんてあったっけか?

399 :デフォルトの名無しさん:04/10/28 18:42:14
>>398
pukiwikiに書いてある。
まだ正式実装はされてない模様。


400 :デフォルトの名無しさん:04/10/28 21:28:50
>>399
探しちゃったじゃん、バカチンが...

でも仕様ドキュメントを見たけど、
select使ってんのね、Linuxは問題ないけどWindowsじゃパフォーマンスは期待できんなあ。


401 :デフォルトの名無しさん:04/10/28 21:30:13
文句あるなら自分で作れよ

402 :デフォルトの名無しさん:04/10/28 21:33:16
ACEだけど、日本で使ってるの見たこと無いなあ。
英語のトレーニングになるからと一応ドキュメントはチェックしたけど、話題にもならん。


403 :デフォルトの名無しさん:04/10/28 21:35:03
>>401
Windows版はパフォーマンスやスケーラビリティが要求されない処理向きだよね。

404 :デフォルトの名無しさん:04/10/28 21:41:50
>>400
Linuxだってパフォーマンス期待できないだろ。

405 :デフォルトの名無しさん:04/10/28 21:48:38
Linuxでselectって実際どうなの?
ソケット周りはなんでもかんでもselectに押し込んじゃって
時間かかってほったらかせるのだけpthreadってのが
マイブームなんだけど

406 :389:04/10/28 21:55:10
>>397
PureP2Pのファイル転送システムを作りたいんだよ
オープンソースにして漏れみたいな初心者プログラマーの
スキルアップに使えるようにしたいんだ

実際に作ろうと思ってるんだけどスレッドと非同期I/Oのところが
よくわかんないんだよ ググってもでてこないしね

407 :デフォルトの名無しさん:04/10/28 21:58:36
>>406
このスレの>>1からを読んでも駄目なら何やっても駄目だな

408 :デフォルトの名無しさん:04/10/28 23:48:23
Windowsでselect()はまずいだろ。
Unixのselect()使用のオープンソースをWindows環境にそのまま移植しようとして
返って手間がかかる羽目に陥るってのは、大抵のsocketプログラマが一度は経験する。

409 :デフォルトの名無しさん:04/10/28 23:54:53
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
これか・・・

割と期待してたり

410 :デフォルトの名無しさん:04/10/28 23:56:25
>>408
言いたいことがよくわからん。具体的に何がまずいの?

411 :デフォルトの名無しさん:04/10/29 02:00:36
英語読めない俺はboost::socketの解説がされる入門書が出るまで待たねばなるまいか・・・

はぁ・・・

412 :デフォルトの名無しさん:04/10/29 02:28:38
多分出ないよ

413 :デフォルトの名無しさん:04/10/29 03:23:55
英語が読めないのにC++使ってるのかよ

414 :デフォルトの名無しさん:04/10/29 04:01:04
国産のはずのRubyですら英語読めないといけないしな

415 :デフォルトの名無しさん:04/10/29 06:29:49
ぶっちゃけ、英文で読んで意味が分からない文章というのは、
日本語だったとしても意味が分からないことが多い。
つまり、あまりに説明不足で説明したうちに入らないような文章は、
万国共通で存在するのである。

416 :デフォルトの名無しさん:04/10/29 12:28:44
>>415
だから何?と聞き返したくなるような趣旨不明の文章の典型。

417 :デフォルトの名無しさん:04/10/29 12:39:24
416はネタだよな・・・

418 :デフォルトの名無しさん:04/10/29 12:43:26
で、Windowsではなんでselectまずいの?>408

419 :マイク ◆yrBrqfF1Ew :04/10/29 14:27:51
Winsock 2.0プログラミングだかなんだかで
selectでブロックしてると
Windowsのメッセージイベントを処理しないとかあったような気がするな。

420 :デフォルトの名無しさん:04/10/29 14:30:37
Windowsで関数名が全て小文字の関数を使うと格好悪いからでは?

421 :デフォルトの名無しさん:04/10/29 15:33:21
>>419
それはWindowsのスレッドがわかってない無知のたわごとです。
selectしてブロックしてるからメッセージを処理できない当たり前であって、
select待ちをワーカースレッドに追いやれば済む問題ですよ。
ただしselectにタイムアウトを設定してポーリングで毎度アプリケーションの
終了要求等に答えるための処理が必要だとは思いますけど。

422 :デフォルトの名無しさん:04/10/29 15:35:57
むしろ非同期メッセージ通知で処理するselectの代わりに用意されたWSA〜の方は
メッセージキュー処理に依存するので逆にパフォーマンスが悪くなったりする
弊害の方がやばいです。
素直にselect使いましょう。

423 :デフォルトの名無しさん:04/10/29 15:39:01
>421
>メッセージを処理できない当たり前であって
メッセージを処理できないのが当たり前であって
の間違いです。

424 :デフォルトの名無しさん:04/10/29 15:51:17
>>422
それは無いでしょ。 
select()は使うな、WSASelect()を使えというのが一般的だけどね。
勿論、実装次第でパフォーマンスが悪化するケースはあるだろうけど、
それは使い方がマズイだけでしょ?
まあ、ホントはIOCPとか使えば良いんだろうけど


425 :デフォルトの名無しさん:04/10/29 16:22:51
おまいらココ嫁
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html

426 :デフォルトの名無しさん:04/10/29 16:29:48
重複I/O使える環境で、オーバーラップI/O使わない理由ってあるの?

427 :デフォルトの名無しさん:04/10/29 20:57:33
>>426
対話的処理とかで、応答の過半が UI スレッド(メインスレッド)の介入を必要するケースとか、
IOCP でやっても結局 UI スレッドにメッセージングで通知する(かつ転送量が少い)場合にはおとなしく
WSAAsyncホゲホゲ使っとくのがいいのかも知れない。

漏れはAPI覚えるのがメンドクサイからつい IOCP で何でもやっちゃうけど・・・

428 :デフォルトの名無しさん:04/10/29 23:28:00
>>427
俺様専用お約束ライブラリを作っときゃいいじゃん。

429 :デフォルトの名無しさん:04/10/30 01:30:14



















430 :デフォルトの名無しさん:04/10/30 03:07:24
うーん、WinSOCKのLSPつかってみた。
WSAduplicatesocket()でlistenできなくなった。
回避方法しらない?

431 :デフォルトの名無しさん:04/10/30 07:28:35
戻り値確認しる

432 :デフォルトの名無しさん:04/10/30 13:44:59
>>431
いや、戻ってこないんだ。

433 :デフォルトの名無しさん:04/10/30 14:01:23
>>408
どういうとこに困るの?
漏れは逆にWindows->Linuxの移植やってんだが、
Windows/Unixのselectを使用する際に気をつけるべき点とかあったら教えてください。
おながいします。

434 :デフォルトの名無しさん:04/10/30 15:10:00
winsockのselectは64個まで

435 :デフォルトの名無しさん:04/10/30 15:17:34
Linuxもそんなもんだろ

436 :デフォルトの名無しさん:04/10/30 15:48:07
さすがに今の主なUNIX系OSでそんな制限はないだろ。昔はともかく。


437 :デフォルトの名無しさん:04/10/30 21:07:35


438 :デフォルトの名無しさん:04/10/30 21:14:03
>>434-435
それは本気で言っているのか?

439 :デフォルトの名無しさん:04/10/30 23:33:59
selectって何であんなに変な仕様になったの?
ソケットの実装上あれが最適だったとか(まさかね・・・)。
そこらへんの歴史的経緯ってどっかに書いてあるのかな。

440 :デフォルトの名無しさん:04/10/30 23:51:43
どこが変なのだ?
まずそれを書け。

441 :デフォルトの名無しさん:04/10/31 01:00:04
とりあえずselectはソケット専用ではないですから!残念!

442 :デフォルトの名無しさん:04/10/31 01:49:00
selectは変だとは思わないが、socket関連の関数群には変な仕様のものが多い

443 :デフォルトの名無しさん:04/10/31 02:04:32
どこが変なのだ?
まずそれを書け。

444 :デフォルトの名無しさん:04/10/31 02:43:10
変というか非効率的って事だな。
一ループごとに登録でループまわしてポーリングして
チェックでまたループまわしてで空振り多すぎ。
add_fd(this, fd), del_fd(this, fd), poll_fd(this, read_callback, write_callback)
なんてインターフェースにしとけば字面上は無駄なく書けるのに。
きっと設計時には数十程度のコネクションしか想定してなくててきとーに作ったんじゃないかと
想像してるんだけど真相はどんなものかと。

>>441
fdを統一的に扱えるから専用ではないけどソケットを想定してなきゃあんな大げさな仕様にはなってないだろ。

445 :デフォルトの名無しさん:04/10/31 02:47:02
なんだ厨房か。

446 :デフォルトの名無しさん:04/10/31 03:50:02
callbackって…

447 :デフォルトの名無しさん:04/10/31 04:22:09
TCP/IPの実装はBSD UNIXの頃だからもう20年くらい経つんだよね。
ビルジョイは今何してんだろ?

448 :デフォルトの名無しさん:04/10/31 09:13:39
そもそも、その時代はイベントの概念ないだろ・・・
OSが到達を教えてくれるなんて親切設計になったのは、つい最近の話だよ。
それまでは全てプログラム側でチェックしなきゃいけなかった。

449 :デフォルトの名無しさん:04/10/31 11:15:44
signalはイベントですよ。

マルチスレッド環境じゃないと、I/Oのイベントを効率的に使いづらいね。

450 :デフォルトの名無しさん:04/10/31 17:25:18
>>444
つうかselectはsocketができるよりも前にすでにあったんじゃないか?

451 :デフォルトの名無しさん:04/10/31 19:22:43
妄想はいいからソース出せ

452 :デフォルトの名無しさん:04/10/31 19:33:50
selectもsocketもマニュアルには4.2BSDからと書いてあるので
同時といってもいいんじゃないのかね。


453 :デフォルトの名無しさん:04/10/31 20:14:40
>>451
ソケットのソースなんていくらでもあるだろ。
てめーがソース読めないだけだろ!

454 :デフォルトの名無しさん:04/10/31 20:32:00
スレ違いかもですが、
会社がウィルス(W32.Beagle.AV@mm)にやられちゃったみたいです。
明日、ローラー作戦で退治させられると思うと激しく鬱なんです。
なんかパケット追跡して変なメール出してたりアクセスしてるPCを特定しちゃうような
プログラムって簡単に作れないでしょうか?
力業で探すのはとてもつかれるので。。。

455 :デフォルトの名無しさん:04/10/31 20:33:42
普通にログ見ればいいじゃん。

456 :454:04/10/31 20:42:18
>>455
あ、そうか!そうだよ。サンクスです。m(__)m
あれ、でもメールsubjectとかもログされるんだったか。。な
明日出勤したらちょっと調べてみるです。

457 :デフォルトの名無しさん:04/10/31 23:08:00
>>444
select はシステムコールで、カーネル側で実行されるから、
そこからユーザプログラムの関数を呼ぶなんて無理。
signal みたいなことをやると、そこからは async signal safe
な関数しか呼べなくなるから、プログラミングが困難。

でもまあ今時の *BSD にある kqueue は、add_fd に近い発想。
libevent は、callback 登録方式なので、まさに 444みたいな
感じ。libevent はユーザランド実装なので、async 問題はない
のね。

458 :デフォルトの名無しさん:04/11/01 01:04:05
>>456
あふぉ発見

459 :デフォルトの名無しさん:04/11/01 09:34:56
>>457
>select はシステムコールで、カーネル側で実行されるから


460 :デフォルトの名無しさん:04/11/01 09:52:40
?

461 :デフォルトの名無しさん:04/11/01 10:20:31
!

462 :デフォルトの名無しさん:04/11/01 10:29:27
@

463 :デフォルトの名無しさん:04/11/01 10:30:00
@!ため吾郎

464 :デフォルトの名無しさん:04/11/01 12:13:22
>>459
select はシステムコールでしょ?


465 :デフォルトの名無しさん:04/11/01 14:38:33
質問です。
winsock2が使える環境で以下の二つのプロセスがあります。
 ・プロセスA : ソケットの作成、listenまでを行う。プロセスBを起動。listenを行ったソケットハンドルを複製してプロセスBにパイプを使って渡す。
 ・プロセスB : パイプ経由でプロセスAから渡されたソケットハンドルを使用してAcceptを行う。
ここでプロセスAで、WSADuplicateSocketを使用してソケットを複製するとハンドル数(タスクマネージャーに表示されるハンドル数)が
増加していきます。
ハンドル数の増加を防止する為に、複製したソケットハンドルをプロセスBに渡した後にプロセスAで明示的にクローズしたいのですが
プロセスAでclosesocketを使用してクローズしようとするとエラーが返ってきます。
(closesocketに渡すソケットハンドルは、WSADuplicateSocketで取得したWSAPROTOCOL_INFO構造体をWSASocket関数に渡して作成してハンドルです。)
この為、プロセスAがプロセスBを起動するたびにハンドル数が増加していって困っています。
同様の現象が起こった方がいらっしゃればどのような対策をされたか伺いたいです。

466 :デフォルトの名無しさん:04/11/01 16:19:43
B->Aの順に両方閉じる

467 :デフォルトの名無しさん:04/11/01 17:34:20
PunchingHoleUDPを簡単に利用する為のDLL作ったけど需要あるのかな?
今はとてもじゃないけど外部に公開できる状態じゃないので、需要あるなら色々手直しして公開してみようと思うけど・・・

ちなみに、サーバーサイドにDLLを置いて、サーバーだけはTCPで接続して、設定したバッファーサイズ分ブロックにわけて
そいつのhashをサーバー経由で相手に確実に送った後、データを転送。
バッファーサイズが到達する度にhashの同一チェックしてサーバー経由で確実に届いたと知らせるようなシステムなんだけどね。

サーバーのレスポンスが悪いと、到達通達が送れて、せっかく転送速度速くても遅くなってしまうと言う難点あり。


468 :デフォルトの名無しさん:04/11/01 17:47:40
うpきぼんぬ
ソースも公開してくれるとなお嬉しい

469 :デフォルトの名無しさん:04/11/01 18:34:28
>>467
その素晴らしい作品をネタに議論して盛り上がろうよ。

470 :デフォルトの名無しさん:04/11/01 18:36:55
到達通知がサーバ経由なのが解せない・・・
別に批評でもなんでもないけど。

471 :デフォルトの名無しさん:04/11/01 19:33:41
>>470
UDPだけで完全なTCPエミュレーションが不可能なのは過去logの議論で実証されてるだろ。
UDPだけだと、到達通知が確実に届いたと言う通知のエラー処理をせねばならない。でそのエラー処理のエラー処理が(ry
とキリが無いって話だったはず。

472 :デフォルトの名無しさん:04/11/01 19:35:05
鯖味噌なんだろ

473 :デフォルトの名無しさん:04/11/01 19:48:05
TCPはUDPと同様に不確実なIPで実装されてるのに不可能なの?

474 :デフォルトの名無しさん:04/11/01 19:57:58
WindowsXPではOverIEEE1394が使えますが
Windows2000用のドライバってないですか?

475 :デフォルトの名無しさん:04/11/01 20:46:15
>>471
ソース希望。

476 :デフォルトの名無しさん:04/11/01 20:51:12
>>471
難しいという話は出たが、不可能と実証されたっけ?

477 :デフォルトの名無しさん:04/11/01 20:54:32
ソース期待age!

478 :デフォルトの名無しさん:04/11/01 20:55:08
>>476
確か直近の関連したカキコで、
・宿題で UDP でエラー訂正してXXXってのが出た
・TCP のプロトコルの説明読め
ってのがあったような気がする・・・

そもそも別に難しくない。世のほぼ全ての P2P ソフトが普通にやってることだし。

479 :デフォルトの名無しさん:04/11/01 20:59:08
P2PはTCPだろ

480 :デフォルトの名無しさん:04/11/01 21:01:39
WinMXはUDPも使っている。

481 :デフォルトの名無しさん:04/11/01 21:05:02
TCPがやっていることを、UDPを使って模擬ることは
普通に出来るでしょ。

482 :デフォルトの名無しさん:04/11/01 21:05:23
>>478
「ほぼ全て」のところのソース希望

483 :デフォルトの名無しさん:04/11/01 21:07:56
難しくないのであれば、こんな話にはならないのだがな。

484 :デフォルトの名無しさん:04/11/01 21:10:22
>>482
WinMXが人生においてほぼすべてのウェイトを占めてるんだろ。

485 :デフォルトの名無しさん:04/11/01 21:11:58
>>483
どこが難しいのか、俺には全くわからない。

TCP が使える状況で車輪の再発明みたいなことをするのは意味無いけど、
UDP で(TCP程度に)リライアブルなデータ転送を行うのは何も難しくない。
API一発でできないから難しい、という意味?

486 :483ではないけど:04/11/01 21:18:35
>>485
ただ実装するのは難しくもないけど(実際課題レベルだし)
高負荷時にもTCPと同レベルでちゃんと動くものを作るのは結構しんどいよ。
あえてTCP使わないって事はパフォーマンス重視なことが多いから
いい加減に作ると使い物にならない。

487 :デフォルトの名無しさん:04/11/01 21:24:03
>>486
課題レベルの話なので、この場合では
高負荷とか多分どうでもよくて、それなりに安定した
通信が出来ればいいんじゃないかな

488 :デフォルトの名無しさん:04/11/01 21:24:17
ソフトイーサの人が確かやってたが結構なスループットだった気がする。

489 :デフォルトの名無しさん:04/11/01 21:24:51
>>486
なるどほ。UDP Hole Punching なんかしか使えない状況でなら、
パフォーマンスが若干劣化しても意味アリか。

「いい加減に」って例えば1パケ毎に応答確認とか(w?

490 :デフォルトの名無しさん:04/11/01 21:30:51
>>471
TCPもそんなことやってないよ。両側で完全な送達確認ができたことの確認が
できたことの確認....は本質的に不可能(笑) 最後はどちらかが送りっぱなし
であきらめるしかない。TCPだとFINに対するACKは待つけどACKは送りっぱなし
というあたりに相当する。


491 :デフォルトの名無しさん:04/11/01 21:34:02
>>490
うちのサーバに FIN_WAIT っていっぱい表示されてるのは喪前のせいか!!

492 :デフォルトの名無しさん:04/11/01 22:07:25






















493 :デフォルトの名無しさん:04/11/01 22:13:58
>>492
見辛くなるからやめろ

494 :デフォルトの名無しさん:04/11/02 01:19:35
何気に良スレあげ

495 :デフォルトの名無しさん:04/11/02 09:24:21
良スレって…

>>471が馬鹿なだけでしょ。

496 :デフォルトの名無しさん:04/11/02 10:19:14
晒しage

497 :デフォルトの名無しさん:04/11/02 10:20:47
馬鹿じゃないよ

498 :デフォルトの名無しさん:04/11/02 10:28:09
馬鹿じゃなければいい

499 :デフォルトの名無しさん:04/11/02 10:35:02
普通に考えればわかると思うけど、UDPで完全なTCPエミュレーションは不可能
絶対どこかで妥協しなければならなくなる。

よく考えれば必ずチェックのチェックと言う永久ループに突入するから
どこかで妥協して限りなく信頼性をあげる事は出来るものの、100%の正確性は得られるはずが無い。

生ソケットとかでも使わん限りな。

出来るって言ってるヤツは、その方法晒してみ?
まぁ、間違いなく突っ込みどころ満載だと思うが・・・

500 :デフォルトの名無しさん:04/11/02 10:49:09
まぁ、間違いなく突っ込みどころ満載だと思うが・・・

まぁ、間違いなく突っ込みどころ満載だと思うが・・・

まぁ、間違いなく突っ込みどころ満載だと思うが・・・

それはお前だろ・・・

501 :デフォルトの名無しさん:04/11/02 10:52:58
>>500
四の五の言わずに作ってみろ

502 :デフォルトの名無しさん:04/11/02 11:02:29
>>500
まずお前の方法とやらを晒してみろ。
話はそれからだ。

出来ないならただの口だけ野郎だ

503 :デフォルトの名無しさん:04/11/02 11:05:01
>>256-260
↑結局こういう事になるんだよな。

出来るって言ってるヤツは、実例示さない辺りあんまり深く考えてないと思われる。
ちょっと考えれば無理な事に気づくだろ。

504 :デフォルトの名無しさん:04/11/02 11:27:29
>>503
>>256-260 は、「完全なエラー通知処理は無理」ってことを言ってるわけだけど、
>>490 にあるように TCP でもそれは同じこと。
(最後のパケットが lost すると FIN_WAIT2 ステートまでしか行けない)。

最後の「さよなら」を相手がちゃんと聞いたかどうかなんて、超能力者にもわからない。

505 :デフォルトの名無しさん:04/11/02 11:27:59
アホを相手にするのは面倒なのでTCP over UDPでググってください。


506 :デフォルトの名無しさん:04/11/02 11:31:15
再送の話か・・・
TCP in TCPだと、外側と内側のそれぞれのTCPが再送して
それはもう大変なことに

507 :デフォルトの名無しさん:04/11/02 12:28:07
質問です。
これからネットワークプログラミング入門をしようと思うんですが
まずここで上がってるようなUDP,TCP,TCP over UDP と言うような基本的な用語を理解出来る様になりたいのですが
どのような本を読めばいいのでしょうか?

508 :デフォルトの名無しさん:04/11/02 12:37:09
TCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/

これテンプレに入ってないな…

509 :デフォルトの名無しさん:04/11/02 12:51:04
>>508
高すぎ

510 :デフォルトの名無しさん:04/11/02 13:39:51
>>4のサイトが問題ありとされているのは何故ですか?

511 :masataka:04/11/02 15:35:59
現在、WSAEventSelectを使用していろいろやってみているのですが、
どうも使い方がよくわかりません。
いままでは、WSAAsyncSelectの方を使っていて、問題ありませんでした。

socket → WSACreateEvent → WSAEventSelect → bind →
→ listen → WSAWaitForMultipleEvents → WSAEnumNetworkEvents
の順番で呼び出すのですが、たしかに、FD_ACCEPTイベントは発生し、所得でき
ます。
しかし、それ以外のイベントが発生しません。
また、FD_READがもし発生したとしても、WSAAsyncSelectのように、socketが引
数で飛んでくるわけでもありませんので、socketハンドルを所得することができ
ません。

もしかして、こういうものなのでしょうか?
もちろん、FD_ACCEPTが発生した時に、accept関数を呼び出し、その後、recv関
数を呼び出せば正常に読み込めます。
現在は、
FD_ACCEPTが発生→accept関数→read関数→close関数
という順序で、やりたいことはできているのですが、
なんとなく納得できません。
WSAEventSelect(listenSocket,hEvent,FD_ACCEPT | FD_READ | FD_WRITE |
FD_CLOSE) として呼び出しているので、FD_CLOSEイベントに対応してclose関数
を呼び出さなくてはいけないような気がするのですが。

以上、詳しい方がいらっしゃいましたらば、よろしくお願いします。

512 :デフォルトの名無しさん:04/11/02 18:20:41
>>511
>しかし、それ以外のイベントが発生しません。
一回 select が完了 (イベントが発生) したら再度 WSAEventSelect する必要があります。

>もしかして、こういうものなのでしょうか?
そういうものです。普通の select のケースと同様、自分で覚えておいてください。

>close関数を呼び出さなくてはいけないような気がするのですが。
必要ありません。

513 :デフォルトの名無しさん:04/11/02 19:05:13
>>510
別にいいんだよわからなくても。
そこで勉強して実装して勉強して実装して
ある日問題に気づいたときに
「今までありがとう!そして、バーカバーカ」
と言うためのページ

514 :デフォルトの名無しさん:04/11/02 22:28:07
PunchingHoleUDPのサンプル作ってみたけど、やっぱルーターが変換したポート番号を感知するサーバーが必要なんだね・・・。
ポート番号固定でやってたら、ルーターがどんどんポート番号変えてくるんで、そいつに変えてイタチゴッコしてみたけど・・・

う〜ん、微妙な技術だ・・・。
使いどころがわからん。

515 :デフォルトの名無しさん:04/11/02 23:33:24
>>514
例えばIP電話プログラムで、交換局に相当するサーバでクライアント A, B を結びつけたら
あとは A <-> B で自立してパケットをやりとりできる。

516 :デフォルトの名無しさん:04/11/03 00:44:00
IP電話は電話帳役のサーバはいても交換局は普通いないよ。


517 :デフォルトの名無しさん:04/11/03 01:03:51
え? 交換局=ルータだろ?

518 :デフォルトの名無しさん:04/11/03 01:39:01
>>514
FTPのPORTモードとかでも使う

519 :相談あげ:04/11/03 02:03:00
UDP通信についての相談です。

現在某社の制御機器のUDP通信機能を作っています。
プロトコル自体はそのメーカーの独自のもので、接続を許可する
クライアントのIPとポートをあらかじめサーバ(=制御機器)に登録
しておき、クライアントからは自分のクライアントIDをヘッダに含めて
コマンドを送信します。

基本的な通信部分は実装できたのですが、同時に複数のクライアント
からコマンドを受信した場合の処理の仕様が無いため、提案するための
仕様を考えています。一般的な処理などあれば教えてください。

現在は
・ 1回のコマンドが複数のパケットに分割されてもOK
・ 最初のパケットから設定されたタイムアウト以内にコマンドが完結
  しなかったらNG
・ NGの場合は何も返さない
としています。この方法だとクライアントでもタイマを実装してNGの
場合を判定しなければならないという問題が考えられます。

「そんなもんだ」でもいいし「○○という概念を調べれ!」でもいいので
教えて!エロい人!

520 :デフォルトの名無しさん:04/11/03 02:08:08
「制御機器」がUDP通信でいいのか、その点について提案する方が先じゃないだろうか?

521 :デフォルトの名無しさん:04/11/03 02:16:56
クライアントがタイマでNGにした、その0.0001秒後に制御機器側で受理してしまった。
さて、運命や如何に?


522 :デフォルトの名無しさん:04/11/03 02:21:24
受理してなんか返してもクライアントはもうNGだから無視するだけだろ。

523 :デフォルトの名無しさん:04/11/03 02:23:56
でもその制御機器がそれにより何か動作をしてしまい、
クライアントは動作していないはずだと思い込む(応答は捨てるわけだから)。

というパターンは?


524 :デフォルトの名無しさん:04/11/03 02:26:55
クライアントは無視するからそのうちサーバもNGで切断。そんだけ。

525 :519:04/11/03 02:32:09
>>520
ファームなんで、あんましデカい処理は実装できないんですよ。。。

>>521-522
仰るとおり、クライアントでNGになった後に制御機器から応答が返って
しまう場合も考えられます。
この状態を想定して、ベタなんですけれどもクライアント側でコマンドを
送信する前に受信して受信バッファを空にしてから送信する、という
サンプルを配っておきました。一応皆さんそれに合わせてくださってるんで
今のところ問題にはなってないです。

>>523
クライアント→制御機器:コマンドビット
クライアント←制御機器:完了ビット
クライアント→制御機器:状態監視
クライアント←制御機器:状態通知
というメンドいハンドシェイク(?)で回避してます。UDPなので「なってるはず」
というのは極力避けるように考えています。

526 :519:04/11/03 02:37:14
皆さんありがとうございます。

>>520(追記)
そもそも状態監視ではなく制御をEtherNetでやること自体
私は反対だったんですけどねw

>>524
残念ながらクライアントの受信スッドレは常時動いちゃってたりするのですよ。。。
そんなわけで>>525のような事をして回避してまつ。。。

527 :デフォルトの名無しさん:04/11/03 02:54:14
>>517
>>516>>515に合わせたレイヤの話な。


528 :デフォルトの名無しさん:04/11/03 02:55:05
制御機器って何だ?

529 :デフォルトの名無しさん:04/11/03 02:55:24
ちなみにUDPだとパケット順序が入れかわるかもしれないことも
考えておけよ

530 :デフォルトの名無しさん:04/11/03 02:57:38
>>525
クライアントがエラー、終了、再接続したとき受信が前回分のと混ざる可能性があるんじゃないのか?
バッファが空かどうかって怪しい感じ。
セッションごとにユニークID振らないとまずいんじゃないの。

531 :デフォルトの名無しさん:04/11/03 03:02:35
TCPをデカイ処理だと認識しているようなシビアで高度なプログラマがこんなサイトで質問しているとは驚きだ。

532 :519:04/11/03 03:08:05
なんだかUDP入門みたくなっちゃってすみませんね。

>>528
サーバにあたります。
数十点のI/Oで検査機器の制御を行うものです。
人が死ぬような種類のものでは無いので、仕様にも危機意識が
若干無視されているような気がしますが、、、それはスレ違いっとw

>>529
ありがとうございます。
実験ではルータ/ハブをかませても2分割程度だったので
入れ替わっちゃったらヘッダが無くなってNGになるからあんまり
問題視されていません。

>>530
それこそが今回の質問の核心なんですよ。。。タイムアウト時間内に
混ざっちゃったらどうしたらいいのかが解らないんです。
一応ユニークIDは振ってあります。

>>531
まったくもって同感です。私のようなド素人(入社2年目)に任せてるのは
マズいんじゃないかと。。。

533 :デフォルトの名無しさん:04/11/03 03:12:59
ファームのTCP/IP以外の通信プロトコルが過去の遺物で
高負荷・OS道連れロックとかいうオチは用意されてないよな?
全てLAN環境とかいうオチは用意されてないよな?

534 :デフォルトの名無しさん:04/11/03 03:19:25
楽しようとUDPにして却ってハマル奴が多いんだよね。
それなりのシステムになりそうだね。

535 :519:04/11/03 03:22:33
>>533
> 高負荷・OS道連れロックとかいうオチ
制御ユニットとはバス接続で切り離されています。
ネットワークユニット単体でウォッチドックされています。

> 全てLAN環境とかいうオチ
最初の構想でありましたが、猛反対して回避しました。ルータ使用は
オプティカルユニットがルータ機能を持っちゃってるためです。
制御端末(=PC)が3台、制御機器(=サーバ)が1台の閉じた
ネットワークです。

>>534
えぇ、ハマってますとも。どっぷりとw
仕事でお勉強しちゃうのもどうかとは思いますが、
しっかりと基礎理論を構築しておこうと思っています。

536 :デフォルトの名無しさん:04/11/03 03:23:57
余談だけど仕様の段階での危機意識って薄い感じでも
実際テストをやりだすととたんに厳しいこと言ってくることってあるよね。
そんな細かいこというなら仕様の段階からもっとつめとけと。


537 :デフォルトの名無しさん:04/11/03 03:29:07
なんでTCPにしなかったの?


538 :519:04/11/03 03:32:26
>>536
以前やった仕事がまったくもってそんな状態でしたよw
後から言った、言わないの話になるのは嫌なので、気付いた事は
先手を打ってテストして仕様に盛り込んでもらうようにしています。

>>537
私が勉強不足なのでTCPの実装にどれくらいの工数が掛かるのか
見積もりできない、というのが本音です。お客さんもUDPしか経験が
無いみたいですし。。。

539 :デフォルトの名無しさん:04/11/03 03:34:28
UDPで出しているパケットを全て強く型付けして、
パケット到着、タイムアウトのイベントに対して、
きっちりと(マトリックスに抜けがないように)状態遷移図を書く。

こういう基本をやっておけば、
>>523というようなことは起きないというか、
起きても問題なく処理される。

シーケンス番号を使う場合は、
シーケンス番号順にパケットを渡してくれるdaemon (thread)を動かすとよい。
そうすれば後は全てシーケンス番号順と仮定して構築できる。

540 :519:04/11/03 03:39:50
うぅ、、、なんだかTCPをマトモに実装した方がラクな気がしてきた。。。

>>539
ありがとうございます。
シーケンス番号というものを振るdaemonというのは、自分で実装する
ものなんでしょうか?
ならば別のセッションのパケットの一部が割り込んでもそこでハジく
ことができますね。

541 :デフォルトの名無しさん:04/11/03 03:46:37
>>540
> うぅ、、、なんだかTCPをマトモに実装した方がラクな気がしてきた。。。

TCPでやってもちゃーんと状態遷移を確認する必要がありますよ。
相手は何送ってくるか分からないし、(mal-functional failure)
途中で勝手に接続切るかもしれない。

というか状態遷移も書かずにマルチベンダーで開発するのは無謀。
大部分が未定義のまま実装が始まることになる。

学生の頃バイトでシステム構築やっていたけど、
仕様の書き直し、詳細化をたくさん上流に上げましたね。


シーケンス番号はセンダーが付けたのを、レシーバ側で整列する、
と言うつもりで書きました。(UDPはなくなったり順番変ったりするので)
再送ロジックがない場合は、特別な型のパケットが来た時には、
resetするようにすればいいでしょう。

542 :デフォルトの名無しさん:04/11/03 03:53:11
スキルが無いと異常系が想定できないんだよね。


543 :519:04/11/03 04:02:37
> 再送ロジックがない場合は、特別な型のパケットが来た時には、
> resetするようにすればいいでしょう。
現在は受信スレッド内で受信したパケットは「全てそのまま」ループバッファに
溜めてますが、仰る通りパケットごとに判別しなければいけない(というか
回避不可能)ですね。どういった実装になるかは今は思い付けないんですが、
キチンと練るための時間をもらうことにします。
厳密にやるとTCPが何をしているのかが勉強できそう♪

> 状態遷移も書かずにマルチベンダーで開発するのは無謀。
ループバッファに溜まったデータを解析する際の状態遷移は起こした
んですが、確かにパケット単位での状態遷移は今初めて考えている
ような状態です。

>>542
仰るとおりです。精進しまつ。。。

一応の結論。
・ UDPのパケット単位での判定方法を練り直す。
・ TCPの実装を検討してみる。
ということにします。
レスをくださった皆様、こんな夜更けにお付き合いいただき
ありがとうございました m(_ _)m

544 :デフォルトの名無しさん:04/11/03 04:21:43
>>535
>制御端末(=PC)が3台、制御機器(=サーバ)が1台の閉じたネットワークです。 

・・・これがLAN【Local Area Network】じゃなかったら何なんだ、と小一時間(ry

545 :デフォルトの名無しさん:04/11/03 04:29:10
>>543
>厳密にやるとTCPが何をしているのかが勉強できそう♪
なにをやってるが勉強してからにすれ

546 :519:04/11/03 04:36:09
>>544
すみません。論点が見えません。

>>545
もちろんそうしますよん♪

547 :デフォルトの名無しさん:04/11/03 04:43:12
ちなみにTCPはbyte streamなので、
ill-functional failureのclientを想定すると、
・どんどんデータを送りつけてくる。
例えば、データ境界として定義したNULを全然送らずにデータが続く。
・layer 6のヘッダにあるデータ長が間違っている!(ジーザス!)
などなどの状況を想定する必要があります。
つまりデータ境界の保証は上のレイヤーの仕事です。
(アプリ内や自作ミドルウェア内などで)

そんな状況を引き起こすのは、例えば糞ベンダーの書いた糞クライアントです。
最初からコードきっちり書いておかないと屑ベンダーに引っかき回されます。

今まで一番酷かったケースは(板違いなのでry

548 :デフォルトの名無しさん:04/11/03 04:47:19
524 :デフォルトの名無しさん :04/02/17 19:06
tcp over udpなソースってどこかにあったりしませんか?


525 :デフォルトの名無しさん :04/02/17 19:09
>>524
airhookとか。

死ぬ程糞だけど。

549 :519:04/11/03 04:55:18
>>547
ありがとうございます。
バグとして突き返すのも必要だけれど、それだけじゃマズいんで
切るようにします。幸いコマンドは長くて20バイト以下なので、
そのあたりで切れるかな?
>547さんがどのように対処なさったのかを教えてくださると嬉しいです。

> 今まで一番酷かったケースは(板違いなのでry
すっごく聞きたいけれど、マ板じゃないので諦めますw

550 :デフォルトの名無しさん:04/11/03 05:07:35
>>547
そうなんだよね。
TCPのストリームを扱う煩雑さを回避するために
1回のデータ送受信毎にセッション接続・切断する糞プログラムを良く見かける。
それじゃ学習用のサンプルプログラムそのままじゃねえか、ってな感じ。



551 :デフォルトの名無しさん:04/11/03 05:22:26
>>550
「そうなんだよね。」とか言ってるが、>>547とまるで内容が違わないかね。
セッションを分割できる仕様なのであればそうするに越した事はないと思うが?
障害の影響を最小域に留めることができると思うのだが、どのへんが糞なのか教えてもらいたいものだ。

552 :デフォルトの名無しさん:04/11/03 05:31:41
HTTPでキープアライブ導入前は要求、応答、切断だったんじゃ。

553 :デフォルトの名無しさん:04/11/03 05:42:20
オレはとりあえず、
>>550の作った糞プログラムへの障害対応を重ねて>>550に依頼する煩雑さを回避するより、
TCPのストリームを扱う煩雑さを回避するね。

554 :デフォルトの名無しさん:04/11/03 05:56:01
TCPはセッション接続時のオーバヘッドが大きいし、伝送効率も悪くなる。




555 :デフォルトの名無しさん:04/11/03 05:58:04
socketのコネクション・プーリングとか知らないのかなあ

556 :デフォルトの名無しさん:04/11/03 06:17:59
>>554
実測したの?
何か、具体的な実例挙げてもらえるとうれしいな。

557 :デフォルトの名無しさん:04/11/03 08:03:10
>>555
なにそれ?実装上の話?

558 :デフォルトの名無しさん:04/11/03 11:14:51
>>556
"slow start"するので、あんまり接続しなおさない方がいいよ。
けど本当にスループットを必要とする場合だけね。
VPN over TCPとか。

559 :デフォルトの名無しさん:04/11/03 11:20:22
>>549
異常な状態の生起もイベントとして定義して全て状態遷移図に書き込む、です。
イベントのフィルタリングをして、扱うイベントを少なくしてやると、楽です。
layer 6がしっかりしていれば、
layer 7に異常なリクエストを渡すこともないですよね。

560 :デフォルトの名無しさん:04/11/03 18:22:45
ネットワークプログラミングこれから始めるとしたらお勧めの本は
なによ。

561 :r:04/11/03 18:32:23
linuxのソケット通信に関する質問なのですが

gethostbyname,socket,connectを1まとめに関数にして、
connectできないと、この関数を実行する。
という方法でソケット通信のプログラムを作ったのですが、
通信の相手がいない場合、1時間半弱で必ずプログラムが終了する
という状態です。(リコネクトのウエイトは5秒)

connectだけをループするようにすると、
connectが、Bad file descriptor を返します。

接続の手順に問題があるとは思うのですが、どのように
すればよいか、調べてもわかりませんでした。
どなたか教えてください。
アーキテクチャはsh4です。

562 :Rubykitch:04/11/03 18:33:04
UNIX Network Programming

563 :デフォルトの名無しさん:04/11/03 18:57:39
Internetworking with TCP/IP volume3
client-server programming and applications
もいい本ですよ。ただし、IPV4のみ。

564 :r:04/11/03 19:51:02
connect 失敗時の closeにもれがあったようです
失礼しました

565 :デフォルトの名無しさん:04/11/03 19:52:02
>>563
おいおい、ここは日本だぜ

566 :デフォルトの名無しさん:04/11/03 19:54:51
それが何か?

567 :デフォルトの名無しさん:04/11/03 20:49:28
ここで話題になってるPunchingHoleUDPについて質問です。
Winsockでの実装の話なんですが。

クライアントAとクライアントBとサーバーSがあって。

AからSへUDPで適当なデータを送って、SはAのグローバルIPアドレスとソースポートを記録
BからSへUDPで適当なデータを送って、SはBのグローバルIPアドレスとソースポートを記録
SはAへBの情報を送信
Aはその情報を元にBへ適当なデータを送信(でも送れない)。
SはBへAのデータを送信
Bはその情報を元にAへ適当なデータを送信(これで遅れる)。

こんな感じでしょうか?

568 :デフォルトの名無しさん:04/11/03 20:57:20
しょっちゅうPunchingHoleUDPネタが出るね

569 :デフォルトの名無しさん:04/11/03 20:58:10
それくらいの設定ユーザーにやらせろよと思うが。

570 :デフォルトの名無しさん:04/11/03 21:00:52
PunchingHoleUDPって何?

571 :デフォルトの名無しさん:04/11/03 21:05:42
NAT超えってのは、ネットワーク関係の膨大にある問題の中でも大きな問題の一つだったからな。
それが解決できるって言うんだから、その手のシステムに興味ある人には夢のような話なんじゃない?

・・・今流行のP2P系では、今後スタンダードな技術となりそう。

572 :デフォルトの名無しさん:04/11/03 21:15:30
そういうのはUPnPで解決すると思ってたけど
MS発ってだけで反発されてそうだなw

573 :デフォルトの名無しさん:04/11/03 21:34:47
UPnPとはまた違うでしょ。
UPnPは
UPnP対応のハードじゃないといけないって事と
ISPからプライベートIPアドレスしか貰ってない場合、どうしようもない って事

PunchingHoleはUDPがNATを経由する本来の仕組みを使ったものだから
後から追加する必要性が殆ど無いって事。
唯一の欠点は、シンメトリックNATの場合通過出来ないって事くらい。
でもこれはよほどセキュ重視してる企業でもない限り使ってないから、一般ユーザーとは無縁の話

574 :デフォルトの名無しさん:04/11/03 23:43:41
>>519
でおくれちゃったけど、ひとこと。
linee(イーサネット回線エミュレータ)使って、パケットを
ドロップさせたりすると、テストの足しになるかもしれん。
# 残念ながら、パケットの順序の入れ替えはできなかったような気がするけど。
# 改造すればできるかなあ。
がんばれ。


575 :質問:04/11/04 16:25:35
質問させてください。

ルーター(192.168.0.1)の下にホストA(192.168.0.2)、ホストB(192.168.0.3)だけが存在し
ルーターが192.168.0.4(本当は存在しない)にARPリクエストを出してきたときにホストA
が偽造ARPパケットを作成して応答するというプログラムを作りたいのですが、そのような
事が分かるサイトを教えてください、お願いします。

やりたい事はルーターに対して存在しないホストのMACアドレスとIPアドレスの対応表を
覚えさせ、ルーターの外からくる192.168.0.2から192.168.0.255すべてのパケットを
ルーターで遮断させずに中に入れたいのです。

環境 WindowsXP Visual C++


576 :デフォルトの名無しさん:04/11/04 16:41:29
わざわざ作らんでも昔からある。
proxy arpでぐぐれ。


577 :デフォルトの名無しさん:04/11/04 16:43:00
ついでに言うとルータがいわゆるご家庭向けの箱物ルータでなければ
そいつのarp tableに書いちゃう方が早い。


578 :デフォルトの名無しさん:04/11/04 20:19:02
/usr/sbin/arp -s IP_address ethernet_address

579 :質問:04/11/04 20:38:39
>>577,578
回答有難うございます。

もし ホストAで arp -s 192.168.0.4 適当なMACアドレス を実行した場合に
ルーターからくる192.168.0.4に対するARPリクエストにホストAが代理に
応答してくれるのでしょうか?


580 :デフォルトの名無しさん:04/11/04 21:00:31
だからそれはproxy arpでぐぐるか本読めば書いてあるんだってば。



581 :デフォルトの名無しさん:04/11/04 21:40:28
ちょっとぐぐってみただけだけど、Windows で proxy arp 実装した例は見つからないなぁ。
商用APならDDKでプロトコルハンドラ書けばできると思う。
DDKいじってる時間が無いなら、http://www.rawether.net/product/re-pricelist.htm 等を
買ってもいいし(フリーで似たようなものもあるかもしれない)。


582 :デフォルトの名無しさん:04/11/04 21:49:07
>>575
ルターは言った、「キリスト者の自由」において「人は信仰によってのみ義とされる」と...
キリスト者を欺くとは何事ぞ!

583 :デフォルトの名無しさん:04/11/05 04:51:36
>>575
この本に偽造ARPパケットの作り方がソース付で書いてある。WindowsでもOK
http://www.amazon.co.jp/exec/obidos/ASIN/4274065847/


584 :デフォルトの名無しさん:04/11/05 10:55:02
ゼロウィンドウのプローブって何ですか?

585 :デフォルトの名無しさん:04/11/05 10:56:38
>>584
http://www.freesoft.org/CIE/RFC/1122/103.htm

586 :デフォルトの名無しさん:04/11/05 13:27:08
>>585
日本語でお願いします。

587 :デフォルトの名無しさん:04/11/05 13:31:29
>>586
http://www.excite.co.jp/world/english/web/?wb_url=http://www.freesoft.org/CIE/RFC/1122/103.htm&wb_lp=ENJA

588 :デフォルトの名無しさん:04/11/06 00:44:43
LinuxにもWindowsで言う所のOverlapped I/Oみたいな機能はありますか?

589 :デフォルトの名無しさん:04/11/06 01:50:47
aio_read/write/...

590 :デフォルトの名無しさん:04/11/06 03:24:41
>>587
頭が腐りそうな日本語だな。
英語の方がよっぽど判り易いし簡単じゃん。

591 :デフォルトの名無しさん:04/11/06 11:41:57
スペイン語とかのサイトを読むときは直接日本語に翻訳しても
読めたもんじゃないから英語にして読んでるよ

592 :デフォルトの名無しさん:04/11/06 15:56:15
質問です.
res_queryでDNSに問い合わせしてるのですが,なぜか戻り値-1が返ってきて,うまく接続できていないようです.
res_queryの問合せ先はどのように設定されているかわかる方いますか?

593 :デフォルトの名無しさん:04/11/06 15:57:58
環境は?

594 :デフォルトの名無しさん:04/11/06 16:04:51
>>593
Cygwin
BIND
あたりが関係しているでしょうか?

595 :592:04/11/06 16:09:17
>>593
自己解決しました.
thx!
resolv.confの設定をいじったらうまく動きました.

596 :588:04/11/06 20:23:17
>589
ありがとう!

597 :デフォルトの名無しさん:04/11/07 02:42:01
linux kernelのversion調べてね。

598 :デフォルトの名無しさん:04/11/07 19:48:01


599 : :04/11/07 20:47:02
ttp://www.stackasterisk.jp/tech/program/howtosniff02_01.jsp
ここのプログラムを2台のマシンを用意して実験しているのですが、
どうもパケットを送信出来ている気配がありません。
(パケット監視ソフトで監視しても反応がない)
環境は以下の通りです。
Microsoft(R) Visual C# .NET Compiler version 7.10.6001.4
for Microsoft(R) .NET Framework version 1.1.4322
なにか原因がわかる方いましたら教えていただけませんか?

600 :デフォルトの名無しさん:04/11/07 21:28:47
マルチキャストしてるから

601 :599:04/11/07 22:19:28
送信先のホストは1つだけなのですが、
これをマルチキャストと呼ぶのでしょうか?


602 :デフォルトの名無しさん:04/11/08 01:34:54
>>601
ユニキャスト/マルチキャスト/ブロードキャスト について調べてみれ。

603 :デフォルトの名無しさん:04/11/08 16:03:00
httpプロトコルで
RESUMEやりたいんですが。
どうすればいいでしょうか?

あと、HTTPプロトコルを詳しく書いてるサイトが合ったら教えてください。
日本語で

604 :デフォルトの名無しさん:04/11/08 16:11:06
馬から落馬

605 :デフォルトの名無しさん:04/11/08 16:12:17
>>603
コンパクトCDですか

606 :デフォルトの名無しさん:04/11/08 16:20:05
電子レンジ

607 :デフォルトの名無しさん:04/11/08 16:24:11
。°°(>_<)°°。 えーん

608 :デフォルトの名無しさん:04/11/08 16:26:35
>>603
日本語RFC

609 :603:04/11/08 16:33:13
Cで、Httpでファイル受信プログラム書いてるんです。
MFCは、使いません。

で、普通の送受信ですが、
GET http://pc5.2ch.net/test/read.cgi/tech/1096187183/ HTTP/1.0\r\n

をSendすると、
サーバーから、返事戻ってくるだろ。
そのあとファイルも帰ってくる。

そのファイル受信を途中から(RESUME)やりたいんです
Recvに、fseekみたいなものがあるんですか?
あるわけ無いですよね。
で、実現するには、どのようなメッセージを送ればいいのですか?

という相談なのです。


610 :603:04/11/08 16:34:02
>>608
ありがとう

611 :デフォルトの名無しさん:04/11/08 16:43:23
2ちゃんねる用ブラウザがレジュームやってるから
それを見ろ
Janeならこんな風

GET /tech/dat/1096187183.dat HTTP/1.1
Content-Type: text/html
If-Modified-Since: Fri, 15 Oct 2004 07:28:32 GMT
Host: pc5.2ch.net
Accept: text/html, */*
User-Agent: Monazilla/1.00 (Jane2ch/0.1.9.2)
Range: bytes=45543-
Connection: keep-alive

612 :603:04/11/08 16:46:06
>>611
すんげ。
ありがとう。


613 :デフォルトの名無しさん:04/11/08 17:02:35
Linuxでネットワークデーモン作りたいと思っています。
Apacheのpreforkのように、リクエストに応答するプロセスをそのたびにforkするのではなく
あらかじめ起動しておきたいのです。かなりリクエストが多くなると思うので、
いちいちforkする方法は避けたいです。
そこで、子プロセスにソケットの複製を渡すにはどうしたらいいでしょうか?
スレッドの使用も考えたんですが、プロセスごとにユーザー権限を変えられるようにしたいので
プロセスを複数作る方式で行きたいです。

614 :デフォルトの名無しさん:04/11/08 17:07:06
>>613
forkした時に複製されない?

615 :613:04/11/08 17:20:12
>614
親プロセスがacceptしたときに得られるクライアントとの通信用ソケットを
すでにfork済みのプロセスに送りたい、ということです。説明が不十分ですみません。

616 :デフォルトの名無しさん:04/11/08 18:14:32
>>613
「UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI」の14.7

617 :613:04/11/08 20:57:00
>616
ありがとうございます。暇ができたら購入してみようと思います。

618 :デフォルトの名無しさん:04/11/08 20:59:17
買わなくても図書館にゆけばあるかも

619 :デフォルトの名無しさん:04/11/08 20:59:28
暇がなくても今すぐ買って最初から熟読しろ。

620 :デフォルトの名無しさん:04/11/08 21:40:30
教科書は買っておいたほうがよいというか、
目も通さずに質問したら、叩かれる可能性高い。

621 :デフォルトの名無しさん:04/11/08 22:02:48
>>620
釣れますか?

622 :デフォルトの名無しさん:04/11/09 00:43:13
>>603
そーゆーテの開発をしたいのなら送受信しているパケットをモニタする
環境を早めに用意しておいた方がラクだよ。

623 :VC初心者スレの685:04/11/09 00:44:12
再描画がうまくいきません

ファイルをダウンロードするhttpクライアントを作っています。
全体の何%ダウンロードしたかをリアルタイムで表示させたいの
ですが、再描画がうまくいかないのでできないです。
100%ダウンロードした後にのみ再描画が発生するだけです。

それから↓以下のような経緯でもがき、
http://pc5.2ch.net/test/read.cgi/tech/1097880265/685-696
http://pc5.2ch.net/test/read.cgi/tech/1097880265/705-710
http://pc5.2ch.net/test/read.cgi/tech/1097880265/745

描画作業を別スレッドで行うようにプログラムを変更したのですが、
症状は改善されないです。
for文ループ中でrecv関数でデータを受信してる間は、
別スレッドで描画させようとしても無理なのでしょうか?

624 :デフォルトの名無しさん:04/11/09 01:40:32
> 別スレッドで描画

別スレからUpdateAllView()なんてできねーYO!

ダウンロードスレッドはダウンロード専門にして、
メインウィンドウに対しPostMessageするのがいいと思うYO!

625 :VC初心者スレの685:04/11/09 01:55:51
>>624
さんきゅ、よう分からんけどやってみるわ。

626 :デフォルトの名無しさん:04/11/09 03:13:44
よう分からんのならやるなよ。理解してから動け。


627 :VC初心者スレの685:04/11/09 08:20:31
>>626
うるさいんじゃ。我ドタマおかしいんけ。


628 :デフォルトの名無しさん:04/11/09 08:28:41
っていうかそれネットワークプログラミングと本質的に関係ないだろ

629 :デフォルトの名無しさん:04/11/09 08:42:22
>>628
うるさいん(ry我ドタマおか(ry

630 :デフォルトの名無しさん:04/11/09 09:10:34
ういんにー初心者くだ質スレッド その4
http://winny.info/2ch/qa/1026120991.html

UDP何とかってのが↑のスレに俺が書き込んだ296-303の理屈にちょっと似ている
のに感動したので記念カキコ。

631 :デフォルトの名無しさん:04/11/09 10:38:02
>>611
通常のレジュームは更新なかったとき続きを取得だが
2chブラウザは更新があったときに取得だから
ちょっと特殊だけどな

632 :デフォルトの名無しさん:04/11/09 14:38:01
スレ違いかもしれないけど質問させて下さい。
RHL の上でコード書いてるんだけど、
楽しようと思って xinetd を使っています。
(serverで指定する)プログラムに xinetd から
接続にきたリモートホストのIPアドレスを渡すことって出来ます?
プログラムの中から取得することも無理だよね。
(リモートホストに教えてもらうしかないかな?)


633 :632:04/11/09 14:59:47
何も考えずにgetpeername(0, ...) でいけるのか。
お騒がせしました。



634 :613:04/11/09 18:16:00
「UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットXTI」どこいっても在庫がありませんでした。(絶版!?)
後日、図書館とかもあたってみようと思います。

635 :デフォルトの名無しさん:04/11/09 23:56:12
みんなUDPが好きだなあ。
おいらはUDPを「うだっぺー」と呼んでる。

636 :デフォルトの名無しさん:04/11/10 02:49:43
UDPのチェックサムわけわかめ
疑似ヘッダ、イラネ。

637 :デフォルトの名無しさん:04/11/10 03:11:18
そういや前から気になってたんだけど
Punchingなんちゃらってシンメトリックでは使えないんだよね?
IPアドレスもチェックするから・・・

じゃあ、Skypeはどうやってんの?
全てのNATを通過させる事に成功したって書いてるけど・・・

もしかして、RAWソケットでUDP自作して、アドレス偽装する方式とか?(汗
UDP自作なんて俺にゃ無理だ・・・orz


638 :デフォルトの名無しさん:04/11/10 03:14:58
同期 >>>>>>>>>>>>>>>>>>>>>>>>>>>> 非同期

639 :デフォルトの名無しさん:04/11/10 04:15:12
UDPでできることって大抵TCPでもできるからあまり使わないなぁ。
ブロードキャスト使わなきゃいけないときくらいか。あとはよっぽどパフォーマンスが
気になるところとか。

640 :デフォルトの名無しさん:04/11/10 05:56:56
Ethernet装備だけどUDPもTCPもインプリメントされていない環境で
これから実装するとしたらUDPとTCPのどっちが良いですか?


641 :デフォルトの名無しさん:04/11/10 05:59:02
>>640
まず IP。
ってか、OS でも作ってんの?

642 :デフォルトの名無しさん:04/11/10 09:34:23
IPと同時にICMPやARPもいる。

643 :デフォルトの名無しさん:04/11/10 09:41:19
ARPはもちろんとして、俺なら全部ICMPでやるな

644 :デフォルトの名無しさん:04/11/10 10:46:30
いやIP実装しないとICMP働かない。(大昔はともかく)

645 :デフォルトの名無しさん:04/11/10 12:42:37
>>639
漏れは最近 HTTP 以外の生の TCP 使うことって殆ど無いなぁ。http なら proxy も通るし、
サーバ側の構築もラクだし。peer to peer だと TCP 通ることが殆ど期待できないのでudp
になっちゃうし。

>>637
サーバ側のNWを自前で構築していれば、A <-> B で UDP 通すために、まずサーバがA からの
パケットを偽造して B に送るなんてこともそう難しくないです(4年くらい前にやったことある)。

ただ零細企業や民間人だと、ソースIPが変なパケットは ISP やらホスティング元等のルータを
通過しない可能性があって難しいんだけど。

646 :デフォルトの名無しさん:04/11/10 15:42:43
印刷の際にプリンタに送られるデータを
別のPC(OSはWin2000)のLPTポートで受信したいのですが
検索して調べてみた所、Win32APIだけでは不可能という文章を見つけました
実際にプリンタに送られるデータをPCで受信するソフトはあるのでしょうか?
素人の質問で申し訳ないです、よろしくお願いします

647 :デフォルトの名無しさん:04/11/10 15:48:20
>>646
そのプリンタをネットワークで共有するのはできないの?
FILEにして流す事もできないわけじゃないけど。

648 :646:04/11/10 15:51:52
>>647
詳細を書いてなくてすみません
うちにある計測機器のCOMポートが調子悪いみたいで
PCでデータ受信ができない状態です
んで、計測機器からプリンタに繋げることができるんで
LPTポートからデータ取れるかなぁ、と思ってた所です


649 :デフォルトの名無しさん:04/11/10 15:59:47
>>648
その計測器が出力するデータとは何者?
パラレルから受けて、何をするわけ?印刷のみ?
機械の修理はできないの?

650 :646:04/11/10 16:04:34
>>649
計測器から出力されるのは数字の羅列で、テキストデータです
そのテキストデータをエクセルに入れて色々と編集するつもりですが
説明書にはプリンタにもテキストで送信されるとあったので
同様の作業ができるかな・・・と考えてる所です
自分は貧乏なんで装置の修理に大金出せない状態です・・・


651 :デフォルトの名無しさん:04/11/10 16:10:14
>>650
それじゃあたとえば
ttp://www.getplus.co.jp/product.asp?product=194973
のような物を検討したほうが手っ取り早いな
その計測器がどんなデータ出してるか謎だけど。

652 :646:04/11/10 16:20:30
>>651
それは調度いいですね
プログラミングと離れてすみません
ありがとうございました


653 :デフォルトの名無しさん:04/11/11 04:58:47
>>645
Webサービスってこと?

654 :デフォルトの名無しさん:04/11/11 10:20:06
>>639
すっごい簡単な組み込み向けの実装ならこんなのがある:
MiniIP: http://www.iti.fi/documentation/miniip.html
uIP: http://www.sics.se/~adam/uip/

655 :デフォルトの名無しさん:04/11/12 13:38:41
>>654
誤爆?

656 :デフォルトの名無しさん:04/11/12 14:24:17
>>655
>>640へのアンカーミスじゃないかと

657 :デフォルトの名無しさん:04/11/12 23:21:16
ezwebのMXレコード引いてlsean.ezweb.ne.jpと帰ってきたので
そこのSMTPサーバにTELNETから接続しようとしたのですが,なぜかConnection time outで
接続できません.
なぜでしょうか?


658 :デフォルトの名無しさん:04/11/12 23:25:17
>>657
ちゃと接続されるけど?
$telnet lsean.ezweb.ne.jp smtp
220 EZweb Mail
QUIT
221 Bye


659 :デフォルトの名無しさん:04/11/12 23:55:31
>>657
嫌われているんだよ

660 :デフォルトの名無しさん:04/11/13 00:14:36
>>659
どうしたら好かれますか?

661 :デフォルトの名無しさん:04/11/13 00:40:41
>>660
おまい、SM趣味だろ?

662 :デフォルトの名無しさん:04/11/14 19:46:33
>>661
なんでですか?

663 :デフォルトの名無しさん:04/11/15 15:55:33
ちょっと質問です

環境
端末A、B間は有線、端末B、C間は無線
端末AからCヘの経路を設定(GWをBとする)
無線は192.168.30.XX
有線は192.168.50.XX
各端末間の通信ができることは確認

以上のような環境でUDPパケットを端末Cに送ったのですが
端末C側でうまくパケットを取得(recvfromなど)できない状況が。。。 orz

端末CからAに対して経路を設定してやるとうまくパケットを取得できたのですが
なんか納得できない。。。

だれか納得できる説明おながいしまつ

664 :デフォルトの名無しさん:04/11/15 16:03:08
とどく保証はないから

665 :デフォルトの名無しさん:04/11/15 18:51:25
模範的なプロセス間通信の方法について質問したいです。
LinuxでXML−RPCサーバを用いて分散処理が行えるシステムを
作っています。
http://xmlrpc-c.sourceforge.net/
XML-RPCサーバ上で
putJob()
getJob()
という二つの関数のRPCを作成し、クライアントが仕事を持ってきたり、
仕事を受け取ったりという事がやりたいです。
初めputJob()やgetJob()という関数の中で、普通にメモリ上に仕事を書き込む
スペースを用意してやっていたのですが、
putJob()したあとgetJob()をしてもputJob()した時の結果が反映されていませんでした。
調べると、クライアントからの要求ごとに別のプロセスが動いていて、メモリ空間が
異なるため、putJob()である値を変更しても、getJob()ではそれは反映されないようでした。
プロセス間通信のため共有メモリをしようしてこの問題を解決しようとしたのですが、
共有メモリにはサイズの制限があるのか、数十バイト以上の領域を確保しようとすると
実行時エラーがでます。
変更の記録をファイルに書き込む事で対応しようと考えてもいますが、実行速度の面で
少し不安な気もします。
こういう場合の模範的な回答を知りたいのですが、調べるためのキーワードかなにか
あったら教えてください。

666 :デフォルトの名無しさん:04/11/15 19:40:29
> 共有メモリにはサイズの制限があるのか、数十バイト以上の領域を確保しようとすると
> 実行時エラーがでます。

標準的な環境であれば、いくらなんでもこの程度のサイズが確保できないはずがない。

667 :デフォルトの名無しさん:04/11/15 20:17:17
標準的な環境キター

668 :デフォルトの名無しさん:04/11/15 23:47:59
DB使う。

669 :デフォルトの名無しさん:04/11/16 00:26:05
>>665
「共有メモリ」とは具体的に何を指すのか? shm*(2)? mmap(2)?
XML-RPCの説明は余分で、「共有メモリ」に絞って質問し直すべきではないか?
それはLinux板が適当ではないか?

670 :デフォルトの名無しさん:04/11/16 10:03:48
LANで結ばれたPC2台の間でバイナリデータのやりとりをしたいのですが、どのような方法が最適ですが?
データは1MB程度で、それほど頻繁にはやりとりしません。

671 :デフォルトの名無しさん:04/11/16 10:05:21
>>670 STREAMソケットでOK。

672 :デフォルトの名無しさん:04/11/16 11:15:53
>>670
フロッピーが楽かな。

673 :デフォルトの名無しさん:04/11/16 13:35:45
クロスのシリアルケーブルでつなげば?

674 :デフォルトの名無しさん:04/11/16 13:48:36
>>665
プロセス間通信は RPC で行うのが最近の流行です。
Unix なら単に Pipe を利用しても良いでしょう。

共有メモリみたいなものが必要な場合には、まず DB の利用を考え、
SQL が解らないなどのくだらない理由以外できちんと否定的な結論が
出てから他の手段について検討してみてください。

また、多くのOSにおいて小さなファイルに対するファイルI/Oは
それほど低速なものではありません。

675 :デフォルトの名無しさん:04/11/16 14:25:24
何言ってんだか


676 :デフォルトの名無しさん:04/11/16 18:21:38
DB検討は一番最後だろ。
ローカルのプロセス通信にDBかよ。めでたい奴だな。

677 :デフォルトの名無しさん:04/11/16 18:38:10
質問です。
RAWソケットでUDPを作りたいのですが(ソースアドレス偽装の為)
どこかに良い資料ないですかね?

678 :デフォルトの名無しさん:04/11/16 18:39:05
/usr/src

679 :デフォルトの名無しさん:04/11/16 19:12:37
>>676
普通はどうやんの?

680 :デフォルトの名無しさん:04/11/16 20:17:41
質問です。
最近Winsockの勉強を始めたのですが、
どうもあちこちでACKやSYNと言う用語を見ます。
普通のTCPやUDPのsend()/sendto()で送る文字列とは別の何か特別なパケットなのでしょうか?


681 :デフォルトの名無しさん:04/11/16 20:24:17
はい。

682 :デフォルトの名無しさん:04/11/16 20:26:14
>>680
あちこちで見てるんなら、読もうよ。それを。

683 :デフォルトの名無しさん:04/11/16 20:38:06
質問です。
最近Winsockの勉強を始めたのですが、
どうもあちこちでACKやSYNと言う用語を見ます。
普通のTCPやUDPのsend()/sendto()で送る文字列とは別の何か特別なパケットなのでしょうか?

684 :デフォルトの名無しさん:04/11/16 20:40:30
マルチポストしようとしたら最初に書いたスレにまた書いちゃった。
といったところか。

685 :デフォルトの名無しさん:04/11/16 20:50:33
>>663
ICMPなら届く

686 :デフォルトの名無しさん:04/11/16 20:54:18
俺の想いもあの子に届いて欲しい

687 :デフォルトの名無しさん:04/11/16 20:57:27
>>677
http://www.amazon.co.jp/exec/obidos/ASIN/4274064247/

688 : ◆yCCMqGf/Qs :04/11/16 22:22:57
>>683=>>684>>680
とみた。

最近偽者が質問者の妨害をして荒してるのが多発してるので注意。


689 :684:04/11/16 22:40:40
>>688
違う

690 :665:04/11/17 00:21:51
ためになる回答をどうもありがとうございます。

共有メモリはshm*(2)という意味で使ってました。
共有したいメモリの量は、今はなんともわかんないですが、
数十メガ以上、場合によってはメモリに乗り切れない量にも
なりそうなのでmmap(2)を使って解決しようと思います。

DBの使用はすごくありだと思っていて、考えてもいたんですが、
諸事情で今回はつかえないためこういった方法にします。

ありがとうございました。

691 :デフォルトの名無しさん:04/11/17 00:25:14
それで分散処理になるの?

692 :デフォルトの名無しさん:04/11/17 03:13:14
複数で通信すれば分散処理

693 :665:04/11/17 03:48:41
すみません。やっぱりもう少し教えてください。

sys/shm.hを使って
if((shmid = shmget(key,100, IPC_CREAT | 0666)) < 0) {
perror("shmget");
exit(1);
}
といった事をしたいのですが、引数の100の所を200とか
大きな数字にすると実行時Invalid argumentといったエラーが出ます。
/proc/sys/kernel/shmmaxのファイルには33554432と書かれているので、
33Mまで共有メモリを使えるということなのかな?と考えているのですが、
なにがまずいのか教えてください。

694 :デフォルトの名無しさん:04/11/17 03:59:10
>>693
禿げしくスレ違い。

695 :693:04/11/17 09:34:19
確かにもうネットワークプログラミングの事じゃないですね。
質問が続いてたのでここがよいかなと思ったんですが、
UNIXプログラミング質問スレの方に移動したいと思います。

ありがとうございました。

696 :デフォルトの名無しさん:04/11/17 11:17:47
質問です。
最近Winsockの勉強を始めたのですが、
どうもあちこちでACKやSYNと言う用語を見ます。
普通のTCPやUDPのsend()/sendto()で送る文字列とは別の何か特別なパケットなのでしょうか?

697 :デフォルトの名無しさん:04/11/17 12:38:40
荒らしウゼ
どうせ本人じゃないだろうな。

とりあえずこれ以上やるんだったら荒らし報告として通報してくるよ。

698 :デフォルトの名無しさん:04/11/17 15:25:58
質問するときはトリップ必須にするかID導入要望でも出してくるか

699 :デフォルトの名無しさん:04/11/17 15:57:20
私は、研究生なのですが,今,プログラムがわからず危機的状況です。
JAVAでファイルを保存するプログラムを作成したいのですが,
どのようにすればよいかわからないのです。
(ついでに私は、JAVAプログラムど素人です。何処から初めていいのかも
分らないのです。)

動きとしては,以下のようなことです。
クライアント(ブラウザ)からファイルが送られる。
サーバ側で,そのファイルを受け取るとDBに保存する.
DBに同じファイルがあるならば,クライアントで上書きするかどうかを確認する.
上書きOKならば,DBにあるファイル(同じファイル)を消して,上書きする.

どのようなプログラムをすればできるのでしょうか?

⇒またこの場合DBは、どのような構造にすればよいのでしょうか?

どうぞ皆さんのお力をお貸しください。



700 :デフォルトの名無しさん:04/11/17 16:04:05
>>699
http://pc5.2ch.net/test/read.cgi/tech/1100656832/
こちらでどうぞ

701 :デフォルトの名無しさん:04/11/17 16:04:06
>>699
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/io/File.html

702 :デフォルトの名無しさん:04/11/17 23:28:44
http://rightp2p.s68.xrea.com/node/
http://www.stereoz.net/node/
http://moejump.s6.x-beat.com/node.php
■関連サイト(本体・BBS・その他)
http://rightp2p.s68.xrea.com/
http://phphp.s58.xrea.com/
http://www.stereoz.net/
http://printf.jugem.jp/
http://share.gooside.com/index.html
http://www.ero8.com/

703 :デフォルトの名無しさん:04/11/19 18:11:21
sshクライアントを作りたいのですが、そのようなクラスとかありますか?

704 :困ったくん:04/11/19 18:14:15
Visual Basicについての質問はこちらでいいのでしょうか?

705 :デフォルトの名無しさん:04/11/19 18:14:56
なぜそこまで必死に環境や言語を書かないのかわからない

706 :デフォルトの名無しさん:04/11/19 18:17:54
Ruby!

707 :デフォルトの名無しさん:04/11/19 18:39:09
>>705
VBでsshクライアント作りたいんでしょ

708 :デフォルトの名無しさん:04/11/19 19:58:59
いいえ、C++Builderです。

709 :デフォルトの名無しさん:04/11/20 10:26:02
ssh -p 44444 -fgNR 1080:localhost:44444 aaaaaaaa.bbbb.ccc   
pc1-----------------------------------------------------------pc2

./client -p 1080 127.0.0.1  --------> ./server -p 1080 INADDR_ANY

clientから'A'という文字コードを送りserver側で++して'B'を返すプロラムなんですが
'S'という文字しか帰ってきません。
で調べたら
"SSH-2.0-OpenSSH_3.8.1p1 Debian-8.sarge.3"という文字コードが受け取れました。
サーバーまで接続できてないようですがなぜなのでしょうか?
おしえてくだしー

710 :デフォルトの名無しさん:04/11/20 10:41:53
ネットワークプログラミングとSSHの使いかたは関係ないので他所へどうぞ。

711 :デフォルトの名無しさん:04/11/20 14:42:55
そうだそうだ、読解家や!


712 :709:04/11/20 22:04:34

お前等やくたたずだなw

713 :デフォルトの名無しさん:04/11/20 22:07:10
Punchingなんとかの次はsshか

714 :デフォルトの名無しさん:04/11/21 01:19:40
それにしてもOpenSSHはたかが暗号程度でなんであんな煩雑な構成になってんだろね
頭痛くない?

715 :デフォルトの名無しさん:04/11/21 01:23:33
ファイル転送もポートフォワーディングも鍵管理もしますがなにか?

716 :デフォルトの名無しさん:04/11/21 01:54:51
X11の転送もな

717 :デフォルトの名無しさん:04/11/21 02:16:29
Punchingなんとかってマジでいらねーな。
RAWソケットでTCP自作して、ちょっと小細工すればNAT越え出来るじゃん。
UDPみたいなエラー処理しなくていいし。TCPのプロトコルは公開されてるから何にも考えずに実装できるよ。
Kazaaの作者もSkypeにPunchingなんとかっての使ってるみたいだが、所詮素人だなw

718 :デフォルトの名無しさん:04/11/21 02:25:47
まぁどうにかして構って欲しいという意気込みは伝わった。

719 :デフォルトの名無しさん:04/11/21 07:03:45
分かったんなら構ってやれよ

720 :デフォルトの名無しさん:04/11/22 10:07:39


721 :デフォルトの名無しさん:04/11/22 18:21:38
UDPソケットとTCPソケットを同じポートにバインドして,
UDPソケット側でUDP hole punchingしていれば,
外部からのTCP接続を受けられ…ないか.
ルータのアドレス変換テーブルがTCP/UDPで共有されていれば
うまく行きそうだけど,だれもやってないということは,ダメなんだろうなぁ.

722 :デフォルトの名無しさん:04/11/22 18:48:05
>>721
> ルータのアドレス変換テーブルがTCP/UDPで共有されていれば

んな実装するエンジニアがもしいたらアホです。


723 :デフォルトの名無しさん:04/11/23 20:44:52
Rawソックでこういうの作ってみた
よかったらテストキボンヌ

http://jnc.s21.xrea.com/ipheader/index_ipincl.html

TCPも実装できるんだが
シーケンスナンバーの生成アルゴリズムがわからん
誰か教えて

724 :デフォルトの名無しさん:04/11/23 21:03:15
- Defending Against Sequence Number Attacks
http://www.faqs.org/rfcs/rfc1948.html
- Transmission Control Protocol
http://www.faqs.org/rfcs/rfc793.html
- Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html

G.R. Wright, W. R. Stevens, "TCP/IP Illustrated, Volume 2"



725 :デフォルトの名無しさん:04/11/23 21:10:51
>>724
キタ━━━ヽ( ゚∀゚ )ノ━ヽ(  )ノ━ヽ( ゚∀゚ )ノ━━━!!
サンクソ
とりあえず読んでみる



726 :デフォルトの名無しさん:04/11/23 21:11:50
>>723
ただRAWでパケット生成するだけのツールだろ
こんなのだったらソース付きで他にいくらでもあるだろ・・・

727 :デフォルトの名無しさん:04/11/23 21:22:03
>>726
( ´,_ゝ`)


728 :デフォルトの名無しさん:04/11/23 21:52:18
>>723
割り込みエラーでるぜ・・・



このダイアログ ボックスではなく、Just-In-Time (JIT) デバッグを呼び出すための詳細については、
このメッセージの最後を参照してください。

************** 例外テキスト **************
System.Net.Sockets.SocketException: ブロック操作は WSACancelBlockingCall の呼び出しに割り込まれました。
at System.Net.Sockets.Socket.SendTo(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags, EndPoint remoteEP)
at System.Net.Sockets.Socket.SendTo(Byte[] buffer, EndPoint remoteEP)
at IPhederIncl2.Form1.sendRawSock(Int32 SendCount, IPAddress sendhost_IP, Byte[] IPHEAD)
at IPhederIncl2.Form1.BuildByte()
at IPhederIncl2.Form1.Button_send_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)



729 :デフォルトの名無しさん:04/11/23 21:57:29


730 :723:04/11/23 21:59:40
>>728
まじ?
SrcAddrをDNSに問い合わせないときはIP直打してくれ
それ以外だとバグの原因はわからん。
テストは結構したんだが。

731 :デフォルトの名無しさん:04/11/27 14:40:38
Windows2003SP1でRawSockがつかえなくなったってまじですか?
もうWindowsとさよならする日がきたのかも

732 :デフォルトの名無しさん:04/11/27 14:41:54
WindowsXP SP2で使えなくなったという話は聞いたけど。

733 :デフォルトの名無しさん:04/11/27 14:54:09
>>732
それホント?

734 :マイク ◆yrBrqfF1Ew :04/11/27 14:56:46
>>723
Dbornか?

735 :デフォルトの名無しさん:04/11/27 15:03:40
>>733

RAW ソケットを使用した 1480 バイトを超えるデータの送信 (sendto) に失敗する
http://support.microsoft.com/kb/884942/JA/

http://www.google.co.jp/search?num=50&hl=ja&inlang=ja&ie=Shift_JIS&oe=Shift_JIS&q=WindowsXP+SP2+raw+%83%5C%83P%83b%83g&btnG=Google+%8C%9F%8D%F5&lr=


どうもまじらしいな
Windows2003/SP1はRawの受信はできるが送信ができないとか

736 :デフォルトの名無しさん:04/11/27 15:49:02
こんにちは

WinsockでHTTPS通信をしたいのですが、
方法がわかりません。

誰か詳細がわかるサイトをご存知ではないでしょうか?
ちなみに、SOFTBANK社のWinsockプログラミング2.0という本を持ってますが、
HTTPS通信に関して記述されてないみたいです。

737 :デフォルトの名無しさん:04/11/27 16:43:42
・・・マジですか?>SP2以降のWindowsではRAW使えない。

ヤバイです。(汗
今やってるプロジェクトでモロRAW使ってます。。。
完成寸前なのですが。。。
それが本当ならうちの会社はつぶれます。。。

738 :デフォルトの名無しさん:04/11/27 16:47:39
完全に使えないわけじゃないよ。日本語だと、
http://bbs.hotfix.jp/ShowPost.aspx?PostID=898
でも読んでくれよ。というか情報遅すぎ。> 君の会社

739 :デフォルトの名無しさん:04/11/27 16:51:22
>>738
RAQ ってなんですか?
ググッても痴呆のぼくにはわからないので教えてください

740 :デフォルトの名無しさん:04/11/27 17:30:05
RAWのタイポ

741 :デフォルトの名無しさん:04/11/27 20:34:13
ソースアドレス偽装をしたUDPが使えないのか。
でも、SkypeとかってPunchingHoleUDP使ってシンメトリックNATを通過出来るから
恐らくUDPのソースアドレスを偽装してやってるんだと思ってたけど、これがSP2でも使えるのは何故?


742 :デフォルトの名無しさん:04/11/27 21:39:04
OpenSSLのWindowsへのコンパイルですが
http://waga.homeip.net/openssl/install_win.html

C:\src\openssl-0.9.6a>nmake -f ms\ntdll.makのコマンドを入れたら

>cryptlib.c
>crypto\cryptlib.c(59) : fatal error C1083: インクルード ファイルを開けません。'stdio.h': No such file or directory
>NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
>Stop.

となり、コンパイルがSTOPしてしまいます。

原因がわかりません。
どのように対処すればいいのでしょうか?

ご返答いただけると、助かります。

743 :デフォルトの名無しさん:04/11/27 23:20:11
>>741
普通のNATだろ?

744 :デフォルトの名無しさん:04/11/28 00:35:27
>>743
Skypeってシンメトリックは無理なの?
てっきり出来ると思ってたから、どうやってるんだろうな?と不思議だったのだが・・・

745 :デフォルトの名無しさん:04/11/28 00:48:28
レジストリ書き換えれば送信出来るようになるらしい

746 :デフォルトの名無しさん:04/11/28 01:07:14
>>745
詳しくplz

747 :デフォルトの名無しさん:04/11/28 01:10:56
Skypeがレジストリ書き換えるとは考えられない。
もしかすると、シンメトリックの場合だけ通信が可能なノードに仲介してもらうとかなのかな?

748 :デフォルトの名無しさん:04/11/28 01:56:16
>>741>>744>>747
シンメトリックだと何がどう問題になると思っているわけ?
>>738をちゃんと読んでいる?

749 :デフォルトの名無しさん:04/11/28 02:05:31
>・無効なソースアドレスによるUDPデータグラムはRAW socketで送信できない。送出されるあらゆるUDPデータグラムのIPソースアドレスは必ずネットワークインターフェイス上に存在しなければならない。そうでない場合データグラムはドロップされる。

これを問題視してるんじゃないの?
つまり、シンメトリックは双方のアドレスまでチェックするのでPunchingHoleUDPをそのまま使っては駄目
そこでRAWソケットでソースアドレスを偽装したUDPを作成し使おうとするのだが
ここで上記の制限のおかげで、無理 と

750 :デフォルトの名無しさん:04/11/28 02:55:03
>>749
根本的に理解してないのでは?

プログラミング興味ない人は↓でもどうぞ。
http://www.skype.com/help/faq/windows.html

751 :デフォルトの名無しさん:04/11/28 04:11:54
おいブタども、X800って10800っていう意味だって知ってたか?




752 :デフォルトの名無しさん:04/11/28 04:36:36
( ・∀・)つ〃∩ ヘェーヘェーヘェー

関係ない話なので>>751
死ね

753 :デフォルトの名無しさん:04/11/28 07:35:01
RADEONのことかー!

754 :sage:04/11/28 08:12:45
TCPで通信したい場合、WinsockではWSASocket(AF_INET, SOCK_STREAM, 〜
とソケットを作成する事で可能で、
「ホストAからホストBへ1000バイトデータを送る」場合、
ホストBではrecv一回のコールで1000バイト取得できない場合もあるので、
recvを1000バイト取得できるまで、コールする必要がありますよね?

ここで質問なのですが、
プロミスキャスモードで受信する場合でも、上記と同様に
「IPパケット」が分断された状態で受信される事はあるのでしょうか?
同様にIPパケット長だけ受信できたかチェックし、できていない場合は再度
recvをコールする必要があるのでしょうか

実装例はたまに見るのですが、受信部を見るとrecv一回しかコールしないよう
になっており、「IPパケットだから分割されて受信する事はないのかな?」
と思いつつ、これを正解とする資料を見つけ出せませんでしたので、質問しま
した

これについてご存知の方がいるならば、教えていただけませんか

755 :デフォルトの名無しさん:04/11/28 13:26:29
あります

756 :デフォルトの名無しさん:04/11/28 14:51:20
>>742
Microsoft Visual Studio\VC98\Bin\VCVARS32.bat

757 :デフォルトの名無しさん:04/11/28 14:54:40
バージョソによってVCVARS32の場所が違うな

758 :デフォルトの名無しさん:04/11/28 14:57:21
環境のためのメモリが足りません

759 :デフォルトの名無しさん:04/11/28 14:58:07
今更9x系使ってるのかよ(w

760 :デフォルトの名無しさん:04/11/28 15:15:44
行番つけサーバ作ってるんですが、なぜかだめです。
@平行サーバ
Apipeを駆使して、クライアントからのデータを”cat -n”に与え、結果をもらったら、クライアントに送り返す、というやつなんですが、、、

おかしなところあったら、指摘してください。↓

pipe(fd),pipe(fd2)

while (1) {
cfd=accept(lfd,(struct sockaddr*)NULL,NULL);
printf("accept OK.\n");
if ((pid=fork()) < 0) {
perror("fork");exit(1);}
if (pid == 0) { /* child */
close(lfd);
printf("fork OK.\n");
while ((nbytes=read(cfd,buf,sizeof(buf))) > 0) {
if ((pid2=fork()) < 0) {
perror("fork2");exit(1);}


761 :デフォルトの名無しさん:04/11/28 15:16:38
if (pid2 == 0) { /* child-child */
printf("fork2 OK.\n");
dup2(fd[0],STDIN_FILENO);
close(fd[0]);close(fd[1]);
dup2(fd2[1],STDOUT_FILENO);
close(fd2[1]);close(fd2[0]);
execlp("cat","cat","-n",(char*)NULL);
perror("cat");
exit(1);
}
close(fd[0]);close(fd2[1]);
printf("OK1 ");
write(fd[1],buf,nbytes);
printf("OK2 ");
nbytes=read(fd2[0],buf,sizeof(buf));
printf("OK3 ");
write(cfd,buf,nbytes);
while (wait(&status) != -1)
; /* do nothing */
}


762 :デフォルトの名無しさん:04/11/28 15:18:05
close(fd[0]);close(fd[1]);close(fd2[0]);close(fd2[1]);
exit(0);
}
close(fd[0]);close(fd[1]);close(fd2[0]);close(fd2[1]);
while (wait(&status) != -1)
; /* do nothing */
}

763 :デフォルトの名無しさん:04/11/28 15:24:53
質問です

URLEncoder.encode("書き込む","Shift_JIS")と同等の働きをするWin32APIはありますか?
もしなければ、Windowsアプリケーションではどのようにすればいいのでしょうか?(文字列のShift_JIS化)

ご返答いただけると助かります。

ちなみに、今抱えている問題は
http://kage.monazilla.org/system_DOLIB100.htmlの認証方法の仕様です。

●を使って書き込みたいので、https://2chv.tora3.net/futen.cgiからセッションIDを受け取り
POSTの際、セッションIDを使ってログインし書き込みます。

セッションID→Monazilla/1.00:!mCIuG#RzAP61Y6n7peOor/1〜(省略)

でもその際、Javaアプリだとうまくログインできるのですが、Win32アプリだとログインがされないのです。
エンコード関係に問題があると思いまして、ご質問したまでです。

764 :デフォルトの名無しさん:04/11/28 15:35:31
マルチ

765 :デフォルトの名無しさん:04/11/28 16:39:59
こんなのすらわからんやつが書くソフト使う方も災難だな。


766 :デフォルトの名無しさん:04/11/28 19:13:53
>>763
for(c=0;c<strlen(sessionID);c++){
   wsprintf(encode,"%%%x",sessionID[c]);
}

簡単に書いたが、それの場合特殊文字だけをASCII文字へ変換しないとLoginできないんやとおもう。
そのセッションIDを一文字づつ特殊文字かどうか調べ、特殊文字ならprintfでASCII文字へ変換すればいい。
この辺はクセが強いから難しいだろうけどガンガレ。

767 :デフォルトの名無しさん:04/11/28 19:15:59
>>742
誰も返答してないみたいなので一言
このスレでOpenSSLがきちんと分かる人はいないと思う。
あまり期待しないほうがいい。

俺もよくは知らんが^^

768 :デフォルトの名無しさん:04/11/28 19:19:47
>>767
どんな難問かと思ったらただのコンパイルエラーかよ
がっくりさせるな

769 :デフォルトの名無しさん:04/11/28 19:21:06
>>768
じゃどうしてコンパイルエラーになるのか答えてみぃー^^

770 :デフォルトの名無しさん:04/11/28 19:35:55
>>767
よくわからんが、
漏れの環境だとActivePerl、ml.exe、MSVC6.0SP5が入ってて、
openssl-0.9.7dのバイナリは作成できてる。
途中でmasm使うやつな。

INSTALL.W32の中読めとしか言えんな。
OpenSSL使ってないけどな。

771 :デフォルトの名無しさん:04/11/28 19:39:20
だって、どう見たって、「stdio.hが見つからない」だよ。
INCLUDEを設定するためのvcvars32.batを実行してないだけでしょ。

ネットワークプログラミングとは全く関係ない。

772 :デフォルトの名無しさん:04/11/28 21:17:04
ネットワークプログラミング始めたばっかなんですけど
ルータ通してインターネットに接続してる場合
なんか特別な設定しないでも外にデータ飛んでくれますか?
ポートマッピングはしました、どうか教えてください

773 :デフォルトの名無しさん:04/11/28 21:29:50
>>772
どういう通信でどういう不都合が起こると想定して言ってるのかをまず説明すれば?

ただアドレス指定してコネクトするだけのプログラム書くのに普通はルータ云々を
考慮することはないと思うけど。ルーティングの仕組み自体について理解がない
んならそっち勉強してきてからだな。

774 :772:04/11/28 22:13:13
>>773
申し訳ないです

IRCクライアントを作ろうとおもってwinsockの勉強しているのですが
とりあえずconnectだけさせるプログラム書いて実行させたのですが
10060エラー(接続要求がタイムアウト)がでてしまい
いろんなとこに接続させようとしてもかわらず
とりあえずあえてポート番号間違えて打って実行させたら10061エラー(接続拒否)
が出たのでプログラムは間違っていないのではないかと思い
質問させてもらいました

俺がただ単にプログラムを間違えてるだけなのでしょうか?よろしくお願いします

775 :デフォルトの名無しさん:04/11/28 22:17:02
windump(>>3)で追跡しろ。
想定しているIPアドレス、ポート番号に接続しようとしているか。

776 :754:04/11/28 23:12:10
>>755

ありがとうございます
やはり受信データ長をチェックする必要はあるのですね

もしこれについて、何か注意を促している書籍、情報へのポインタをご存知でしたら、
教えていただけないでしょうか?


777 :デフォルトの名無しさん:04/11/28 23:17:08
何故受信データ長?
接続段階で失敗してるんでしょ。

778 :774:04/11/28 23:22:03
>>775
ありがとうございました
WinDumpで追跡したら、ポートが変になっていたので見てみたら
htonsしていなかっただけでした、athlonだからいらないと思ってました;

779 :775:04/11/28 23:50:55
>>778
予想通りの結果でした(w

780 :デフォルトの名無しさん:04/11/29 00:06:17
>athlon
一瞬新しく追加されたPOSIXの関数かと思ったよ・・・

781 :デフォルトの名無しさん:04/11/29 00:09:19
At Host Local Network

782 :デフォルトの名無しさん:04/11/29 00:39:08
Athlonは魔法の石ではない。

783 :athlonだからいらないと思ってました;:04/11/29 03:36:37
athlonだからいらないと思ってました;

784 :デフォルトの名無しさん:04/11/29 03:46:48
alphaと間違えてるとか。alphaがbig endianか知らんけど。

785 :デフォルトの名無しさん:04/11/29 18:21:06
athlonなら毛糸洗いに自信がもてるよ。

786 :デフォルトの名無しさん:04/11/29 18:54:41
athronな

787 :デフォルトの名無しさん:04/11/29 19:02:42
Ruby!!!!!!!!!!!!!!!!!!!!!!! >>>>>>>>>>>>>>>>>>>>asshole

788 :デフォルトの名無しさん:04/11/29 19:19:21
athlon>>|超えられない壁|>>Ruby!!!!!!!!!!!!!!!!!!!!!!! >>>>>>>>>>>>>>>>>>>>asshole>>>>>>
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<お前

789 :デフォルトの名無しさん:04/11/29 20:24:08
Rubyは

790 :デフォルトの名無しさん:04/11/29 20:25:48
最高!

791 :デフォルトの名無しさん:04/11/29 20:30:25
何この変な荒れ方

792 :デフォルトの名無しさん:04/11/29 21:57:23
IPやTCP, ICMP等のパケットを自分で作りたいんですが、それぞれの関係や、具体的なデータの例を出して解説してるWebサイトってありませんか?
(UDPパケットはIPパケットのデータ部分に含まれてるとか、そういうプロトコル同士の関係とか)

793 :デフォルトの名無しさん:04/11/29 21:59:27
仕事なら金を惜しむな。遊びならそんな怪しげなことするな。

794 :デフォルトの名無しさん:04/11/29 22:26:49
>>792
ソース付きでその手のサンプルはいくらでも落ちてるし
プロトコルについて知りたいならそれ用のリファレンス・サイトに行けば良い

それが面倒なら本でも買えば?
ttp://www.esbooks.co.jp/books/detail?accd=31445555

795 :デフォルトの名無しさん:04/11/29 22:27:29
金を惜しむならRFC読め。
http://www.rfc-editor.org/

時間を惜しむなら本を読め。
ComerのInternetworking with TCP/IPが代表的な教科書。
なぜかamazonにはハードカバーしか載ってないが、
安めのペーパーバックのものもあるはずなんだが(北米以外では)。



796 :デフォルトの名無しさん:04/11/29 22:56:08
http://www.amazon.co.jp/exec/obidos/ASIN/4274064247/
http://www.amazon.co.jp/exec/obidos/ASIN/4274065847/


797 :デフォルトの名無しさん:04/11/29 23:49:52
>>792
http://www.stackasterisk.jp/tech/program/howtosniff02_01.jsp
ここなんかどうですか?
C#言語でipヘッダ偽装する例が書いてありますよ。
もし、ここの応用でSYN FLOODなんか実装できたらソースここに乗せてくださいね。

798 :デフォルトの名無しさん:04/11/30 00:29:35
これがソースとしては良いんだろうが大きすぎて簡単に見通せないか・・・
ttp://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/

あんまりきれいなものじゃないけど簡単なものならこういうのとか・・・
ttp://www.geocities.jp/bruce_teller/security/garakuta.htm


RAW socket windows VC とかで検索

799 :デフォルトの名無しさん:04/11/30 00:55:26
>>792
XPのSP2だと(以下このスレを読め


800 :デフォルトの名無しさん:04/11/30 06:42:37
(* ̄▽ ̄) 脱Port0 winny総合質問別館3 (* ̄O ̄)
http://tmp4.2ch.net/test/read.cgi/download/1100272846/

801 :デフォルトの名無しさん:04/12/01 06:40:37
age

802 :デフォルトの名無しさん:04/12/01 06:40:59
>>801
ありがとう

803 :デフォルトの名無しさん:04/12/01 08:03:27
質問です。
HTTPのクライアントをWinsockで作成しています。
ttp://blog.goo.ne.jp/index.php?fid=freshEntryRss
なんですが
HTTP/1.0とHTTP/1.1とバージョン番号を変えただけで取得する内容が異なってしまいます。
具体的には1.1の場合データ部の先頭に
”17a36”
のような形の文字列がつき、末尾には
2
(改行略)
0
などといったものがつきます。
他のURLではどちらにしても同じ内容がかえってきます。
レスポンスヘッダはどちらも
HTTP/1.1 200 OK
となっています。
何が原因でこういったことが起きるのでしょうか?
また先頭と、末尾にくっついたものはなんなのでしょうか?
わかる方がいらっしゃいましたら教えてください。お願いします。

804 :デフォルトの名無しさん:04/12/01 08:23:59
chunked

805 :803:04/12/01 08:56:36
chunked…
OKわかりました。ありがとうございます。

…あきらめます。

806 :デフォルトの名無しさん:04/12/01 09:21:42
>>796
この本、よさそうなんだけど、サンプルコードがCなのか、、、

807 :デフォルトの名無しさん:04/12/01 11:25:14
>>806
漏れは昨日ゲッツしたよ。
いまサンプルコードをC#に修正中。

808 :デフォルトの名無しさん:04/12/01 13:09:26
ストリームソケットで質問です。
連続してsend()を行った場合、
recv()すると、send()したデータが繋がって受信してしまいます。
分けて受信する方法は無いのでしょうか?

受信するバッファは、どんなデータが来ても良いように、
多めに取っています。
送信する際に \0 を付けてやると、1つ目は \0 の場所で受信するのですが、
残りを受信する際に、また連続で取れてしまいます。

送る側
send( "a\0" );
send( "bc\0" );
send( "def\0" );

受け取る側
char* pcBuf = new char[ 100];
while( 1 ){
recv( pcBuf );
printf( "%s\n", pcBuf )
}

//結果/////////////
a
bcdef

↑こんな感じになってしまいます。

809 :デフォルトの名無しさん:04/12/01 13:18:41
FAQ嫁

810 :808:04/12/01 13:41:38
FAQ読みました。
大体理解できました。
ありがとうございます。
というか、\0あってもなくても変わらないし...orz

811 :デフォルトの名無しさん:04/12/01 17:00:34
Winsockの質問です。
TCPでサーバ動作させているとき、サーバソケットはオープンしたままで
接続先ソケットをclosesocketしても問題ないでしょうか?
サンプルを見てみると、異常時には接続先ソケットを切断しているので、
処理としては問題ないように思うのですが…。


812 :デフォルトの名無しさん:04/12/01 18:06:19
>>796
このURLアホみたいに貼る奴いるけど
作者か出版社か?あんまりしつこいと業者の宣伝として通報するぞ

813 :デフォルトの名無しさん:04/12/01 18:37:15
先輩いわく
データとデータの間は1秒休みが基本だぜ!


・・・マジかよ

814 :デフォルトの名無しさん:04/12/01 18:48:38
合ってるよ

815 :デフォルトの名無しさん:04/12/01 21:05:15
>>811
shutdownした場合と、closesocketした場合に、
blockingされていたrecvの戻り値を比べて見なされ。

816 :デフォルトの名無しさん:04/12/01 23:57:02
>>810
> というか、\0あってもなくても変わらないし...orz

sendのところ省いて書いてるけど、strlen("ab\0")してない?
\0も送りたければ、strlen + 1だぜ?

>>813
その先輩はabsolutely糞。

817 :デフォルトの名無しさん:04/12/02 00:27:56
>その先輩はabsolutely糞。
現実的かつ具体的にどう糞なのかを説明してください。

818 :デフォルトの名無しさん:04/12/02 01:35:16
脳みそにウジ虫湧いてる。108匹/cm^3

819 :デフォルトの名無しさん:04/12/02 01:45:38
要は相手が受け取れる速度でデータを送れってことだ。
アプリが固まった時にマウスをクリックしまくる奴は糞。


820 :デフォルトの名無しさん:04/12/02 01:59:52
>>819
そういうアプリを作る奴こそが糞なんだけどな。
同期型ソケットしか使えない愚か者が愚痴をこぼすスレじゃないんで
無能さを露見するような恥ずかしいレスはしないでくれ。

821 :デフォルトの名無しさん:04/12/02 02:14:46
>>819
ねずみ虐待で訴えられますから。

822 :デフォルトの名無しさん:04/12/02 02:19:01
>>821
はぁ?なにそれ
馬鹿?あんた馬鹿か?面白いの?それ。お前、面白いって思って打ったのか?!
どんなツラして送信したんだ?いっぺん鏡みてみろよ!

823 :デフォルトの名無しさん:04/12/02 02:30:46
う〜ん、マンダム。

824 :デフォルトの名無しさん:04/12/02 07:26:38
>>822
それは>>820に言うべきだ。

825 :811:04/12/02 08:34:14
>>815
む、やってみます。
素人な質問に答えていただいて感謝。

826 :デフォルトの名無しさん:04/12/02 08:52:11
>>822
>>819の荒しネタに>>820まじレスだから、
和ませようと必死の思いで呆けたんですが失敗しました。
お詫びに腹を切ります(プシュー

おまけ
Raw IP Networking FAQ
http://www.whitefang.com/rin/

827 :デフォルトの名無しさん:04/12/02 09:11:44
Raw IPの話題をするのは厨房ときまってる
Raw IPがわかってたら質問自体しないしな

828 :デフォルトの名無しさん:04/12/02 09:29:42
>>826の荒しネタに>>827まじレス  か

829 :デフォルトの名無しさん:04/12/02 22:34:24
   /    // ̄ ̄\ヽ             /: : : : .   :`l、
   |   │| /^l l^ヽ |            ∠-'''´: ̄ ̄``ヽ、|
   |   │| l:::::l l:::::l |           /: : : : .       . : \
   |   │|┌┐┌┐|          l : : : : ._,: -‐-:、_ . : .:.:/
   |   │| l::::l .|::::l .|          l_ ,::-'''´ _,. --:、_`''-、_/
   |   │\┘.└'/|          |_,. ,.::-: :|| |   `''-、|
   |──┴────┤          .|,l.|,l-、!ー┘ニニ二r|!r-、
   l::-‐―――‐―=―‐ヽ      r‐:-.、 iハ!'´li゙}゙f|  '´lリ` |l}、l  ,r‐‐v‐、
   /   ノ リ ル' レ' リ リ`ー-ー`    /   (_i_ノl l;  ̄.ソ     ̄ j「ノノヽ.(_ァ ノ .)
  / レヽ| '"^二´   `ニ^h     /ヽ、_,..:.:.:,ノヾ!  Lャ-     ,!r':. ヾ:. .  ' ,ノ゙)
 く  { ^r  ゙⌒////(⌒ { |    l:.: .  '. .:.:/ .:',  ーニ-''"  /::.:i:.: `:.: .  `ー-く
  ヽ ヽ.( ij       ∠ィ リ     >、.__,. ': .;ノ / i、  ー' /! ヽ ::.: :`.ヽ.、__)  )
.  ヽ ド、 r ⌒`ー--‐1 ,'    (    '. .:.:  _」 \_/ ,!  `ヽ、、_:.: : . ヽ、,ノ
    ヽl ト、ヽ.       l /     \__,,、-‐''"´ |i    , ′    `ー- 、..__,ノ゙
     リ \` -─- , '      /   `‐- _ ′!    /  !  _,..、 ''"´  ``丶、
 ─- ..⊥.   ` ー- イ-‐''" ̄ヽ. /  _   ヾ    ̄`` r┴'''"´ ̄   -''゙

830 :デフォルトの名無しさん:04/12/02 22:40:02
えーっと、、、保守

831 :デフォルトの名無しさん:04/12/02 23:30:06
保守は上げなくても良いと何度いったr(ry

832 :デフォルトの名無しさん:04/12/02 23:42:44
>>831
いちいち数えてない

833 :デフォルトの名無しさん:04/12/03 03:18:57
パンの枚数を(r

834 :デフォルトの名無しさん:04/12/03 03:28:32
13枚
私は和食ですわ

835 :デフォルトの名無しさん:04/12/03 06:50:25
>>833
ジョジョ?

836 :デフォルトの名無しさん:04/12/03 19:19:00
WindowsをクライアントでLunuxをサーバーという
アプリケーションを作りたいのですが、Winsockを
解説したサイトだと、WinsockとLinuxのsocketとは
互換性がなく、繋がらないで、送受信が出来ないという
のを見たのですが、もし、Windowsのクライアントと
Linuxサーバーを作るとしたらJavaくらいしか
ないのでしょうか?

それか、Linuxのsocket互換のWindowsのsocketを
作るしかないのでしょうか?

すいませんが宜しくお願いします。



837 :デフォルトの名無しさん:04/12/03 19:23:14
そのサイトのURL晒してくれ

838 :デフォルトの名無しさん:04/12/03 19:24:08
>>836
>Winsockを解説したサイトだと
どこだ、そのDQNサイトって

839 :デフォルトの名無しさん:04/12/03 19:25:50
ありえねーよw
その理論だと、Linux + Apacheサーバなサイトは、Windowsじゃ見れないことになっちまうんじゃないのか?w

840 :デフォルトの名無しさん:04/12/03 19:26:21
そこまでDQNなのも珍しいんじゃなかろうか。


841 :デフォルトの名無しさん:04/12/03 19:38:06
プログラムをそのままもっていっても動かないというだけで、

> WinsockとLinuxのsocketとは互換性がなく、繋がらないで、送受信が出来ない

なんて事は全くない。
あなたがどちらを普段使っているか知らないが、
Windows(IIS)のサーバにも、Linux(Apache)のサーバにも問題なくつながるでしょう。

その糞ページの記述は全て無視すること。

842 :841:04/12/03 19:38:41
かぶった…orz

843 :デフォルトの名無しさん:04/12/03 19:59:17
その糞サイト、どこなのか知りたいよー。

単に836が理解していないだけって可能性も大だけど。

844 :デフォルトの名無しさん:04/12/03 20:31:15
その後、836の姿を見た者はいない・・・

845 :デフォルトの名無しさん:04/12/03 21:00:35
FireFoxでIE用のサイトが見られないのは有名な話。

846 :デフォルトの名無しさん:04/12/03 21:10:49
>>845
それはSocket云々じゃなくて、ブラウザのレンダリングエンジンの差じゃ?

847 :デフォルトの名無しさん:04/12/03 21:13:39
>>836の内容と>>845の内容にどんな関連があるのか、
それは世界中で845しか知らない。

848 :デフォルトの名無しさん:04/12/03 21:34:33
TCP/IPという共通のルールがあって成り立ってるのがインターネットなわけですよ
OSがなんだろうが開発環境がなんだろうがインターネットで通信するってことは
そのTCP/IPの流儀に合わせてやるということなんですよ

849 :デフォルトの名無しさん:04/12/03 21:37:50
ここでリセット

------------------------------------------------------------
ノーマルモード


850 :デフォルトの名無しさん:04/12/03 21:42:14
FireFoxでIE(ry

851 :デフォルトの名無しさん:04/12/03 22:34:08
改行コード間違ってるんじゃないのか

852 :デフォルトの名無しさん:04/12/03 23:12:59
>>836
> 解説したサイトだと、WinsockとLinuxのsocketとは
> 互換性がなく、

までを書いてあったんじゃないかと思う。同じC言語開発環境でsocketを扱っても
コードの互換性はないって言いたいだけじゃない?そこから後の部分は>>836
勝手に思ったことだろ。だって「つながる」のなんのってのと「ソケット」云々っての
は話のレベルが違う部分だから。

853 :デフォルトの名無しさん:04/12/03 23:48:48
Pentium4で送信したデータをPowerPCで読み込むと化けるのは有名な話。

854 :デフォルトの名無しさん:04/12/03 23:49:50
エンディアン違いもいいとこ

855 :デフォルトの名無しさん:04/12/03 23:50:42
こうして質問とは関係なく予想だけで論争が始まる
 ↓

856 :デフォルトの名無しさん:04/12/04 00:47:31
さがりすぎ

857 :デフォルトの名無しさん:04/12/04 01:03:01
つーかおまえらさすがに釣られすぎだろ。スルーしろよ。


858 :デフォルトの名無しさん:04/12/04 01:23:05
WinsockとLinuxのSocketはm9(^Д^)プギャー

859 :デフォルトの名無しさん:04/12/04 01:47:04
IEコンポーネントの話も、ここで良いのかな?

ATLってのを使ってSDKで、IEコンポーネントをウインドウに貼り付けました。
それでIEコンポーネントをサブクラス化にしても、キーボードをフックしても
いつのまにか、キーボードのメッセージが飛んで来なくなります。

どうやって、キーボードのメッセージを捕まえたら良いですか?

860 :デフォルトの名無しさん:04/12/04 01:47:52

開発環境は、VC++6.0 (SP6)、OS 2000(SP4) 使ってます。

861 :デフォルトの名無しさん:04/12/04 01:57:09
おまえ「IE」ってついてるだけで→Web→ネットワークって発想だろ。
質問する場所考えるときにもっと頭使えよ!

862 :デフォルトの名無しさん:04/12/04 02:07:59
昔、IEコンポーネントスレってあったような気がするんだけど、どこいっちゃったの?

863 :デフォルトの名無しさん:04/12/04 02:13:30
数日前に落ちた。

864 :デフォルトの名無しさん:04/12/04 02:15:50
980越えで落ちてそのまま。

俺は、WinInetならともかく
IEコンポーネントやFireFoxとネットワークプログラミングは
殆ど関係なく、思い切りスレ違いだと思ってるけどね。

865 :デフォルトの名無しさん:04/12/04 03:24:30
>>859
http://pc5.2ch.net/test/read.cgi/tech/1095185498/

866 :デフォルトの名無しさん:04/12/04 04:04:13
>>865
こっちだろ
ATL/WTL Part3
http://pc5.2ch.net/test/read.cgi/tech/1095442366/

867 :デフォルトの名無しさん:04/12/04 06:15:33
Linuxのsocketはオープンソースですが、
winsockはクローズドソースなので、相性が悪いです。

868 :デフォルトの名無しさん:04/12/04 06:59:47
???

869 :デフォルトの名無しさん:04/12/04 07:26:15
嫁と相性が悪いのはソケットのせいでしょうか?

870 :859:04/12/04 08:21:08
>>861>>864
発想はその通りです。
このスレだとネットワーク全体のこと、やってるのかなと思って
質問させてもらいました。
勉強不足で、すみません。

>>862
昔みかけたことあったので、そのスレに聞きたかったのですが
落ちてたんですね。

>>865>>866
誘導ありがとうございます、過去ログ読んで来ます。

871 :デフォルトの名無しさん:04/12/04 08:51:11
>>853
そんな話あったっけ? と思ったが、
ネットワーク・バイトオーダーを知らん知障だったってことか。




872 :デフォルトの名無しさん:04/12/04 09:27:52
すぐに分からない871も・・・

873 :デフォルトの名無しさん:04/12/04 09:37:53
勘弁してやれ。当たり前のことすぎて気付かないってことはあるもんだ。

874 :デフォルトの名無しさん:04/12/04 10:20:34
>>871 は池沼認定です。おめでとう!!!

875 :デフォルトの名無しさん:04/12/04 10:32:14
ここでリセット

------------------------------------------------------------
再開


876 :デフォルトの名無しさん:04/12/04 10:44:39
1台しかPCを持っていない場合、
ネットワークプログラミングの勉強をするにはどうしたらいいのかな。

ものすごく基礎的な話題にしてみるテスト

877 :デフォルトの名無しさん:04/12/04 10:45:18
internetに接続されたPCのほとんどがIntel PCだというのに、
ネットワーク・バイト・オーダーがbig endianというのは
はっきり言って無駄である。

878 :デフォルトの名無しさん:04/12/04 10:50:39
じゃあ変えとけ。

879 :デフォルトの名無しさん:04/12/04 10:50:53
>>876
TCPのクライアント/サーバなら一台でできるよ。

どうしても別ホストへの接続がやりたいなら、
VMWareやVirtualPCなどのエミュレータを導入するとか。
coLinuxもおすすめ。

勉強だったらこの環境でゲップが出ると思う

880 :デフォルトの名無しさん:04/12/04 11:12:03


「ネットワーク・バイト・オーダーをlittle endianとする会」



881 :デフォルトの名無しさん:04/12/04 11:15:05
127.0.0.1 を相手に通信する

882 :デフォルトの名無しさん:04/12/04 11:16:11
普通テキストファイルは big endian だろうが。

883 :デフォルトの名無しさん:04/12/04 11:42:57
ネットワークの話してるんだけど?
スレ違いも甚だしい

884 :デフォルトの名無しさん:04/12/04 11:44:46
>>877
定量的にどれだけ無駄かを示せ。

885 :デフォルトの名無しさん:04/12/04 12:09:16
>>876
中古でボロそうなPCを買ってくるという手も

886 :デフォルトの名無しさん:04/12/04 12:25:55
性善説のUNIXサーバを使え。

887 :デフォルトの名無しさん:04/12/04 12:38:23
>>876
「Virtual Server 2005」 イイヨ

888 :デフォルトの名無しさん:04/12/04 13:19:03
>>876
localhostとloopback network interfaceを。
ネットワークにつなぐ必要すらない。

889 :デフォルトの名無しさん:04/12/04 14:48:28
>>888
>>881

890 :デフォルトの名無しさん:04/12/04 16:41:22
>>888
>>879

891 :デフォルトの名無しさん:04/12/04 16:47:40
てか鯖クラックすればいいじゃない

892 :デフォルトの名無しさん:04/12/04 20:36:32
>>890
>>879は厳密には1台とは言えんでしょ

893 :デフォルトの名無しさん:04/12/04 20:50:47
確かに「1台のコンピュータにインストールできます」ってライセンスでも
実記と仮想PCの両方にはインストールできない場合が多いな
ところで死ぬほどどーでもいーが喪前らFireFoxじゃなくてFirefoxですよ

894 :デフォルトの名無しさん:04/12/04 21:02:21
だから性善説の(ry

895 :デフォルトの名無しさん:04/12/04 21:07:32
>>877
Intelがビッグエンディアンにすりゃ問題解決だよなぁ、
と常々思っています。

896 :デフォルトの名無しさん:04/12/04 21:42:50
いまさら変えられない

897 :デフォルトの名無しさん:04/12/04 22:10:41
そういうわけなんです。>>877

898 :デフォルトの名無しさん:04/12/04 22:17:25
>877
組み込み系はビッグエンディアンが多いが...
ネットにつなぐのはPCに限らない
携帯とか、いろんな機器類とかね

899 :デフォルトの名無しさん:04/12/04 22:23:08
まあ、独自プロトコルなら困らないでしょうけど。

900 :デフォルトの名無しさん:04/12/04 22:36:36
というか、通信データ内で、integer型が占める割合ってどのくらいよ?
byte swapが無駄なんて考えている事自体、時間の無駄だと思うけど。

901 :デフォルトの名無しさん:04/12/04 22:40:57
>>900
精神分裂病か?
一行目と二行目に関連がないぞ

902 :デフォルトの名無しさん:04/12/04 22:58:08
>byte swapが無駄なんて考えている
誰もそんなこと言ってない。

903 :デフォルトの名無しさん:04/12/04 23:01:13
>通信データ内で、integer型が占める割合ってどのくらいよ?
どうやって調べろと?

904 :デフォルトの名無しさん:04/12/04 23:05:42
無駄という話ならそんなどうでもいいことより
チェックサム計算しながら使われていないとか
もっと気にすることがあるだろ

905 :デフォルトの名無しさん:04/12/04 23:16:10
>901
こらこら。

ちゃんと、総合失調症と呼びなさい。
ttp://www.pref.okayama.jp/hoken/seishin/kosyou4.htm

906 :デフォルトの名無しさん:04/12/05 00:06:12
そういえばさ、
TVでちらっと見ただけなので、詳しいことは知らんが、
痴呆症が認知症に名称変更されるらしいね。

907 :デフォルトの名無しさん:04/12/05 00:55:51
>>905
リンク先には「統」合失調症って書いてますけど

908 :デフォルトの名無しさん:04/12/05 01:45:08
クローズド・ソースならbyte orderは好きにしてくれていい。

オープン・ソースは、network byte orderを使うのが原則。

909 :デフォルトの名無しさん:04/12/05 02:39:44
>>906
そうです。「認知障害」という案も出たそうなのですが、
すでに心理学で使用されているとかで。

910 :デフォルトの名無しさん:04/12/05 02:53:42
>>908
???

911 :デフォルトの名無しさん:04/12/05 02:57:02
>>908
リトルエンディアンかビッグエンディアンかの話なんだが?
リアル池沼?

912 :デフォルトの名無しさん:04/12/05 03:22:45
>>911
何か変な事言ってるの?

913 :デフォルトの名無しさん:04/12/05 03:23:38
>>911
阿呆か。ソースがクローズドかオープンなのかは関係ない。

914 :デフォルトの名無しさん:04/12/05 03:25:19
Intel以外のCPUを使えばいい。

915 :デフォルトの名無しさん:04/12/05 04:20:34
オープン・ソース・バイト・オーダー
というのを決めればいいと思うんだ。


916 :デフォルトの名無しさん:04/12/05 04:29:23
>>915
その定義をして下さい。

917 :デフォルトの名無しさん:04/12/05 07:52:41
バイトオーダーくらいカタカナで書け

918 :デフォルトの名無しさん:04/12/05 10:56:49
>>917
はあ?

919 :デフォルトの名無しさん:04/12/05 10:57:32
>>918

920 :デフォルトの名無しさん:04/12/05 11:24:28
>>911
> リアル池沼?

アリトル


921 :デフォルトの名無しさん:04/12/05 12:14:45
ネットワークバイトオーダーの実体がlittleだろうがbigだろうが、
アプリ側でntoh,htonをサボるいいわけには成らないよ。

922 :デフォルトの名無しさん:04/12/05 12:38:28
統一すれば無駄が省けるって話だろ。
いくら劣勢とはいえゴキブリのようなbig連中を死滅させるのは難しいが。

923 :デフォルトの名無しさん:04/12/05 13:13:00
>>898
ルータなんかはPowerPC, MIPS系が多いからね。 ネットワークコード書くのにバイトスワップを
しなくて良いのはやっぱり楽よ。

924 :デフォルトの名無しさん:04/12/05 16:42:37
こんなにあほな流れが続いてるとは思わんかった


925 :デフォルトの名無しさん:04/12/05 17:19:00
>>921
だから、「オープンソース・バイトオーダー」にしよう、と。

926 :デフォルトの名無しさん:04/12/05 17:29:50
パケットモニタで見たとき読みやすいし

927 :デフォルトの名無しさん:04/12/05 18:01:18
SMTP-POP等のメール用(?)サーバを経由せずに、メールを相手に確実に届ける方法ってありますか?
相手のIPアドレスだけがわかってる状態で、相手のシステムフォルダに送りたいんです。

928 :デフォルトの名無しさん:04/12/05 18:06:24
>>927

ないから死ね
通報もした

http://www.cyberpolice.go.jp/

929 :デフォルトの名無しさん:04/12/05 18:12:00
(´・ω・`)なんで通報されるんだろ・・・ショボーン

930 :デフォルトの名無しさん:04/12/05 18:21:33
悪いということを理解できない奴が真の悪。
>>929は未成年の犯罪者予備軍。

931 :デフォルトの名無しさん:04/12/05 18:23:53
>>927
> 相手のシステムフォルダに送りたいんです。

それってもうメールじゃないじゃん

932 :デフォルトの名無しさん:04/12/05 18:26:23
マリネラ一の美少年

933 :デフォルトの名無しさん:04/12/05 18:30:52
>>927
相手が何の準備もなくいきなり送れるわけないだろ。
ファイルコピーしたいならFTPかフォルダの共有させるとかなにかサービス利用しとけ。

934 :デフォルトの名無しさん:04/12/05 19:49:11
>>931
うんうん

935 :デフォルトの名無しさん:04/12/05 19:56:36
>>925
もうなってるじゃん。

936 :デフォルトの名無しさん:04/12/05 19:58:28
>>927
UUCP

937 :デフォルトの名無しさん:04/12/05 20:07:37
hostはbig or little
networkはmiddleにすればすべて解決

938 :デフォルトの名無しさん:04/12/05 20:15:11
>>937
最高に頭悪そうな発言してください in ム板 (3)
http://pc5.2ch.net/test/read.cgi/tech/1101931660/

939 :デフォルトの名無しさん:04/12/05 20:42:54
big endianでもlittle endianでもないものもあるよ。



940 :デフォルトの名無しさん:04/12/05 21:33:58
>>927
システムフォルダじゃないけど、スパマーのルートにtelnetで送ったことならある。

941 :デフォルトの名無しさん:04/12/05 21:40:53
だからそれはメールじゃないだろと・・・

942 :デフォルトの名無しさん:04/12/05 21:42:05
>>932
だーれが殺した

943 :デフォルトの名無しさん:04/12/05 22:07:24
http://www.fileup.org/file/fup2930.mp3
パタリロ〜クックロビン音頭〜

944 :デフォルトの名無しさん:04/12/06 15:05:51
ちょっと教えてください
サーバー側でlisten後acceptすると相手から接続要求がくるまでacceptから抜けてこないのですが
一定時間経つとぬけるようにするにはどうしたらいいのでしょうか?

945 :デフォルトの名無しさん:04/12/06 15:22:00
selectはダメ?

946 :デフォルトの名無しさん:04/12/06 15:24:43
>>944
そういうケースって現実のどのくらい起こってるの?
acceptが即戻ることを前提に組んでるのが結構あったりして・・・

947 :デフォルトの名無しさん:04/12/06 15:29:47
>>945
あ、すみませんselectではどうやってやればいいですか?

>>946
いえ、例えば普通にIPやポートを間違った状態でacceptすると現状では一生抜けてこないので・・

948 :デフォルトの名無しさん:04/12/06 15:29:57
>>946
select使おうぜ。
acceptがすぐに戻るなんて幸せなことはほとんどない。
人生に幸せなことなんてほとんどない。
ないんだよ・・・

949 :デフォルトの名無しさん:04/12/06 15:30:31
acceptの仕様を理解してるのかと小一時間・・・。
945の言うようにselectで待つか、acceptスレッドを切れ。

>>946
サーバなのにacceptが即戻ることを前提にするプログラムって、
どんなんだ。

950 :デフォルトの名無しさん:04/12/06 15:32:44
>>947
なあ、まずはヘルプくらい読もうな。
selectにソケットIDとタイムアウトまでの時間を渡すんだ。

951 :デフォルトの名無しさん:04/12/06 15:37:36
あ、selectでできたわ
つか、おまいら文句ばっかで役にたたねーわ、あばよ(´,_ゝ`)

952 :デフォルトの名無しさん:04/12/06 16:08:20
      _   (⌒Y´ ̄ヽ  ∧_/( ̄)) ∧_∧
    γ´  `ヽ_`と.__   )( ゚ ∩( 《 ( ゚ ∞゚ )  ゴロン
     )) ,、 , ) <、_,.ノ  ヽ、.__,ノ  l  つ つ
    ((_/し∪V    Å         .ヽ.__ノ!__)) ゴロン
  ∧__∧       / \           ∧_∧
 (    )       ( ;・∀・)        (゚∞゚  )ペーチュンチュン〜。
 (    つ     (U_U )つ       (つ  と)
 .ヽ___ノj       >>951        (⌒Y⌒)
    ∧__∧                . / ̄ヽ ̄
   (゚    )           __    ( __  ) (  ゴロン
    と   ヽ ( ̄))∧_∧  /´ `Y⌒) VUVJ_)
    (__ト、__丿 〉 》∩ _) (   .__つ´
          ヽ、.__,ノ   ヽ、__,.>



953 :デフォルトの名無しさん:04/12/06 16:09:12
  ∧∧
  (゚∞゚)ペー  | |チュンチュンチュン!
 と    )    | |    人
   Y /ノ    .人   <  >__Λ∩
    / ) .人 <  >__Λ ∩Д´)/
  _/し' <  >_Λ∩Д´)/   / ←>>951
 (_フ彡 V`Д´)/   / ←>>951
            / ←>>951


954 :デフォルトの名無しさん:04/12/06 16:10:52
                  __
                     〜|・∀・|〜 ←>>951
                      |__|
  ( ゚∞゚)            | |


                  ___ ?
                     〜lД・〜l
                      |___|     
     ((((((( ゚∞゚)      < |


                  ___ 
                Ξ( ゚∞゚)Σ l・Д・lァゥァ
                      |___|     
                  < |

                  __
                     〜| ゚∞゚|〜ペーチュンチュン
                      |__|  
                  | |  


955 :デフォルトの名無しさん:04/12/06 16:13:03
>>946もアフォ


956 :デフォルトの名無しさん:04/12/06 16:14:19
                             |\_____________|
                            | |::::::::::::::::::::::::       |
       /⌒彡          /⌒彡     | |::::☆::::::::::::::::::::::::     |
      / ゚∞゚)ペーチュン    / ゚∞゚)チュソ   | |    :::::::::::::::::::::::::::::::::::::|
      |   /          |   /        | |::::::::::::::::::::::::       |
    ( ニニニニニニニニニニ_ア  /::::::::::::;\      | |             |
     |:::::::::::: l |       //´|:::::::::::: l |       | |             |
     |:::::::::::: | |       | | |::::卍::: | |     | |             |
    /::::::::::::/| |      // /::::::::::::/| |      | |    (゚∞゚)星    |
    |::::::::::/ Uヽ    /U |::::::::::/ | |      | |   逝き↓       |
    |::::||:::|  | |???| |  |::::||:::|  U     | |        ___A___   |
    |::::||::|   |∧_∧/   |::::||::|.         |         (_o_o_o.)  |
     | / | |   (;  ゚Д゚)  | / | |        | |_______ハ___|
    // | |   |  ` /   // .| |        | |       / /    |
   //  | |   | /| |   //  .| |        | |      /  /    |
  //   | |   // | |   //   | |       | |    /   /     |
 U    U  U  U   U    U        ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
         ↑>>951
このスレ内で(゚∞゚)ではない>>951を発見した。>>951はスレ内で
意味不明かつ不適切な発言をしたとして、我々は>>951を(゚∞゚)星に連行し
>>951を(゚∞゚)化後、キティ星に追放の刑に処す


957 :デフォルトの名無しさん:04/12/06 16:34:10
はにゃ〜ん

958 :デフォルトの名無しさん:04/12/07 13:17:35
メールソフト作ってるんですが、ESMTPは実装したほうがいいんでしょうか?
OEでは実装されてますか?

959 :デフォルトの名無しさん:04/12/07 13:23:09
ESMTPは、クライアント主導で決定されるので、
必要な物があれば実装すればいいです。例えばSTARTTLSなど。
OEは実装してます。

960 :デフォルトの名無しさん:04/12/07 13:25:35
OE以下のメールソフトなんて誰が使うものか

961 :デフォルトの名無しさん:04/12/07 14:16:58
recvか何かで受信する前にデータ数がわかる方法があったら教えてください

962 :デフォルトの名無しさん:04/12/07 14:18:59
ない。

963 :デフォルトの名無しさん:04/12/07 14:32:48
あらかじめ定量しか送らないことに決めておく
あるいは何らかの形で量を規則化しておく

964 :デフォルトの名無しさん:04/12/07 14:34:57
んーやっぱりないですかあ
recvで取ったデータをまた戻すってこともできないですよね?

965 :デフォルトの名無しさん:04/12/07 14:40:50
そういうのはrecvしてバッファリングしておく層を作っておくのが定石。

966 :デフォルトの名無しさん:04/12/07 14:41:46
つかMSG_PEEKでできますた(;´Д`)

967 :デフォルトの名無しさん:04/12/07 15:12:12
>>966
それって>>961とはちょっと違うよ。
用意したバッファ分だけ受ける。ただしqueueから除かない。
だからもっとあるかも知れない。

968 :デフォルトの名無しさん:04/12/07 15:52:26
>>967
え?そうなんですか?>>964みたいに戻しはしないけどキューから削除しないからいいかなって思って
試してみてもちゃんとできたしああ

969 :デフォルトの名無しさん:04/12/07 15:53:49
「もっとあるかも知れない」
それが分からなくていいならMSG_PEEKで問題なし。

970 :デフォルトの名無しさん:04/12/07 18:47:12
1つのソフトでクライアント(connect)とサーバー(bind)をあっせたい場合に各々ポート番号は何を指定すればいいのでしょうか?
socketでAF_INETとSOCK_STREAMを指定している時です。両方とも80ではダメですよね?

971 :デフォルトの名無しさん:04/12/07 18:52:42
>>970
サーバは 80 番に bind して listen する。
クライアントはbindしないで、80番に connect する。

972 :デフォルトの名無しさん:04/12/07 19:15:40
誰か次スレ立てて。

973 :デフォルトの名無しさん:04/12/07 19:18:18
>>971
ありがとうございます。
ちなみに80番以外では失敗するのですが、>>970での場合はポートは80限定になるのでしょうか?

974 :デフォルトの名無しさん:04/12/07 19:32:30
>>973
具体的に何番がどう失敗したのかわからないとアドバイスもしにくい。
既に動いているアプリがそのポートを使用中なのかもしれないし、
ファイアウォールの様なソフトが介入しているのかもしれないし。

975 :デフォルトの名無しさん:04/12/07 19:53:37
>>973
次スレ立てたら教えてあげる

976 :デフォルトの名無しさん:04/12/07 19:54:00
>>972
まずは自分がやれ

977 :デフォルトの名無しさん:04/12/07 20:12:01
>>976
立てれんかったから頼んでる。

978 :デフォルトの名無しさん:04/12/07 21:40:11
俺も無理だったからスレ立て依頼してきた。


979 :デフォルトの名無しさん:04/12/07 21:41:24
ネットワークスレの住民がスレ立てることもできないとは笑止千万

980 :デフォルトの名無しさん:04/12/07 21:44:23
糞スレ立てまくってたら、肝心な時にスレ立てれない

981 :デフォルトの名無しさん:04/12/07 21:44:40
あFOX ★のせいだ。

982 :デフォルトの名無しさん:04/12/07 22:57:56
テンプレ追加案

★図書
TCP/IPによるネットワーク構築〈Vol.1〉原理・プロトコル・アーキテクチャ
http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/

★ツール
Packetyzer
http://www.networkchemistry.com/products/packetyzer/
ethereal
http://www.ethereal.com/

★プログラミング
Raw IP Networking FAQ
http://www.whitefang.com/rin/


983 :デフォルトの名無しさん:04/12/07 22:58:35
★規格
RFC Editor
http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
http://www.freesoft.org/CIE/RFC/
- Randomness Recommendations for Security
http://www.faqs.org/rfcs/rfc1750.html

★プロトコル
TTCP
http://www.sean.de/Solaris/ttcp.html
http://www.kohala.com/start/ttcp.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

★その他
パタリロ〜クックロビン音頭〜
http://www.fileup.org/file/fup2930.mp3
通報
http://www.cyberpolice.go.jp/


984 :デフォルトの名無しさん:04/12/07 22:58:43
新スレじゃ
http://pc5.2ch.net/test/read.cgi/tech/1102427855/

985 :デフォルトの名無しさん:04/12/08 13:48:41
985

986 :デフォルトの名無しさん:04/12/08 13:50:19
986

987 :デフォルトの名無しさん:04/12/08 17:12:09
0
埋めるときはzero fillで。
じゃないとchecksumが合わないよ。

988 :デフォルトの名無しさん:04/12/08 17:38:10
(´,_ゝ`)プッ

989 :デフォルトの名無しさん:04/12/08 17:45:41
チェンジアップの投げ方を教えて

990 :デフォルトの名無しさん:04/12/08 18:00:23
どうせブラジャーのはずしかたも知らんのだろ?

991 :デフォルトの名無しさん:04/12/08 22:27:01
>>988
親に笑われたこともないのにー

992 :デフォルトの名無しさん:04/12/08 23:16:32
>>989
腕をよく振ること
内角には投げないこと

993 :デフォルトの名無しさん:04/12/08 23:53:57
listen()のキュー長を越えるアクセスがあった場合ってconnect()すると-1が返ってきますか?
listen(sock,5);
たとえば、このときに自分が6人目だったら…
connect() == -1 ?

994 :デフォルトの名無しさん:04/12/08 23:55:55
それくらい試せるだろ

995 :デフォルトの名無しさん:04/12/09 13:38:32
Winsockでsend()する時に送信データのバイト数を
付加しようと思い、以下のようにコーディングしましたが・・・
うまくいきません。どうすればちゃんと送れるか、どなたか教えていただけませんか?

char *data;
long net_byte;
int host_byte;
int host_byte = strlen(data);

net_byte = htonl(host_byte); // バイト数をビッグエンディアンで取得

send(sock, net_byte+data, sizeof(data)+4, 0) // 送信(ここがうまくいきません)

996 :デフォルトの名無しさん:04/12/09 13:41:19
>>995
うまくいきませんじゃわかりません

997 :デフォルトの名無しさん:04/12/09 13:45:20
Cの勉強からやりなおせ。

998 :デフォルトの名無しさん:04/12/09 13:50:33
http://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port12

999 :デフォルトの名無しさん:04/12/09 14:08:26
>>995
ポインタにintを足したら何になると思ってるんだキミは。


1000 :デフォルトの名無しさん:04/12/09 14:11:17
1000ゲット

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

215 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)