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

1デフォルトの名無しさん
主にソケットに関しての質疑応答スレッドです。

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/

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

前スレ
ネットワークプログラミング相談室 Port26
http://hibari.2ch.net/test/read.cgi/tech/1269343909/
関連スレ
ネットワークプログラミング雑談
http://hibari.2ch.net/test/read.cgi/tech/1235800707/
Java ネットワークプログラミング 【教えて!】
http://hibari.2ch.net/test/read.cgi/tech/1086238859/
2デフォルトの名無しさん:2010/12/25(土) 22:49:19
過去スレ:
Port26 ttp://hibari.2ch.net/test/read.cgi/tech/1269343909/
Port25 ttp://pc12.2ch.net/test/read.cgi/tech/1255459388/
Port24 ttp://pc12.2ch.net/test/read.cgi/tech/1246895188/
Port23 ttp://pc12.2ch.net/test/read.cgi/tech/1230466044/
Port22 ttp://pc11.2ch.net/test/read.cgi/tech/1222603744/
Port21 ttp://pc11.2ch.net/test/read.cgi/tech/1204287577/
Port20 ttp://pc11.2ch.net/test/read.cgi/tech/1186418855/
Port19 ttp://pc10.2ch.net/test/read.cgi/tech/1159692799/
Port18 ttp://pc11.2ch.net/test/read.cgi/tech/1171029896/
Port17 ttp://pc8.2ch.net/test/read.cgi/tech/1148944560/
Port16 ttp://pc8.2ch.net/test/read.cgi/tech/1136005644/
Port15 ttp://pc8.2ch.net/test/read.cgi/tech/1128088448/
Port14 ttp://pc8.2ch.net/test/read.cgi/tech/1118469143/
Port13 ttp://pc8.2ch.net/test/read.cgi/tech/1109793931/
Port12 ttp://pc5.2ch.net/test/read.cgi/tech/1102427855/
Port11 ttp://pc5.2ch.net/test/read.cgi/tech/1096187183/
Port10 ttp://pc5.2ch.net/test/read.cgi/tech/1090385857/
Port9 ttp://pc5.2ch.net/test/read.cgi/tech/1080658835/
Port8 ttp://pc5.2ch.net/test/read.cgi/tech/1073560271/
Port7 ttp://pc5.2ch.net/test/read.cgi/tech/1063035045/ ★行方不明
Port6 http://pc5.2ch.net/tech/kako/1052/10521/1052106444.html
Port5 http://pc2.2ch.net/tech/kako/1040/10402/1040220302.html
Port4 http://pc3.2ch.net/tech/kako/1034/10342/1034236536.html
Port3 http://pc3.2ch.net/tech/kako/1023/10233/1023359282.html
Port2 http://pc.2ch.net/tech/kako/1006/10062/1006258198.html
Port1 http://pc.2ch.net/tech/kako/970/970344582.html
3デフォルトの名無しさん:2010/12/25(土) 22:50:34
図書コーナー:
UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI
 http://www.amazon.co.jp/exec/obidos/ASIN/4894712059/
 そのソースコード
 http://www.unpbook.com/src.html
詳解TCP/IP〈Vol.1〉プロトコル
 http://www.amazon.co.jp/exec/obidos/ASIN/4894713209/
詳解TCP/IP〈Vol.2〉実装
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714957/
詳解TCP/IP〈Vol.3〉トランザクションTCP, HTTP, NNTP, UNIXドメインプロトコル
 http://www.amazon.co.jp/exec/obidos/ASIN/4894716674/
TCP/IPによるネットワーク構築
 〈Vol.1〉原理・プロトコル・アーキテクチャ
  http://www.amazon.co.jp/exec/obidos/ASIN/432012054X/
 〈Vol.3〉クライアント‐サーバプログラミングとアプリケーション
  http://www.amazon.co.jp/exec/obidos/ASIN/4320028007/
  Linux/POSIXソケットバージョン
  http://www.amazon.co.jp/exec/obidos/ASIN/4320120841/
  Windowsソケットバージョン
  http://www.amazon.co.jp/exec/obidos/ASIN/4320029992/
4デフォルトの名無しさん:2010/12/25(土) 22:51:22
マスタリングTCP/IP RTP編
 http://www.amazon.co.jp/exec/obidos/ASIN/4274065618/
Linuxソケットプログラミング?ネットワークプログラミングにおける実践技法
 http://www.amazon.co.jp/exec/obidos/ASIN/4894714671/
Webプロトコル詳解?HTTP/1.1、Webキャッシング、トラフィック特性分析
 http://www.amazon.co.jp/exec/obidos/ASIN/4894715414/
WinSock2.0プログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4797306882/
猫でもわかるネットワークプログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4797323604/
IPv6ネットワークプログラミング
 http://www.amazon.co.jp/exec/obidos/ASIN/4756142362/
Visual Basicではじめるネットワークプログラミング超入門
 http://www.amazon.co.jp/exec/obidos/ASIN/4839917523/
5デフォルトの名無しさん:2010/12/25(土) 22:52:09
URL抜粋:
★規格
RFC 日本語版リスト
 http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
JPNIC RFC関連リンク集
 http://rfc-jp.nic.ad.jp/link/
RFC Editor
 http://www.rfc-editor.org/
HTMLなRFC (セクションを直に示すのに便利)
 http://www.freesoft.org/CIE/RFC/
RFC 2616 "Hypertext Transfer Protocol -- HTTP/1.1" 日本語訳
 http://www.studyinghttp.net/cgi-bin/rfc.cgi?2616
IANA Well known port numbers
 http://www.iana.org/assignments/port-numbers
6デフォルトの名無しさん:2010/12/25(土) 22:53:03
★プログラミング
C10K ヘヴィーロードサーバ
 http://www.kegel.com/c10k.html
C10K ヘヴィーロードサーバ(日本語訳)
http://www.hyuki.com/yukiwiki/wiki.cgi?TheC10kProblem
MSDN
 http://msdn.microsoft.com/library/en-us/dnsitehelp/html/tochelp.asp
Raw IP Networking FAQ
 http://www.whitefang.com/rin/
Java で packet capture
 http://netresearch.ics.uci.edu/kfujii/jpcap/doc/
Randomness Recommendations for Security
 http://www.faqs.org/rfcs/rfc1750.html
BoostSocket
 http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?BoostSocket
The Code Project - Internet & Network programming
 http://www.codeproject.com/internet/
ネットワークプログラミングの基礎知識 (問題ありのサイト?)
 http://X68000.q-e-d.net/~68user/net/
7デフォルトの名無しさん:2010/12/25(土) 22:56:59
8デフォルトの名無しさん:2010/12/26(日) 21:09:02
WSAGetLastErrorでエラーコード取得したんだけど、0だったんだが、
これどういう意味?
WSAGetLastErrorって連続で呼び出したら、エラーコードの情報が
リセットされることってないよね?

ちなみに0が返ってくるのは、クライアント側のウィンドウを強制的に
終了させた時です。
そのときにWSAGETSELECTERRORでエラーになったので、
WSAGetLastErrorでエラーコード取得してみたら0だったんです。
9デフォルトの名無しさん:2010/12/27(月) 22:20:54
winsock2.hで、ローカルアドレスをプロミスキャスモードでtcp通信を全て監視したいのですが、

while(1) {
recv();
すこし重たい処理;
}

とするとrecvのデータが欠落(跳んでしまう)してしまうみたいなんですが、どう対処したらいんでしょうか

考えたのは

buff格納キューテーブル

thread1 {
while(1) {
recv();
buffをキューテーブルに格納



thread2{
while(1){
キューテーブルを参照、処理
対象データを取り除く
}
}
という素人案ですが、格納にどれくらい負荷が掛かるかも心配で、
何かいい案はないでしょうか?よろしくお願いします
10デフォルトの名無しさん:2010/12/27(月) 22:29:01
「すこし重たい処理」を「とても軽い処理」にチューニングする。
11デフォルトの名無しさん:2010/12/28(火) 12:52:52
WSAAsyncSelectを使ってノンブロッキングモードの通信を行っています。
connect関数を使ったのですが必ずエラーになります。
WSAEWOULDBLOCKのエラーが返ってきます。
これは非同期処理においては当たり前のことなのでしょうか?
もしそうなら、SELECT等やタイムアウト時間を自分で設定するしかないのでしょうか?
これは結局同期処理になってる気がするのですが、CONNECTのときは仕方ないのでしょうか?
12デフォルトの名無しさん:2010/12/28(火) 13:40:55
WSAEWOULDBLOCK は、

本来はブロッキングする処理だけどノンブロッキングモードだからブロックせずに制御を返したよ(もちろんまだ完了してないよ)

っていう意味だから、あなたの望む結果じゃないのでしょうか?
それともノンブロッキングモードを誤解しているのでしょうか?
単に WSAAsyncSelect の FD_CONNECT の存在に気づいてないだけでしょうか?
13デフォルトの名無しさん:2010/12/28(火) 13:49:00
>>11 これは非同期処理においては当たり前のことなのでしょうか?
yes
14デフォルトの名無しさん:2010/12/28(火) 13:52:43
>>11
状況が分からないが

connect関数はコール後すぐに制御を返すが、実際にはまだ接続が完了していない。
その状態であることを知らせるのがWSAEWOULDBLOCKであり、
接続が完了したことを通知するのがFD_CONNECT。

connect関数コール後から接続完了(CONNECT)まで何も処理することがないなら一見するとブロッキングモードと同等になる。
しかし、それらの処理がメインスレッド上で行われている場合、ブロッキングするconnect関数コールは、他のWindowsメッセージの処理すらされなくなる。
15デフォルトの名無しさん:2010/12/29(水) 03:14:11
>>12-14
本当にありがとうございました。
FD_CONNECTを待とうと思ったんですが、
色々面倒だったので、select使うことにしました。
メインスレッドで実行しますが、接続時なんで多少ブロックされてもいいと判断しました。
16デフォルトの名無しさん:2010/12/29(水) 09:01:44
>>15
select()の待ち時間を0秒にしてもグッとブロックされたりしますか?
それともselect()を使う限りブロックしてしまうものなのでしょうか?
17デフォルトの名無しさん:2010/12/31(金) 06:55:35
winsockの非同期通信で1台のパソコンで通信のプログラムを作っています
送信側と受信側では同じサイズと間隔で下のように送受信しています

for(i=0;i<j;i++)
send(sock,&buf[l],k);
l=l+197;
Sleep(16);

1回のループに196byteなら問題なく送信できるのですが、197にするとエラー(WSAEFAULT)が

発生します。
これは秒間12KBの送受信になるのですが
同じ1台のパソコンでapacheを起動し画像を送受信すると重い画像でも表示できます
原因が思いつく方がいましたらご教授下さい
18デフォルトの名無しさん:2010/12/31(金) 07:55:00
>>17
お前のバグ。
WSAEFAULTは&buf[l]が有効なメモリアドレスをさしていない場合に出力される。
19デフォルトの名無しさん:2010/12/31(金) 10:31:47
てすと
2017:2010/12/31(金) 10:45:45
解決しました
原因はサーバ側でrecvのbufの使い方が間違ってました
recvは必ず指定したサイズを受信するわけではないので
不便だと思い下のような関数を作ってたのですが
おそらくはcのアドレスを直接渡したのが原因か
またはcのアドレスをサイズ分移動させた後のアドレスと
固定のサイズの4096が一致しないのが原因かと思います

正しい原因は調べてないですが、改善例のように修正したら
問題なく動作するようになりました。

int recv2(SOCKET s,char buf[],int len){

char *c=buf;
char wrk[4096];

while(1){

i=recv(s,c,4096,0);駄目な例
i=recv(s,wrk,4096,0);改善例
memcpy(c,wrk,i);改善例
if(i==SOCKET_ERROR){
shutdown(s,2);
closesocket(s);
return 0;
}
c=c+i;
}
21デフォルトの名無しさん:2010/12/31(金) 11:00:02
c を読み込んだバイト数分進めてるついでに
len も読み込んだバイト数分減らしたうえで recv に渡す大きさを len に
22デフォルトの名無しさん:2010/12/31(金) 13:06:10
winsockの非同期通信で1台のパソコンで通信のプログラムを作っています
送信側と受信側では同じサイズと間隔で送受信しています

送受信するサイズは4MBで、送信側は4MB送信できてますが
受信側は4MB受信しないで最後のrecvが0を返して終了します。

受信側でデータが無くなることは実際ありえるのでしょうか?
ちなみに毎回決まったサイズ受信して終了します。
23デフォルトの名無しさん:2010/12/31(金) 13:30:44
>>22
>送信側は4MB送信できてますが
ちゃんと戻り値を確認してのこと?
2422:2010/12/31(金) 13:39:22
>>23
sendの戻り値は確認しています。
25デフォルトの名無しさん:2010/12/31(金) 13:43:39
ちょっと連絡が来ないからといって破局と決定するのはどうかと
26デフォルトの名無しさん:2010/12/31(金) 13:53:32
>>25
普通どれくらい待つのでしょうか?
recvが最後に0を返しても送信サイズと受信サイズが一致しないとループし続けるように
コーディングしましたが、1分ぐらい延々とrecvが0を返し続けました。
2722:2010/12/31(金) 15:05:44
受信データを少し調べてみたら
途中のデータが欠損しているようです。
最後に特定の文字列を送信してそれは受信できていました。
2822:2010/12/31(金) 15:38:36
結局原因は分からなかったのですが、最初のデータが欠損していましたので
最初のデータを送信する前に1秒Sleepすると問題なく送受信できました。
29デフォルトの名無しさん:2010/12/31(金) 15:53:04
>>22,28
なんか根本的に間違っていると思う。
やっているのは「非同期通信」なんだろ?
その場合、情報が常に必ず届くという保証がwinsock自体にない。
だから、届かなくてもいいような仕組みを持った通信経路を設計する。
これには色々ある。今の考え方では、すぐに行き詰まると思われ。
3022:2010/12/31(金) 16:06:38
>>29
申し訳ない
同期通信の間違いでした。
TCP/IP自体データが保障されていると思ってたんだけど
違うのでしょうか?
31デフォルトの名無しさん:2010/12/31(金) 16:15:04
>>30
同期通信なら、保証されるが、それはバグがない場合だ。
何かがバグってるな。
32デフォルトの名無しさん:2010/12/31(金) 16:15:06
あなたはここで質問するレベルですらないので
>>1のリンクのサイトや本を見てからにしてください
33デフォルトの名無しさん:2010/12/31(金) 20:02:48
??到達性に同期も非同期も関係ないだろ?
34デフォルトの名無しさん:2010/12/31(金) 20:32:45
>>22
TCPなのかUDPなのか書け。
#UDPな悪寒。
35デフォルトの名無しさん:2011/01/01(土) 09:45:33
逆。
メッセージ境界が保証されていないTCPで、メッセージ境界が保存されて
いると仮定してプログラミングしてるんだろ。
36デフォルトの名無しさん:2011/01/01(土) 13:50:32
>>24で戻り値は確認していると言っているからおれはないと思うが。
ただSOCKET_ERRORかどうかしか見てなくて、実際に受信バイト数までは確認していないってことか?
37デフォルトの名無しさん:2011/01/01(土) 14:31:53
>>36 Unixでも初心者に良くいるよ、こうかくやつは…

if (recv(sock, buff, BUFF_SIZE, 0) == -1) {
/* エラー処理 */
}
/* BUFF_SIZE 受信したつもりになりきって buff の処理 */
3822:2011/01/01(土) 17:02:14
>>34
TCPです
UDPは信頼性がなさそうなので
39デフォルトの名無しさん:2011/01/01(土) 17:26:17
>>36
sendの戻り値でどうやって受信バイト数を取得すんだよ。
40デフォルトの名無しさん:2011/01/01(土) 17:27:39
>>38
で、
n=send(sock,buff, BUFF_SIZE, 0);
n=recv(sock, buff, BUFF_SIZE, 0);

いずれもBUFF_SIZEまで送信受信できているとは限らない。
n がSOCKET_ERRORではない場合、n は実際に送信受信したバイト数になっているが、
その n の値もしっかり反映しているの?

それと、SOCKET_ERROR の場合は終了しているようなので関係ないが
送信受信において SOCKET_ERRORが戻ってきた場合のWSAGetLastError() の戻り値も確認する。
WSAEWOULDBLOCK が戻ってきてれば終了するのではなく、またループに戻るようにする。
41デフォルトの名無しさん:2011/01/01(土) 18:25:38
>>40
sendとrecvの戻り値は確認しています。
戻り値が0より大きい場合にその戻り値をlenとしてmemcpyするように
しています。

WSAEWOULDBLOCKについては知りませんでした。
ご指摘ありがとうございます。
42デフォルトの名無しさん:2011/01/03(月) 08:57:41
TCP/IP通信でWSAAsyncSelectを使って非同期通信をしています。
データを適当なバイト数送るとします。
受信側がそのうち200バイトしか受信できなかったとします。
受信できるまでrecvループしようとしましたが、その間はそこで処理が
止まってしまうので、ウィンドウが固まってしまいます。
なので、一度だけ受信した後、一旦受信処理ルーチンを抜け、
また再度FD_READメッセージを待ちます。
そこで受信できなかった分を受信し、先ほど受信したデータの後ろにMEMCPYでデータを
くっつけようとします
そのためには先ほど受信したデータのバイト数を記録しておく必要があると思います。
さらに、相手は何バイトデータを送ってくるかわかりません。
この場合、まずデータが何バイト送ってきたのかを記録しとくところまではできますが、
何バイトまで受信すればよいのかわかりません。
単純にrecvがsocket_errorを返し、WSAEWOULDBLOCKを返したときが受信データは全て
受信し終わったと判断してよいでしょうか。
43デフォルトの名無しさん:2011/01/03(月) 09:08:10
普通は送られてくるデータの先頭あたりにデータ長の情報が含まれる
それをヘッダと言うことが多い
どういう形の書式にするかとかを決めるのがぷろところろろr
44デフォルトの名無しさん:2011/01/03(月) 09:13:49
ヘッダを作って、最初にその数バイトだけ読んでデータの大きさを調べて、
その分だけ受信するってことですか。
いろんなプロトコルがありますが、データサイズだけわかればなんとかなりそうなので、
自分独自のヘッダでも構わないんですよね?
45デフォルトの名無しさん:2011/01/03(月) 09:32:44
馬鹿の考え休むに似たり
46デフォルトの名無しさん:2011/01/03(月) 09:41:10
どうにかするわ
47デフォルトの名無しさん:2011/01/03(月) 10:19:17
一度、標準入出力で書いてみりゃ良いのに…
ストリーム故、同じ思考にいきつくと思うが (fgets はそうでもないか)
48デフォルトの名無しさん:2011/01/03(月) 12:02:21
>>44
データ長があらかじめ判らないときには
データ末尾に終了符号をつけることもある
49デフォルトの名無しさん:2011/01/03(月) 12:03:40
その場合データ中に終了符号と同じデータを含めることは出来ない
50デフォルトの名無しさん:2011/01/03(月) 12:05:41
こういうのデザパタで何て言うんだっけ?
51デフォルトの名無しさん:2011/01/03(月) 12:26:40
改行区切りパターン(いま考えた)
52デフォルトの名無しさん:2011/01/03(月) 17:33:34
皆さんありがとうございます。とにかくやってみます!
53デフォルトの名無しさん:2011/01/03(月) 22:22:32
まとめてやるんじゃなくて、1バイト毎にやったほうがいい時もある。
54デフォルトの名無しさん:2011/01/03(月) 23:24:57
なにいってんだおまえ
55デフォルトの名無しさん:2011/01/04(火) 06:45:51
>>48
ダサい設計だけど、HTTP1.0のようにデータの最後まで送ったら
ソケットを閉じるという方法もある。
56デフォルトの名無しさん:2011/01/04(火) 07:41:37
別にださくないんじゃね、 ftp もそうだけど…
57デフォルトの名無しさん:2011/01/04(火) 18:57:17
>>33
亀レスだが、非同期通信に到達性を保証する事は出来ないと思うのだが。
その点について俺が間違っているの教えてくれ。
まず第一に、非同期通信経路上位でのプロトコルによる同期は除いてくれ。
単純に非同期通信経路で、受信側がいつまでたってもデーターはこなかったとしよう。
その場合いつかはタイムアイトになり情報が所か無かったとしよう。
送信側は送信しているので、それが届いたかどうかは感知できない。
この場合どう考えても、情報の到達性を保証する事は出来ない。
ではないのか?
58デフォルトの名無しさん:2011/01/04(火) 20:24:46
>>57
何を勘違いしてるのか分からないけど、あの文脈では同期/非同期
はAPIのモードの話で
 同期:ブロッキング
 非同期:ノン・ブロッキング
でしょ?
それともブロッキングのsend成功=到達とでも思ってるとか?
59デフォルトの名無しさん:2011/01/04(火) 20:39:24
なんだ、ノン・ブロッキングの事を言っているのか、がっかりだな。
それを非同期の代名詞にして話す事自体がっかりだよ。あきれた
60デフォルトの名無しさん:2011/01/04(火) 20:48:37
じゃあどういう意味の”非同期通信”ならTCPで到達性が保証できなく
なるのかな?
昔の非同期モデム使ったPPP回線でも(TCPの意味での)到達性は保証
されているのだが。
61デフォルトの名無しさん:2011/01/04(火) 20:52:45
それにブロッキング /ノン・ブロッキング を同期/非同期って
表現するのはごく普通に行われているよ。
なにせWinSockのAPI名がWSAAsyncSelectとかだし。
62デフォルトの名無しさん:2011/01/04(火) 20:56:59
>>61
それMSの表現が馬鹿なだけw
だけど、 TCP 使って非同期な通信系ってのはどうゆう意味か説明してほしいな >59
63デフォルトの名無しさん:2011/01/04(火) 23:11:56
非同期通信
非同期型API
がごっちゃになってる?
64デフォルトの名無しさん:2011/01/05(水) 00:25:14
言葉の定義の問題だから、おまえの中では非同期でいいんじゃない。
まあ、あまり大声で言わない方がいいと思うがwww。
それに、がっかりしたのも事実だし。言葉の定義はそれでもいいんじゃい。
65デフォルトの名無しさん:2011/01/05(水) 00:32:52
参考までに、IT辞書のノンブロッキングの説明部分を張っとく。

通信相手との同期を取らない点では一種の非同期通信といえるが、いわゆる非同期通信が
単に通信相手からの返事を待たない(同期を取らない)というニュアンスであるのに対し、
ノンブロッキング通信では主に、通信処理の完了を待つことによって他の処理の進行を妨げな
いことを表わしている。

6662:2011/01/05(水) 00:54:39
>>63 おれ?
TCP ってのは、 end-end 閉じてないとだめなプロトコルなのね

で、少なくとも、
syn -> syn/ack -> ack
で、コネクションつくって、 こんなやりとりするでしょ?
[data]/ack <-> [data]/ack
この状態が、成立してる限りにおいては同期処理系なのよ

つか、state-fullなプロトコルってのは、どこかで同期する必要があるのは当たり前

もっと上のところでやるのはあんたらの勝手だけど、どの部分指して言ってるの?
ってのが 62 の主旨
67デフォルトの名無しさん:2011/01/05(水) 01:37:50
上位のAPIの動きで話が進むんだよね。
TCPの実際の動作がわかってない感じだから、どう言っていいのやら...
68デフォルトの名無しさん:2011/01/05(水) 09:43:14
>>66
たとえば、HTTP/1.1は非同期。
レスポンスが返ってくる前に、リクエストを投げることができる。非同期だろ。

発端の>>22の「非同期」はWinsockの非同期系APIを指しているのだろうけど。
69デフォルトの名無しさん:2011/01/05(水) 14:02:26
>>65
その説明書いた人良く分かってない感じ。
socket APIのブロッキングモードのsendは送信バッファに空きが
出来れば復帰するのであって、通信処理が完了するかどうかとは
関係ない。
70デフォルトの名無しさん:2011/01/05(水) 14:06:08
チャット作ってます。
非同期通信をして、文字だけのやりとりはできるようになりました。
ですが、ユーザごとに名前をつけれてません。
名前付けたいんですが、名前のデータは文字のバッファに含めて送信すべきでしょうか?
それとも名前は名前だけで送ったあとに、後から文字のバッファを送るほうが都合がいいでしょうか?

今はクライアント→サーバにメッセージを送ったら、
サーバから、サーバに接続しているクライアント全てにそのメッセージを送信し、
リアルタイムチャットを作ろうとしているところです。
71デフォルトの名無しさん:2011/01/05(水) 14:42:28
この流れで「非同期通信」の質問は釣りにしか見えない。
72デフォルトの名無しさん:2011/01/05(水) 14:54:11
>>69
じゃ、そこまできちっとしたら、ブロッキングモードの通信も非同期だなwwwww
腹抱えて笑うぜwwwwwwwwwwwwwwwww
73デフォルトの名無しさん:2011/01/05(水) 15:43:18
>>72
非同期で笑え
74デフォルトの名無しさん:2011/01/06(木) 14:04:05
Winsock2 : UDP : 鯖側
addr は INET_ANY で create & bind -- (*)
WSAAsyncSelect FD_READ でパケ待ち
パケ到着なFD_READをきっかけに recv & 内部処理開始
内部処理後の応答を パケ送信したピアへ戻したい...

(*)のソケットに write ではうまくいかず
75デフォルトの名無しさん:2011/01/06(木) 15:08:25
なぜwrite?
recvfromとsendtoを使え
76デフォルトの名無しさん:2011/01/06(木) 15:16:45
あ。 単純ミスorz
recvfrom の末尾で ピアのアドレス受けとれるし…
77デフォルトの名無しさん:2011/01/09(日) 06:03:35
新スレに今気づいた俺が横からレス
>>58 >>62 どっちとも俺の解釈と違う(と思う)。

まだデータが到着してないときにrecvした場合、
データが来るまで関数が返ってこないのがブロッキング。(1)
関数が返ってきて「まだない」と言われるのがノンブロッキング。(2)

データが到着したことがわかった後で、カーネルに「俺のバッファにコピーしる」
と要求したら、コピー完了後に返ってくるのが同期。(3)
コピー完了前に帰ってきて、コピー完了が別に通知されるのが非同期。(4)

と思ってる。
unixしか知らないひとがよく非同期と誤解してるのが(2)
MSが言ってる非同期は(4)

でないかな?
78デフォルトの名無しさん:2011/01/09(日) 06:09:27
すまん誤解は言いすぎだ

用語の使い方がずれてんだよ、WindowsとUnixは。
79デフォルトの名無しさん:2011/01/09(日) 06:11:24 BE:1862599474-2BP(0)
適したスレがぱっと見当たらなかったのでここで質問させてください

今迄画像処理関連のプログラムばかりやってきて
4月からネットワークプログラムの仕事になりそうなんで
異動前に勉強したいんだが
ネットワークプログラムする以前にネットワークに関する知識(スイッチングハブの知識、ネットワークの構成・設計、セキュリティetc)が無い
何かオススメの本あったら教えて
80デフォルトの名無しさん:2011/01/09(日) 06:16:21
もう一個補足。Unix(Posix.1)で
recv, send は「非同期I/O」とは呼ばない。

「非同期I/O」は
aio_read, aio_write のこと。

aio_readなんて誰も使ってないだろうけど、
Windowsで言ってる非同期はまさにaio_xxxなんだぜ
81デフォルトの名無しさん:2011/01/09(日) 08:27:05
>>80
わかた
ごちそうさま
82デフォルトの名無しさん:2011/01/09(日) 09:44:33
>>77,80
良レスだが、自分の解釈とも異なっている。(もちろん>>58,62とも違う)
>>77の例であれば、どちらも同期(という総称的な概念を指す用語)の一種であり、
それらの違いは「データ到着」と「コピー完了」というイベント種別の違いでしかない、いうのが自分の解釈。
ブロッキングは同期(という目的)を実現する手段であり、両者を同列に比較/分類する事は無意味であると思う。
まとめると、>>77の(1)と(2)は同じだが、(3)はブロッキングモードのrecvであり、(4)はノンブロッキングモードの
非同期recvであり、さらに(3')としてノンブロッキングモードの同期recvが加わる。

Unixであれば、read/write/recv/sendは、どれもブロッキングモード/ノンブロッキングモードのどちらでも
操作を実行できる。ただしノンブロッキングモードの場合、データ未着/コピー未完であればアプリ側で定期的に
リトライしなければならないという(性能上の)問題があるため、必然的にブロッキングモードを使わざるをえなかった。
この課題を解決する為に考案(追加)されたのが、aio_read/aio_writeと呼ばれる、いわゆるAIO(非同期I/O)という仕掛け。
ちなみにLinuxのAIO実装の場合、ソケットに対するAIOはサポートされていないから、aio_recv/aio_sendという
システムコールは(まだ)存在していない(はず....)。
83デフォルトの名無しさん:2011/01/09(日) 11:11:55
>>82
お前が正しい
正義はお前にある
84デフォルトの名無しさん:2011/01/09(日) 13:05:50
85デフォルトの名無しさん:2011/01/09(日) 13:49:29
86デフォルトの名無しさん:2011/01/09(日) 18:03:43
>さらに(3')としてノンブロッキングモードの同期recvが加わる。

だな。
そのノンブロッキングの同期が一番おいしいのに
そこを飛び越えてしまったのがWinsock2
87デフォルトの名無しさん:2011/01/09(日) 23:02:25
ふつーIO完了ポート
88デフォルトの名無しさん:2011/01/11(火) 00:22:22
何で非同期IOの方が効率がいいっていわれてんの?
89デフォルトの名無しさん:2011/01/11(火) 06:59:47
待たなくていいから待ってる間に他のことが出来る
90デフォルトの名無しさん:2011/01/11(火) 16:53:41
インタラクティブなアプレットをなにか作らないといけないのですが、誰か助けてください
91デフォルトの名無しさん:2011/01/11(火) 17:13:52
おせちアプレットでも作ってください。
92デフォルトの名無しさん:2011/01/11(火) 17:35:06
重箱におせちを詰めるゲームか
93デフォルトの名無しさん:2011/01/11(火) 17:51:00
ボリュームが足りないくらいがちょうどいい
94デフォルトの名無しさん:2011/01/12(水) 08:46:27 BE:1197386429-2BP(0)
>>84,>>85
レスありがとうございます。
スレ違いにも関わらず…助かります。
95デフォルトの名無しさん:2011/01/15(土) 01:41:47
IPv6 そろそろ端末側も本格対応が必要なのかな
なんかITProの記事では、v4アドレスが2011年2月に
枯れるとか言ってるんだがホント?
96デフォルトの名無しさん:2011/01/15(土) 04:46:13
去年10月の時点で残り7ブロックとかそういう話でしょ。
それまでのペースを維持すれば、当然3月くらいまでに無くなるよ。
97デフォルトの名無しさん:2011/01/15(土) 04:57:00
とりあえず拾ってみた。
http://www.geekpage.jp/blog/?id=2010/10/18/1
http://journal.mycom.co.jp/news/2010/11/16/074/index.html

アジア地域だと、本当に再来年あたりから
新規v4は無くなる可能性があるみたいね。
v6Readyはもう必須かもしれない。
98デフォルトの名無しさん:2011/01/18(火) 14:47:48
HTTPプロトコルで
Accept-Encoding: gzip
Range: bytes=41318-
として、順次差分をダウンロードしたいのですが
gzip圧縮された差分がgzipのヘッダー情報を含んでいるらしく
レスポンスのContent-Lengthと食い違いが生じてしまいます

この場合の定番の書き方はどうなっているのでしょうか?
それとも差分ダウンロードと圧縮は同時に使用しないものなのでしょうか?
99デフォルトの名無しさん:2011/01/18(火) 14:53:31
> gzip圧縮された差分がgzipのヘッダー情報を含んでいるらしく
> レスポンスのContent-Lengthと食い違いが生じてしまいます
ダウンロードした圧縮差分を順次つなげていっても
元のgzipファイルにならないという意味です。念のため
100デフォルトの名無しさん:2011/01/18(火) 15:05:42
HyperText Transfer Protocolプロトコルですか。
馬から落馬しそうですね。
101デフォルトの名無しさん:2011/01/18(火) 15:12:41
何を転送しようとして何を期待して実際どうなったのかさっぱりわからん・・・
102デフォルトの名無しさん:2011/01/18(火) 15:14:44
単に複数レスポンスをそのままファイルマージしちゃっただけのような
1レスポンス→unzip→マージ じゃないのかなぁ…
103デフォルトの名無しさん:2011/01/18(火) 15:45:14
リソース本体 - CTE: gzip 処理 - 部分抜き出し(こいつの大きさが CL) - ヘッダ追加 の順を期待してた
流れてきてるのは
リソース本体 - 部分抜き出し - CTE: gzip 処理(こいつの大きさが CL) - ヘッダ追加 の順だった

プロトコルとして正しいのはどっちかは知らない
104デフォルトの名無しさん:2011/01/18(火) 16:59:52
すいません、説明が悪かったです
やりたいことは2chのスレッドのダウンロードです
最初はAccept-Encoding: gzip、Rangeでダウンロードして展開したファイルのサイズを渡していたのですが、
416 Requested Range Not Satisfiableが着てしまってダメでした。

gzipの位置ではないかと推測して、
今度はダウンロードしたgzipのサイズを渡して、差分のダウンロード自体は成功したのですが、
展開すると、一番最初にダウンロードしたブロックしか展開されません。
ファイルの残りの部分は無視されてしまいます。

ここまでやって混乱してきたのでご相談に上がった次第です
よろしくお願いいたします
105デフォルトの名無しさん:2011/01/18(火) 18:39:01
差分DLに成功して最初にDLしたブロックしか展開できないの意味が分からないけど、

rangeの書き方あってる?
結合してないよね?
106デフォルトの名無しさん:2011/01/18(火) 19:15:36
>>105
Rangeはこんな感じです
Range: bytes=104672-

gzipファイルが15kで展開したファイルが10kになっていたり、
差分を元ファイルに結合していっても最初の10k分しか展開されません
Rangeには保存したgzipファイルのファイルサイズを渡しているのですが・・・
107デフォルトの名無しさん:2011/01/18(火) 20:13:03
gzipを直接結合する事はできませんよ
一度展開したもの同士を結合して再圧縮する事はできます

1、まずgzip ,no-rangeでリクエスト
gzipのサイズをメモ
gzipを展開して処理

2、gzip ,range:gzipのサイズ-でリクエスト(304以外なら)
gzipのサイズをメモ、1のgzipサイズを足す
gzipを展開して処理

3、gzip range: gzipのサイズ(1+2)でリクエスト(304以外なら)
以下略
108デフォルトの名無しさん:2011/01/19(水) 04:53:42
>>107

451. デフォルトの名無しさん [sage] 2006/05/26(金) 19:44:35
Content-RangeとAccept-Encoding:gzipを同時に指定すると、
httpの意味上からは、「gzip済みのdatファイル」の途中から
しか送ってくれないので役に立たない。
109デフォルトの名無しさん:2011/01/19(水) 10:01:58
Transfer-Encoding使えばいいんじゃね
110デフォルトの名無しさん:2011/01/19(水) 21:21:20
ごめん、確かによく考えたら共存できないな
物理的に圧縮アルゴリズムから全体圧縮済みサイズと一部圧縮が、非圧縮時の比例と一致するとは限らないな
111デフォルトの名無しさん:2011/01/20(木) 18:04:09
>>106です。レスありがとうございました

>>107,108
いろいろやってみましたが、
Content-RangeとAccept-Encoding:gzipは共存できないみたいです
初回だけgipにすることにしました

>>109
ちょっと見てみましたが難しくてよくわかりませんでした
余裕ができたら調べてみようと思います
112デフォルトの名無しさん:2011/02/02(水) 02:25:46
>>95-97
http://headlines.yahoo.co.jp/hl?a=20110201-00000005-rbb-sci
IANAが最後の割り当て終了。
あとは5ブロックを配布するのみ。

各地域の再分配が終わったら
IPv4の割り当ては事実上終了。
あとは再利用のみ。
113デフォルトの名無しさん:2011/02/02(水) 07:25:45
>>112
補足。
本日、IANAから共同発表の記者会見予定。
http://itpro.nikkeibp.co.jp/article/NEWS/20110201/356717/
114デフォルトの名無しさん:2011/02/03(木) 01:02:29
禿から取り上げるべき。
115デフォルトの名無しさん:2011/02/03(木) 21:33:02
親機ルーターだけだったのを、PCを1台追加して、無線で子機ルーターを接続しました。
すると、今まで出来ていた、WinSockの関数では、接続できなくなりました。
どのように回避すればいいのでしょうか?
お知恵を貸してください。
116デフォルトの名無しさん:2011/02/03(木) 21:39:53
俺のエスパーによれば、子ルータをアクセスポイントモードに設定するといいらしいよ
117デフォルトの名無しさん:2011/02/04(金) 19:32:34
>>116
回答ありがとうございます。
アクセスポイントモードってプログラミングで出来ます?
ググってみると、何か・・・違うことのような気がして・・・
118デフォルトの名無しさん:2011/02/04(金) 23:06:24
まぁエスパー回答だから外れることもある、仕方ない
ちゃんと判断するには情報が足りない
ネットワークの構成図を書いて、どこからどこへ接続したいのかとかを説明するべき
119デフォルトの名無しさん:2011/02/05(土) 23:05:07
>>118
ネットワーク構造図といわれましても・・・

親機1台があり、それをハブ・・・でいいのかな?を使って、接続できる部分を増やして、
有線で片方のパソコンを繋ぎ、さらに無線ルーターを繋いで、もう一台の方に繋いでいます。

作りたいのは、簡単なチャットプログラムで、
他のPC(ネットワーク上)と、テキストのやり取りをしたいと思っています。

独学ではじめ、ネットワークを使ったプログラムの練習をしています。
120デフォルトの名無しさん :2011/02/06(日) 00:34:03
>>119
何処に無線ルーターをつないで、もう一台に繋いだんだ?
もう一台ってPCか?
有線で繋いだのか無線で繋いだのか?
無線に決まってるとか言うなよ。どう繋いだかはお前にしか判らないんだよ。
親機っていうのも無線ルーターだよな?それに無線で繋いだのかもしれないしな。

文章でも良いから曖昧さのない様に説明しろ。
121デフォルトの名無しさん:2011/02/06(日) 01:03:45
これがネタニマジレスか
122デフォルトの名無しさん:2011/02/06(日) 13:20:34
>>119
文章より図の方が状況がわかりやすいかなと思ったから
俺は115を読んでこんな感じだろうかと勝手に想像したので
http://www.dotup.org/uploda/www.dotup.org1323763.jpg
子ルータをAPモードにして全員一律に親ルータからアドレスもらってひとつのサブネットにまとめれば解決するんじゃないかなと考えた
まぁつまりプログラミングの問題じゃなくてネットワーク環境設定の問題だろうと思ってるわけだけど
pingは通る?
123デフォルトの名無しさん:2011/02/06(日) 21:05:03
>>120
親機は有線、子機は無線です。
繋ぐのはPCです。

>>122
正確な図、ありがとうございます。
そのとおりです。

>子ルータをAPモード
この時点で詰みそうですが、ググリながらやってみようかと思います。
まず、APモードとは何かから探さなければ・・・

>pingは通る?
192.168~~のデフォルトゲートウェイに、pingを試したところ、
ちゃんと通ってるようです。
それと、ipconfig /allで確認したところ、
192.~.1と192.~.2しかありませんでした。
124デフォルトの名無しさん:2011/02/06(日) 21:28:07
>>123
1. 親機ルーターは192.168.2.xへの宛先を持つパケットが来たら
192.168.1.3に投げなければいけないことを知っている?
2. 子機ルータのデフォルトルートは192.168.1.1になってる?
3. PC1のデフォルトルートは192.168.1.1になってる?
4. PC2のデフォルトルートは192.168.2.1になってる?
125デフォルトの名無しさん:2011/02/07(月) 00:12:55
ルータの説明書を読むべき
126デフォルトの名無しさん:2011/02/07(月) 20:14:03
>>124
1:知りませんでした。
2:なっています。
3:なっています。
4:なっています。

>>125
それもそうですね・・・
読み直してみます。
127デフォルトの名無しさん:2011/02/08(火) 21:44:01
ipv6のパーサ書いてて構文上はOKみたいなんだけど
2文字のコロン「::」もIPV6のアドレスとして有効な表現なの?
128デフォルトの名無しさん:2011/02/08(火) 21:48:35
>>127
それは 0 を省略した形

~:0000:~ なら ~::~ にできる
129デフォルトの名無しさん:2011/02/08(火) 21:51:17
>>127
あっ失礼。2回以上の連続した0ね。
130127:2011/02/08(火) 22:24:03
えっと、一応その形式は知ってるんだが
疑問なのは数字なんか付かない、まさにコロン2つ「だけ」の場合

ABNF抜粋すると問題の箇所は
ipv6address =
| //色々なケース
| //色々なケース
| [*6(h16":")h16]"::"
となってて、[]は省略可能なんで
他に全く数字の付かない「::」のみのケースがあるのよ
131127:2011/02/08(火) 22:25:40
あ、失礼、それも含めて「::」=0ということか
132127:2011/02/08(火) 22:27:55
>>128 言い忘れてた、サンキュ
133デフォルトの名無しさん:2011/02/08(火) 23:16:56
うぜえ
134デフォルトの名無しさん:2011/02/09(水) 01:46:28
ttp://dl8.getuploader.com/g/6|akahell/593/webreq.png
こうやってるのに
ttp://dl8.getuploader.com/g/6|akahell/594/response.png
こう返ってくるんですが

何で差分だけの取得が出来ず、かつレス番1が壊れてしまうのでしょうか
135デフォルトの名無しさん:2011/02/09(水) 01:51:18
書き忘れましたが最初の取得だけはうまく出来ます
差分の取得のはずがうまく出来ず、こうなります

返ってきたdatを"\n"で区切ってString[]に入れたものです
デバッガで見る限りではレンジやモディファイは正しいと思われる値にはなっています・・・
136デフォルトの名無しさん:2011/02/09(水) 02:36:55
ログをまったく読んでない上にテキストでなく画像とか喧嘩売ってるんだよな?
137デフォルトの名無しさん:2011/02/18(金) 00:05:51
マルチキャストの受信をしているのですが、ブロードキャストで送信されると受信してしまいます。
何故なのでしょうか?
138デフォルトの名無しさん:2011/02/20(日) 10:21:33.25
同じ部屋に居る椰子が大声で騒いだら聞こえるのと同じ。
黙って無視すればいい。
139137:2011/02/20(日) 22:59:15.93
>>138
どういうことなのでしょうか?
140デフォルトの名無しさん:2011/03/05(土) 06:38:28.58
ネットワークプログラミング初心者なのですが、何から始めればよいでしょうか。
よくソケットからと言われますが、具体的にどういう処理から始めるのでしょう。
141デフォルトの名無しさん:2011/03/05(土) 06:41:15.99
適切な言語とフレームワーク使えばソケット気にせず書けるようになる
142デフォルトの名無しさん:2011/03/05(土) 12:11:24.46
>>140
> ネットワークプログラミング初心者なのですが、何から始めればよいでしょうか。

お約束だが、「やりたいことを見つける」ことからかな。
143デフォルトの名無しさん:2011/03/05(土) 12:36:41.44
>>137
バグだろ。
144デフォルトの名無しさん:2011/03/06(日) 07:52:23.37
winsockで通信ソフトを作っているのですが、ある利用者の環境では
socket関数でINVALID_SOCKETエラーが発生したそうです。
XP SP3では一度も発生したことがないのですが、原因が分かる方が
いましたら、ご教授下さい。
145デフォルトの名無しさん:2011/03/06(日) 09:48:50.39
>>144
バグだろ。
146デフォルトの名無しさん:2011/03/06(日) 09:57:00.20
・WSAStartupの戻り値は確認しているのか?
・ある利用者の環境ってのがどういう環境かわからない
147デフォルトの名無しさん:2011/03/06(日) 10:14:44.28
> ご教授下さい。
どこの馬の骨かわからん奴を弟子に取る気はないが、俺だったら、
WSAGetLastErrorを仕込んで置く事を忘れなかったな。
148デフォルトの名無しさん:2011/03/06(日) 12:27:16.71
IPv6インストールしてないのにPF_INET6使おうとしたとか?
149デフォルトの名無しさん:2011/03/06(日) 13:12:00.11
>>144
原因はそんな情報で分かる人間が居ると思うような奴が
作ったプログラムだから
150デフォルトの名無しさん:2011/03/07(月) 09:51:41.74
>>145
ハゲだろ
151デフォルトの名無しさん:2011/03/09(水) 23:43:18.69
おまえらって、TCP、UDP、IPライブラリの組み込みへの移植とかやったことある
152デフォルトの名無しさん:2011/03/10(木) 00:24:52.12
>>151 あるけど、なに?
153デフォルトの名無しさん:2011/03/10(木) 00:34:23.56
ソースくれ
154デフォルトの名無しさん:2011/03/10(木) 05:42:54.02
>>153
必要なら買うなり、OSS使うなりしなよ。
ゼロから作ってデバッグするのは大変だよ。
155デフォルトの名無しさん:2011/03/10(木) 09:21:40.36
そうだね
どっかのPICのソース流用しようと思ったけど
プロトコル完全実装じゃなくて
かなり適当に必要最小限しか作ってなくて
結局参考にならなかったな
156デフォルトの名無しさん:2011/03/10(木) 22:42:00.33
>>154
なんか良いOSSのライブラリ教えて
157デフォルトの名無しさん:2011/03/11(金) 00:12:21.92
154じゃないがuIPあたりは?
158デフォルトの名無しさん:2011/03/12(土) 20:28:08.90
質問させてください。
XP環境では問題ないのですが、Windows Vistaで
s=socket(AF_INET, SOCK_RAW, IPPROTO_IP);
とするとエラーになります(INVALID_SOCKETを返す)。

目的はWindows7からチカチカ点滅しなくなった
タスクトレイのネットワークアイコン(通信の有無を示す)の自作です。
(有無だけに注目して内容を見ないパケットモニタのようなものです。)

ネット上で調べた結果、Vistaからは上のことは無理で
それをやりたければWFP(Windows Filtering Platform)とやらを
使うしかない、という答えに現時点では行き着いています。
実際、1.うん、WFPを使うしかないね。なのでしょうか。
それとも2.いや、他にやりようがあるよ。なのでしょうか。

さらに質問すると、Windows7をご利用されている方は
タスクトレイのネットワークアイコンを見ても通信の有無が
わからないことについて、どのように解決(もしくは許容)されていますか?
159デフォルトの名無しさん:2011/03/17(木) 14:18:43.99
setsockoptでTCPの再送間隔と再送回数を制御したいんだけど
なにをいじるんだっけか
160デフォルトの名無しさん:2011/03/17(木) 14:18:52.60
おっぱい!
161デフォルトの名無しさん:2011/03/17(木) 17:32:18.42
>>159 OSは?
*BSD なら sysctl で設定
Linux なら /proc で設定
Windows はしらん
その他の Unix なら man よめ
162デフォルトの名無しさん:2011/03/18(金) 14:08:08.96
>>161
setsockoptで制御したいんです。
163デフォルトの名無しさん:2011/03/18(金) 17:12:57.19
>>161
ワロタ、setsockoptで言っているのに
いつもトンチンカンなことをして周りに迷惑かけてるんじゃないか
164デフォルトの名無しさん:2011/03/19(土) 14:50:47.28
>>163
sockopt インターフェースは, カーネルのソース読むとないな, *BSDとLinux
165デフォルトの名無しさん:2011/03/19(土) 15:02:58.74
Windowsだってソケットごとには設定できないよ
166デフォルトの名無しさん:2011/03/19(土) 15:22:20.24
>>163 ここはボケないと
167デフォルトの名無しさん:2011/03/22(火) 11:19:33.73
>>161
Linuxだけどさ、どこで設定するのよ
そんな設定箇所無いよ
憶測でモノを言っているの?
168デフォルトの名無しさん:2011/03/22(火) 17:14:46.99
教えてください。
もしスレチでしたら誘導をお願いします。

以下のようなことをしたいとお勉強中です。
・snmp を使用してネットワーク上の機器の状態を管理する
・状態の取得には snmp の trap を使用する
・ネットワーク上には snmp のバージョン v1 と v2c の機器が存在していて両方に対応したい
・当人はソケットを使用したプログラムは経験があるものの、ネットワークそのものは初心者

で、質問です。
・v1 trap の PDU には Enterprise などがありますが、v2c には存在しません。
 これは v2c では取得できないということでしょうか。データ部に存在するのでしょうか。
 ※できれば v1 と v2c の実処理を行なう箇所を同じ処理で統一したいため同じデータを取得できたら便利だな、と
・v2c trap の PDU は v2 のものと構成が同じであり、
 Comunity の部分だけが v1 と同等であるとの認識は正しいでしょうか

よろしくお願いします。
169デフォルトの名無しさん:2011/03/22(火) 23:24:39.15
誰かツイッターapiについて詳しい人いませんか?

api制限で150回までに制限されてしまうのは仕方ないのでしょうか?

でもtweenとかは常に最新の状態に更新出来ている気がするのですが。。
あれはどうやっているのでしょうか?
170デフォルトの名無しさん:2011/03/23(水) 10:49:22.40
>>169
APIを使わなくても見れる情報なら、APIを使わなければよい
171デフォルトの名無しさん:2011/03/24(木) 00:32:35.57
>>169
>api制限で150回までに制限されてしまうのは仕方ないのでしょうか?

いいえ。
個別に交渉すれば、割と簡単に制限を緩めてもらえるみたいです。
172デフォルトの名無しさん:2011/03/24(木) 12:15:07.27
>>170-171
API使わなくても見れる情報というのは例えばどんなものでしょう?

個別に交渉するということはどういうことですか?
173デフォルトの名無しさん:2011/03/24(木) 13:41:55.22
>>172
ブラウザ使ってツイッタ見た事ないのか?

html 取得すればよい。鯖負荷は・・・・。
174デフォルトの名無しさん:2011/03/24(木) 19:32:59.58
やはりその方法でしたか。
鯖負荷ってどれぐらいのアクセス数なら大丈夫でしょうか?
一秒1アクセスはやっぱきついですかね?
175デフォルトの名無しさん:2011/03/24(木) 20:34:01.37
>>174
WEBアクセスでも認証なしで同一IPから何度もアクセスしてるとAPIと同じようにブロックされるよ
176デフォルトの名無しさん:2011/03/24(木) 22:29:35.14
1アクセス/1秒は、偽計業務妨害の疑いで逮捕、20日間勾留されるくらい、悪質な行為。
177デフォルトの名無しさん:2011/03/25(金) 11:38:58.02
逮捕されるところでした・・
ありがとうございました・・
178デフォルトの名無しさん:2011/03/25(金) 17:59:51.89
ブチこまれた前例つくっちゃってるからな
前例がある事は容赦なく捕まえるぞ警察は
179デフォルトの名無しさん:2011/03/25(金) 20:48:52.41
>>176
無罪になったんだから別によくね?
拘留期間中の分お金もらえるし
180デフォルトの名無しさん:2011/03/25(金) 21:19:42.91
不起訴処分と無罪はまったく別物だぞ
181デフォルトの名無しさん:2011/03/25(金) 21:45:30.86
有罪だが罰はほぼ勘弁してやった、という結果だったよな
182デフォルトの名無しさん:2011/03/26(土) 23:32:01.24
懲りずにやる奴が出て売ると、有罪+実刑になるパターン
183デフォルトの名無しさん:2011/03/26(土) 23:32:10.35
毎秒ごとに株価とか為替採りたいと思ってた所だったw
前例有るのかw
184デフォルトの名無しさん:2011/03/26(土) 23:36:53.11
岡崎図書館  岡崎市立図書館 で検索してみ
185デフォルトの名無しさん:2011/03/26(土) 23:41:36.56
ネットワークプログラミングをやってる人間であれば、知っておかなければ恥だ
186デフォルトの名無しさん:2011/03/26(土) 23:43:10.39
恥で済めばいいが、人生終了しかねないからな
187デフォルトの名無しさん:2011/03/26(土) 23:48:55.16
ネットワークプログラミングの勉強中で、以下のようなプログラムを作成しています。

1.ソケットを3つ開き、selectで待ちます。
(a_fd、b_fd、c_fdとする。)
2.受信したデータはソケットごとに保持。
(a_fdで"HELLO"、b_fdで"SeeYou"、c_fdで"Hi"というデータを受信したら a_fd:HELLO b_fd:SeeYou c_fd:Hiという風に )
3.新しいデータを受信したら上書きする
(a_fdで"Bye"を受信したらHELLOを上書き)
4.各fdから1分間何も受信しなければそのfdのデータを削除する。
(a_fdから1分間受信しなければa_fd: b_fd: SeeYou c_fd:Hiとなる)

1~3までは作成できますが、4のアルゴリズムが分かりません。
selectのタイムアウトを1分にするのかと思いましたが、それだと各fdではなく全てのfdから1分間受信しなかった場合しか
判断できないですよね?
どのようにすれば各fdの時間を判断できますか?

よろしくお願いします。
188デフォルトの名無しさん:2011/03/27(日) 01:04:06.59
各fd毎に最終受信時刻を記録しておき、selectに入る前にチェックする。
189デフォルトの名無しさん:2011/03/27(日) 02:00:52.73
>>188
なるほど~
ありがとうございます。
190デフォルトの名無しさん:2011/03/27(日) 13:56:27.64
今、Winsockの勉強でパケットキャプチャを作成しているのですが
パケットがどのアプリケーション宛に送られて来たものなのかを
特定する方法はあるのでしょうか?
よろしくお願いします。
191デフォルトの名無しさん:2011/03/27(日) 14:33:41.81
>>190
「netstat -b」で「リッスン ポートの作成に使われた実行ファイルを表示」できる。
(手元のWindows 7で確認した)
これをパケットと付き合わせればよいかと。
192デフォルトの名無しさん:2011/03/27(日) 14:56:25.99
>>191
こちらはXPですがその方法でやれそうです。
ありがとうございます。
193デフォルトの名無しさん:2011/03/27(日) 15:35:19.92
おおっすげーと思ったが、
これ/etc/services参照してるだけだろw
194デフォルトの名無しさん:2011/03/27(日) 16:22:43.45
ほほう、linuxだと netstat -p でできるようだ。
いいこと聞いたありがとう
195デフォルトの名無しさん:2011/03/27(日) 16:48:45.76
>>168
そもそも
「v1 と v2c の実処理を行なう箇所を同じ処理で統一したい」を
「同じデータを取得」で実現するなら最小公倍数の項目で
やるしかないからこの場合は無理。だいいち
Enterprise=ベンダが勝手に定義して勝手に使うところだろ。
SNMPバージョンどころかベンダとか、最悪機器ごとに
処理変わるじゃん。アホか。

SNMPには落とし穴がいっぱいあるから
(例えば32ビット数は5バイトで表現されるから気をつけろ)
目的や対象機器を具体的にせまく絞って始めないと苦労するぞ。
大した目的がないならトライ&エラーで勝手にガンガレ
196デフォルトの名無しさん:2011/03/27(日) 20:32:46.13
こんばんは。

ソケット、プロセス間通信でポインタを含む構造体を送受信したいのですが、どうやればいいですか?
ポインタをそのまま送るのはNGだと聞きましたが。。。
197デフォルトの名無しさん:2011/03/27(日) 20:57:24.98
送り側がデータをftpサーバにアップして
受け取り側はftpサーバからダウンロードしたほうが簡単だと思う
198デフォルトの名無しさん:2011/03/27(日) 21:01:46.73
>>196
> ポインタをそのまま送るのはNGだと聞きましたが。。。
同じアドレス空間で動いていないから、ポインターのさす先を別途送りつけるしかない
その先にポインターがあったらさらにもう一回… … …
199196:2011/03/27(日) 21:06:19.64
>>197
ソケットを使うことが条件なので。。。

>>198
構造体をポインタがない構造体にしてから送るしかないですよね。。。
ありがとうございました。
200196:2011/03/27(日) 21:25:36.74
>>198
何度もすいません。
構造体が線形リストの場合(データが何件あるかわからない場合)、
どのように展開すればいいですか?
201デフォルトの名無しさん:2011/03/27(日) 21:29:01.45
最初にデータの件数を数えてその個数を送るか
1件送るたびに次がまだあるか無いかを示すフラグを送るか
202196:2011/03/27(日) 21:30:50.90
>>201
なるほど。。。すごいなぁ。
ありがとうございました。助かります
203デフォルトの名無しさん:2011/03/27(日) 21:31:14.54
やっぱりftpで送ったほうがいいと思う
(まだわかんねえかな~)
204デフォルトの名無しさん:2011/03/27(日) 21:33:28.76
ポインタ受け取ったら実体を要求すればいい。
205196:2011/03/27(日) 21:39:35.27
>>203
すいません。
ftpで送るってどういうことですか?
ソケットとは違いますよね?
206デフォルトの名無しさん:2011/03/28(月) 06:35:07.15
ソケットは手段
ftpは通信規約
207デフォルトの名無しさん:2011/03/28(月) 14:06:31.93
>>195
レス、hx

言われることはもっともなんだけれど、そういう風に要求されてしまったので可能なのだろうかと調べていたところで。
数値の扱いなども言われるとおりでちょっと苦戦していました。
※その後、もともとのプログラムが v2c に対応していないことが判明しました。w

もうちょっとがんばってみるです。
ありがとうございました。
208デフォルトの名無しさん:2011/03/28(月) 17:37:16.69
SNMP廻り全部自前で書くの?
結構難しいよ。ただただ面倒だし。
出回っているライブラリーのソース読めば
その辺のことは大体分かると思う。
209デフォルトの名無しさん:2011/03/29(火) 22:10:44.64
ポインタを含むデータ構造通信の件、おいら大好物。
ゆっくりでよければ教えるよ

問題なのは、最近のOSではメモリが確保される具体アドレスは
マシンごとに違うから、単にメモリアドレス値を渡しても
普通うまくいかんっつーことだな。

レアなやりかたで、メモリが確保されるアドレスをそろえてしまう
ってのもある。

オイラが好きなのは、データパケットの先頭をゼロとして
ポインタ値をオフセット値に変換して通信、
受信側はオフセットをポインタ値に戻す、ってやつ。

"シリアライズ"で検索するといろいろでるよ。
あと、.Net等で同一マシン内の違う言語で構造体データ渡すのにも
似たテクを使うんだが、それは検索キーワード"マーシャリング"だ
210デフォルトの名無しさん:2011/03/29(火) 22:37:03.78
> レアなやりかたで、メモリが確保されるアドレスをそろえてしまう
どうやって?
相手のマシンが同じアーキテクチャである保証はない
ましてや同じOSである保証はさらにない

> データパケットの先頭をゼロとして
> ポインタ値をオフセット値に変換して通信、
同一オブジェクトへのオフセットは, 当然, 考慮されてるんだよな
こっちでは a -> x, b -> x
あっちでは a -> x, b -> y
だったら洒落にならないんだが…
211デフォルトの名無しさん:2011/03/29(火) 22:51:14.57
すまん、根本の話がすっとんでた。順番に書くと

(1)マシンが別ならメモリアドレス値は別になるから
アドレス値渡しても意味無し。
(2)マシンAでポインタを含むデータ構造を持ってて、
それをマシンBで再現できればいいのであって、
具体的なアドレスは変わっててもいい。
(3)マシンAにてパケットで表現できる形式に変換して、
マシンBに渡して、マシンBでメモリ上に再現する
てのが基本。
(4)パケット表現は、テキストやバイナリがある。
テキストで有名なのはXML、JSON。
バイナリも古くからいろいろあって、
固定長好き派の
NDR(IBM HP MSのRPC)やら
XDR(Sun RPC)やら、
タグ・長さ・値 派のBER(SNMP)やら。

あと、いろいろ環境ツールも含めて
GoogleのProtocol Buffersやら
FacebookのThriftやら
MessagePackやら
もある。

俺が言った、「アドレス値をオフセットに~」っていうのは
バイナリパケット形式の、独自方式を自分で実装する
って話。
201は多分べつの物知りさんだな、
いまocn規制できつい、ゆっくり頼むが
同一の固定OSでないと固定addrは無理だろ
212デフォルトの名無しさん:2011/03/30(水) 00:20:45.86
浅い話を長々書くな
213デフォルトの名無しさん:2011/03/30(水) 10:07:58.23
>>211
> ポインタを含むデータ構造通信の件、おいら大好物。
> ゆっくりでよければ教えるよ
と宣言したんだから、>>200も考慮してきっちり教えてやれ。w
214デフォルトの名無しさん:2011/03/30(水) 14:01:33.18
なんかフォールトレランスシステムで、同じシステム上で同じアプリが複数動いてるのを前提にしてそうな環境だな。

お互いにポインタで参照し合って相互に確認しながら、動作するプログラムが組めそう。
215デフォルトの名無しさん:2011/03/30(水) 15:10:11.16
インデックスなら
216デフォルトの名無しさん:2011/03/30(水) 16:47:20.77
ちょっと質問いいですか。
ここの掲示板でhttp://aurasoul.mb2.jp/_shk/書き込むと名前の横にIDが自動的につくのですが
このIDを変える事はできませんか?プロバイダーが変わっても串を刺してもクッキー消しても変えられない。手軽に変える方法は無いですか?
217デフォルトの名無しさん:2011/03/30(水) 19:22:16.64
             ,. ' ´  ̄ ̄ ̄ ̄ ̄ `ヽ、
           /    /          \    
          /     /             \
         /     /―――――――――イノ
         /     /: : : : : : : : : : : :| |
        ,'    ,∠ __________/ |
        |   <__:.:.イ:.`メ、/|:/ |:./\レ:.:.〈 |
        ノ!     |/リレ',ィrそド"´ レ ィチxV:.!:.V}
       /|    /!:.:.! 〈. トzリ     トzリ }:!::Nリ
     /     /ソ:.:.i xx`¨´    , `¨x{:从 }
    /      //|:.:.込、         /:.|.ハ∧    なんかわたし
    /     /厶|:.:.|\ ヽ、  r つ ,. く:.:.:! ∧ ヽ      呼ばれた気がするんだよ?
   /    /    |:.:.|::::::> ミ  、 <}  |::.:|   ヽ. }
  /i   〃     レ‐‐く\   ̄´ /::!  !:.:<フ二ヽリ
./   //     / /⌒く:\  イ:::::|  |:. 厶--、 }
   / /     (   /,. ┤:::::ヽ /::::::|  |:.厶--、 /
218デフォルトの名無しさん:2011/03/31(木) 00:24:27.59
どんなパケット形式を使うにしても、
(a)循環参照をどうするのか
(b)同一値のエントリが2個以上あるのか
とか、
そのシステムではどうなのかちゃんと
調べて設計の前提条件にしないとダメよ。

ーーーー
リンクリストは後にして、まず文字列のポインタで例だそう。

1エントリに
固定長サイズの部分と可変長サイズの部分があるとするだろ。

struct Hoge {
 uint32_t num1;
 uint32_t num2;
 char *str1;
 char *str2;
}
したら、俺ならこの1エントリに対して例えば
219デフォルトの名無しさん:2011/03/31(木) 00:26:08.56

|----+----+----+----|
|entrySize-------| //パケット独自項目
|num1------------| //ここから固定長部分
|num2------------|
|str1Offset------| //データとパケットで違う項目
|str2Offset------| //データとパケットで違う項目
|str1の中身........| //ここから可変長部分
|.....文字列おわりnull|
|str2の中身........|
|.....文字列おわりnull、4バイト切りいいところまでnull|
とかの形でパケット化するんだわ。

受信側は、
entrySize分のメモリを用意して、
num1~str2の中身をコピーして、
str1Offsetとstr2Offsetの値を書き換えてやれば
struct Hoge のできあがりと。

これは例だからもちろん他のやりかたでもよし。
220デフォルトの名無しさん:2011/03/31(木) 00:28:53.06
で、循環参照や重複エントリはないシステムだとして、
双方向リンクリストだったら、
エントリ->前,次 と書くとして

e1 -> null, e2
e2 -> e1, e3
e3 -> e2, null
をパケットで表現したければ、パケットにはアタマから

ヘッダ(エントリ個数3、とか)
e1
e2
e3

とならべる。
それぞれのポインタを指すフィールドには、パケット先頭からの
e1,e2,e3先頭のオフセットを格納しておけばよい。
ヘッダがあるからnull値と先頭エントリの区別はつく。

つたわるかな?
221デフォルトの名無しさん:2011/03/31(木) 00:29:27.02
>>219
offsetって何?
222デフォルトの名無しさん:2011/03/31(木) 00:37:22.68
offset くらいググろうよ(;-;)
昨日の書き込み見てもわからん?

どんなシステムでも使えてかつ高速な、夢の方法はない。
どんなシステムでも使いたきゃ
実行コスト払ってXMLなりJSON使う。

[アドレス固定]の話は...man shmat 参照。
でも使える場面はかなり限定されるよ。

223デフォルトの名無しさん:2011/03/31(木) 00:41:36.98
>>222
ごめん、質問が悪かった。offsetを何に使うのか。
データさえわかってしまえば、送り先のメモリアドレスな
んて必要ないと思っただけ(offsetってそういう意味じゃない?)。
json,xmlならそんなことしないから使い道が気になっただけ。
224デフォルトの名無しさん:2011/03/31(木) 00:42:51.63
ごめ、「送り元」のアドレスだったorz
225デフォルトの名無しさん:2011/03/31(木) 00:42:56.74
循環やら重複エントリを扱いたかったら、まずはその元データについて
全エントリを重複無くたどるアルゴリスムを考えてみれ。
ソコまでできればあとは楽勝だろ。
226デフォルトの名無しさん:2011/03/31(木) 00:52:36.29
受信したマシン上で、struct Hoge を再現するんだろ。パケットではoffset を入れてるところに、受信マシンがアドレス値を上書きして、struct Hoge * として読むんだよ。
C言語はわかってるんだよな?
227デフォルトの名無しさん:2011/03/31(木) 01:00:19.13
あああ、疑問点わかった。
ウム、文字列途中にnull が入らないことが確定なら確かに値だけでも
問題なく伝わるね。
それでもイイヨ。受信データと再現データを完全に別にするなら。
228デフォルトの名無しさん:2011/03/31(木) 01:09:57.65
あああ、意味分かった。
num1からstr2をまるごとコピーして、各offsetに
コピーしたstr1, str2のアドレスいれれば再現可能って訳ね。
で、可変の場合は各エントリのoffsetをたどって同じこと
繰り返す、と。失礼した。
229デフォルトの名無しさん:2011/03/31(木) 10:28:01.02
教えてください。

linux の snmptrap や snmpinform などのコマンドで、data binding 部のデータの型を
i:整数、s:文字列 みたいに指定するのだけど、Opeque や NsapAddress を指定することは可能でしょうか。

↓コマンドで指定できる型を参考にした場所(表3)
http://www.itmedia.co.jp/enterprise/articles/0705/31/news042_4.html

↓snmp で指定できる tag の型を参考にした場所(表2)
http://www.netwatcher.jp/snmp/snmp_main.html


あと、inform は要求を受信した後に返す応答の送信先は
要求を送信してきた側の IP アドレスとポート番号でいいのでしょうか。
snmpinform で要求を投げて、以下の場所に返してみたのだけどタイムアウトになってしまいます。
・受信したUDPソケット (当然?送信できずににエラーとなる)
・新規に作成したUDPソケットで要求を送信してきた側の IP アドレスとポート番号
・新規に作成したUDPソケットで要求を送信してきた側の IP アドレスとSNMPの既定ポート(162)

お願いします。
230デフォルトの名無しさん:2011/03/31(木) 10:39:19.10
net-snmpの場合、usage:にOpaqueで扱える型が出力される。
NETSNMP_WITH_OPAQUE_SPECIAL_TYPES定義でコンパイルされていれば。
231デフォルトの名無しさん:2011/03/31(木) 13:01:53.84
>>230
ありがとうございます。
usage に見当たらないので、、、残念。


inform の返信先についても、分かる方がいらっしゃったら教えてください。
232デフォルトの名無しさん:2011/04/12(火) 22:48:34.55
WinSockでUDPのプログラムを組んでるんですけど、
ポートはbindしてて、INADDR_ANYでsendtoしたときに、
実際にrecvする側で送信元として受け取るアドレスは、
送信元のどのアドレスなのでしょう?
「どの」っていうのは、送信元のマシンにはエイリアスで
アドレスが複数追加されているので・・・

INADDR_ANYで送信するときって、送信元として入るアドレス選択に
きまりはあるのでしょうか?
233デフォルトの名無しさん:2011/04/12(火) 22:53:17.51
bindしてれば、そのアドレス
してなければ、出て行ったインターフェースのアドレス

ただWinSockはいろいろ斜めを行くから…
234デフォルトの名無しさん:2011/04/13(水) 12:32:56.36
>>232
>INADDR_ANYで送信するときって、送信元として入るアドレス選択に
>きまりはあるのでしょうか?

ホストのルーティングテーブルでネクストポップを決定して、
そのネクストポップと同じサブネットのアドレス。

>>233
>してなければ、出て行ったインタフェースのアドレス

232が聞いてるのは一つのインターフェイスに複数のIPアドレス振ってる時の話でしょ。
235デフォルトの名無しさん:2011/04/13(水) 12:38:44.84
同じNICに二つのIPアドレス振ってるときは
出て行くのはプライマリのIPアドレスからになる
236デフォルトの名無しさん:2011/04/13(水) 18:19:07.72
>>235
んなわけあるかい。
「プライマリの」なんて概念が前時代的。
237232:2011/04/14(木) 00:35:43.37
>>233-235
ありがとうございます。
>>234さんの指摘のように、1つのインタフェースに複数のアドレスが定義されている場合です。

>>234
> ホストのルーティングテーブルでネクストポップを決定して、
> そのネクストポップと同じサブネットのアドレス。

浅学ですみません。。。定義した複数アドレスが、同一ネットワークの場合はどうなるでしょうか?
基本的な質問で恐縮なのですが、なぜこういう質問をしているか、
>>232の話をもう少し具体的に言うと

① サーバ    : アドレス 192.168.0.20/24 さらに同じNICに対して、エイリアスで 192.168.0.1/24 を定義している
② クライアント : アドレス 192.168.0.10/24

この状態で①→②へ送信します。送信方法は>>232に書いたように、UDPで、ポートは固定で指定、
ホストアドレスは INADDR_ANY で作ってバインドしてあります。
①でsendtoして②でrecvfromしたとき、②で受信したときの送信元(①)のアドレスがどうなるか?なのです。
というのも、①がWindowsXPの場合は、送信元アドレスが 192.168.0.20 となったのですが、
Windows7の場合は、192.168.0.1 となるのです・・・
>>234さんの指摘をもらって、route print してみると、
確かに WindowsXP では、192.168.0.0/24 の interface が 192.168.0.20 となっているのですが(>>235さんの言うプライマリですね)
Windows7の場合は、192.168.0.0/24 の interface は 192.168.0.1 となっています。
Windows7の場合、アドレスが小さいものが interface に優先されてしまう?と疑問を持った次第です。

これまでXPで使っていたプログラムで、Windows7へ持っていくと動作が変わるので、
これをなんとかしたい、というのが背景です。
238デフォルトの名無しさん:2011/04/14(木) 06:30:29.12
INADDR_ANYをやめる
239デフォルトの名無しさん:2011/04/14(木) 15:29:36.22
Linuxのソケットで
まだreadしてないたまっているバッファをすべて破棄するには
どうするのが一番スマートで速くて格好いいデスか?
240デフォルトの名無しさん:2011/04/14(木) 15:43:31.87
select, readループ
241デフォルトの名無しさん:2011/04/14(木) 15:53:11.93
>>240
空読みが許されるのは童貞までだよねー
242232:2011/04/14(木) 18:19:21.77
自己解決しました。

結論から言うと、OSの仕様でした。(無印Win7しか確認していませんが)
http://support.microsoft.com/kb/2386184

↑のKBの修正Hotfixを当ててから、
netsh で skipassource=true にしてエイリアスのIPアドレスを
同一NICに追加してやると、プライマリ相当のアドレスで返ってくるようになりました。
またこのとき、route print すると Gateway と Interface がプライマリ相当のアドレスになることが確認できました。

>>236さんの言うようにプライマリという概念がそもそもなくなってるともいえますし、
OSの動作が、XP/2003Server → Win7/2008R2 で変わったともいえると思います。
まあプログラム側がOSの仕様を決め打ちした動きになってるのが悪いんですが・・・w

とりあえずOSのアップデートか、>>238さんの言うようにプログラム側で対処するか、
どちらかで検討します。
お騒がせしました。
243デフォルトの名無しさん:2011/04/14(木) 19:55:54.78
くっそ
ソケットに対してlseekするとエラーになるんじゃん!
244デフォルトの名無しさん:2011/04/14(木) 19:59:14.69
いやいやいやいや
常識的に考えて出来るはずなかろう?
245デフォルトの名無しさん:2011/04/14(木) 20:01:50.14
向こうが shutdown で閉じてれば あるいわ… ってTCP限定の話になっちゃうか

soket 閉じて開きなおすのはマズイのだろうか と戯言
246デフォルトの名無しさん:2011/04/14(木) 21:36:35.72
shutdownマナーはFAQです。よく読んでください。
247デフォルトの名無しさん:2011/04/14(木) 21:43:05.47
>>244
lseek を実装して、現在あるバッファを読み飛ばす(捨てる)だけは可
にすればいいんだがまぁ、対称性に著しく書けるインターフェースだわな
248196:2011/04/14(木) 21:52:01.14
ソケットでのプロセス間通信について質問です。
AとBのプログラムで通信する場合ですが、こういう認識で合ってますか?

 プログラムA    プログラムB
   ↑         ↑    ユーザランド
-----|-----------------|---------
 プログラムAの   プログラムBの
  ソケット←ーーーー→ソケット  カーネル
249デフォルトの名無しさん:2011/04/14(木) 21:52:44.84

名前の196は関係ないです。
すいません。
250デフォルトの名無しさん:2011/04/14(木) 22:10:21.58
>>248
ええ。
まあ環境によるんですけど。
251デフォルトの名無しさん:2011/04/14(木) 22:13:46.39
>>250
例外もあるんですか?
252デフォルトの名無しさん:2011/04/14(木) 22:27:29.18
プロトコルスタックがカーネルにある必要は無いし、
逆に、インカーネルなhttpdとかありうるし。
253デフォルトの名無しさん:2011/04/14(木) 22:52:12.25
NFSサーバとかカーネル内にある。
254デフォルトの名無しさん:2011/04/15(金) 00:08:01.48
インターフェースがupされた直後に
いくつかのソケットでconnectし始めるプログラムを実行すると
一番最初のconnectはつながるまで約3秒かかるのに
ほぼ同時ながら別のスレッドでconnect呼ぶところではほぼ即座につながる
ってことが起こるんですが、何が原因でしょう?
あと、一発のconnectの待ちを短くしてやるにはどうすればいいでしょう?
255デフォルトの名無しさん:2011/04/15(金) 00:13:37.91
DHCPとかDNS引いてるんじゃない?
256デフォルトの名無しさん:2011/04/15(金) 00:18:31.32
ああすいません
インターフェースは固定IPでupさせてます
あと、接続もIPアドレス直です
1回目のconnectと2回目のconnectは同一ホストへの接続で
ポート番号が1個違うだけなのに2回目の方が先につながるのが納得いかない。。
257デフォルトの名無しさん:2011/04/15(金) 00:27:05.93
ARPが必要だけど、そんな時間かからない。
OSは何?
258デフォルトの名無しさん:2011/04/15(金) 00:31:52.32
linuxです
ひょっとしてarpテーブル見に行って該当無かったら
arp投げて3秒後synリトライしているとか?
259デフォルトの名無しさん:2011/04/15(金) 00:35:34.94
ARP終わらなければパケット投げられません。
リトライになるはずないです。
ルーティング設定も手動ですか?
DNSの逆引きが行われてませんか?
260デフォルトの名無しさん:2011/04/15(金) 00:36:19.85
ethersharkでパケットダンプすれば?
261デフォルトの名無しさん:2011/04/15(金) 02:23:27.15
>>260
ちょ、まじってる
262デフォルトの名無しさん:2011/04/15(金) 14:06:04.59
>>253
マジ?
263デフォルトの名無しさん:2011/04/15(金) 15:40:07.26
>>262
常識
264デフォルトの名無しさん:2011/04/15(金) 16:46:17.40
>>263
いや、今でも使ってる人いるの?
265デフォルトの名無しさん:2011/04/15(金) 16:50:47.51
>>264 うちでは、普通に使ってるが
266デフォルトの名無しさん:2011/04/15(金) 19:03:36.63
>>259
ルーティング設定も手動、DNSの逆引きは行われていないと思います。

>>260
wiresharkが使えればよいのですが
組み込み系かつWiFi直結間での通信なので・・・

とりあえずノンブロッキングで
connect→close→connect
ってすると即座につながったのでこれで良し?
267デフォルトの名無しさん:2011/04/15(金) 19:15:37.64
Peerも組み込み?
PeerをPCにしてperrでwireshark動かせば?
268デフォルトの名無しさん:2011/04/15(金) 19:30:43.86
>>264
たとえばWindowsのIISのHTTPサーバーはカーネルで動作するように実装されてた。
パフォーマンス優先で設計すると、そうなる。
269デフォルトの名無しさん:2011/04/15(金) 19:43:28.92
されてたってまたユーザモードに戻されたの?
カーネルモードに移動したのがServer 2003あたりの比較的最近だった気がするけど

ちなみにLinuxにもカーネルモードのhttpdがある
270デフォルトの名無しさん:2011/04/18(月) 12:02:15.56
NFSもカーネルモードのがあったな
271デフォルトの名無しさん:2011/04/18(月) 12:06:45.71
あったなじゃなくて、元祖のSUNの実装がインカーネルなんだよ。
坊やならしょうがないけど、人前でそういう発言しな方が良いぞ。w
272デフォルトの名無しさん:2011/04/18(月) 13:56:48.22
>>271
システムコール呼んだら2度と帰ってこないって、あれだっけ?
まぁ、当時はカーネルスレッドなんかなかったからなぁ
273デフォルトの名無しさん:2011/04/18(月) 15:36:01.74
>>271
元祖の話とかしてどうするの? 懐かしむの?
274デフォルトの名無しさん:2011/04/18(月) 16:29:33.47
NFS-3GもFUSEからカーネルに取り込まれたよ。
275デフォルトの名無しさん:2011/04/18(月) 17:03:04.79
>>273
しょうがないよ。坊やが生まれる前からある技術だから。
276デフォルトの名無しさん:2011/04/18(月) 18:05:41.66
今はもう使われてないしなぁ
277デフォルトの名無しさん:2011/04/27(水) 10:01:35.90
おじいちゃんは昔話好きだからな。
今頃バブルの話とか太古のアイドルの話しても分からないってw

nfsに限らずファイル周り呼んだら帰って来なく成るって多いorz

無線だと無線の物理層のリンクもいろいろごにょごにょしてそう。
ipで下位レイヤを気にせず使える分、いろんな状況を想定する事が求められる。

被災地の観測機器にパケット飛ばしたら、無線基地局が流されて消失してたとかね。
278デフォルトの名無しさん:2011/04/27(水) 10:55:57.72
都会ね。
279デフォルトの名無しさん:2011/04/27(水) 17:18:18.60
ちょっとお尋ねします。

サーバからデータをpush送信したいと思いってます。

ちょっと調べた範囲では余りよく分かりませんでした。特にプログラミング言語で当該機能を実装するような具体的な例を見つけることができませんでした。

何かヒントとか、または、ここを
見れば分かりやすいよ、とかありましたら、よろしく願いします。

なお、サーバはwindowsでクライアントはandroidです。
280デフォルトの名無しさん:2011/04/27(水) 19:39:28.10
.NET framework4.0とC#で非同期TCPでソケット通信してバイナリデータの
送受信クライアントアプリ作ってみたいな~
なんて思ってる人生の初心者です。
invokeとかBeginInvokeとかEndInvokeとかIAsyncResultとかもうちんぷんかんぷんです。
基礎からじっくりと使い方の学習してみたいのですが、お勧めは何かありますでしょうか?

コードの断片だけじゃてんで頭にはいんないし、書籍は○○層があってだなとかフレームの中身の話とか
で、言葉の定義で実際にはソケットよりもNIC担当の処理内容に紙面を費やしてたりと
意欲だけ空回りで、てんで前進してる気配がないので、お助けください。
281デフォルトの名無しさん:2011/04/27(水) 19:42:56.80
> invokeとかBeginInvokeとかEndInvokeとかIAsyncResultとか

それはネットワークとは関係のないC#自体の話ではありませんか
ネットワークの話とは分けて勉強した方がいいと思いますが
282デフォルトの名無しさん:2011/04/27(水) 20:02:26.51
確かにそうかも。
送信した後に非同期で受信した側の処理を身に付けたいんですけど
ソケットの使い方じゃなくて、非同期の勉強でつまづいてるってところが大きいですね。
非同期だとF10押していってもデバッグ出来ないですよね?別スレに行ってしまって。
どう試行錯誤していいのか、先ずそんなところから錯誤してますです。
283デフォルトの名無しさん:2011/04/27(水) 23:33:33.79
>>280
ぐぐれば非同期の作り方の例が出てくるよ。
でもスレッド作って同期でしたほうが分かりやすいし作りやすいと思う。

C#内容についてはこちらで
http://hibari.2ch.net/test/read.cgi/tech/1302422250/
284デフォルトの名無しさん:2011/05/02(月) 16:12:32.87
winsockでプロセスが生成しているソケットを
列挙するようなI/Fがありますでしょうか?
285デフォルトの名無しさん:2011/05/02(月) 21:03:46.47
ない。
286デフォルトの名無しさん:2011/05/03(火) 03:56:32.35
>>284
WinSockには無い。
IP Helper APIを使う。
287デフォルトの名無しさん:2011/05/05(木) 04:39:15.21
ご存知の方いらっしゃれば助言頂ければ幸いです。

NAT越え関係のプログラミングを作らないといけないのですが
何をどうすればよいのやらで、行き着いたのが
uPnPでのポートマッピングに行き着きました。

諸所の本、サイト等は見て回ったのですが、
「マルチキャストでM-SEARCH」の一点張り
マルチキャスト(UDP)で送信しても受信側がどうしてもできない?
※sendtoでの戻り値状は送れていると思うのですが。
といった所で、このGWをほぼ潰す結果になりました(´・ω・`)

何か コレみれば(・∀・)イイ!! といった物はありませんでしょうか?
288287:2011/05/05(木) 05:03:06.46
補足:環境は、Win32のVC++です。
289デフォルトの名無しさん:2011/05/05(木) 09:27:46.55
>>287
Microsoft Windows SDKのサンプル。 google依存症だな。
290デフォルトの名無しさん:2011/05/05(木) 12:28:27.64
無理(無駄)なことをしてるだけのような
291デフォルトの名無しさん:2011/05/06(金) 15:42:33.43
使ってるルータがちゃんと対応してるかどうか調べたほうがいいよ。
それからどうでもいいことだけどUは大文字。Universal Plug a'n'd Play
292デフォルトの名無しさん:2011/05/12(木) 14:57:21.15
そもそもnat自体異常なインタ-ネットだからねえ。
せっかくの双方向性捨ててる。

natの内側からのコネクションの帰りにデータ詰めて流すしか無いと思うよ。
293デフォルトの名無しさん:2011/05/12(木) 15:06:16.39
>>292
> しか無いと思うよ。

そんなことはありません。
294デフォルトの名無しさん:2011/05/13(金) 04:55:32.28
じゃあどんなルータでも外から通る方法を示してくれよw
295デフォルトの名無しさん:2011/05/13(金) 10:11:57.94
>>294
natを使う
296デフォルトの名無しさん:2011/05/13(金) 13:53:09.20
「natの内側から」という条件が「どんなルーターでも」にすり替わってる。
>>294の低能ぶりがいかんなく発揮されているレスだ。
297デフォルトの名無しさん:2011/05/13(金) 15:30:54.66
プログラミングど素人なんですがど素人の状態からSNSサイトを立ち上げようと思ったらどれぐらい大変なことですか
それとSNSサイトを作る場合のお勧め言語とかありますか?
詳しく教えてもらえると助かります
298デフォルトの名無しさん:2011/05/13(金) 15:38:59.87
ちなみに一人で立ち上げる場合です
299デフォルトの名無しさん:2011/05/13(金) 15:41:11.06
プログラミングする必要はない。
http://en.wikipedia.org/wiki/Social_network_service#Open_source_software
続きの話は、適当な板でやって。
300uy:2011/05/16(月) 03:07:15.98
SNS?
Rubyが良いんじゃないかな。
Rubyはatpagesとかで動く

言語覚えたら1ヶ月で作れるんじゃね
飲み込み速ければ1週間じゃね
Web技術はプログラム的難しさよりも動作環境を整える事が難しいけど
ようは一行目に#!ruby なんとかってかいてファイル属性を755にしてrun
301デフォルトの名無しさん:2011/05/16(月) 04:24:51.16
俺ならPythonで1日だ!!
302デフォルトの名無しさん:2011/05/16(月) 10:50:02.16
perlで3時間 ・・・てとこですかね
303デフォルトの名無しさん:2011/05/21(土) 00:25:49.46
それrubyで一行でできるよ
304デフォルトの名無しさん:2011/06/07(火) 22:55:40.15
テンプレにある「Webプロトコル詳解」って絶版なの?
前の職場で人のを借りてて良書だったし買おうと思ったら本屋に取り寄せられないって言われた。
305デフォルトの名無しさん:2011/06/08(水) 00:46:30.58
本屋で理由を聞けよカス
306デフォルトの名無しさん:2011/06/08(水) 03:11:36.41
恥ずかしくて聞けるわけねーだろボケ
307デフォルトの名無しさん:2011/06/08(水) 03:13:57.15
amazonに中古があるみたいだけど
308デフォルトの名無しさん:2011/06/08(水) 06:01:34.26
ほー、ブクヲフで見かけたら捕獲してみるか。
内容的には古過ぎて役に立たなさそうな気がw
309デフォルトの名無しさん:2011/06/08(水) 11:12:19.65
そういえば俺が差がしたときもネットの古本ですら在庫なかったわ。
しかも在庫切れ前野縁談結構してるところ多かったから
内容がいいだけに古本があまり出回ってないのかもな、
ブクオフのネットだと安かったが在庫なかった。
たまたまオークションでそこそこ安く買えたがラッキーだったのかね。
310デフォルトの名無しさん:2011/06/08(水) 11:13:21.62
タイプミススマソ
>しかも在庫切れ前野縁談結構してるところ多かったから
しかも在庫切れ前の値段結構してるところ多かったから

311デフォルトの名無しさん:2011/06/08(水) 21:16:37.81
IPv6Day は何事も無く終わりましたとさ
312デフォルトの名無しさん:2011/06/08(水) 22:55:12.40
>>304-309
良書ほど日本人の素人に取っつきにくくて、売れないのかね
絶版になったり、改訂版が出なかったりするんだよな
「UNIXネットワークプログラミング」も原書はとっくの昔に改訂されているのに
邦訳はいつまでも2版のままだもんな

まあ良書は新しいことだけ自分でネットの文章などで補間しとけば今でも役に立つが、
新しいこと書いてあっても中身糞なのは役に立たないんけどなw
313デフォルトの名無しさん:2011/06/08(水) 23:04:56.64
>>312
3版って何がかわったの?
314デフォルトの名無しさん:2011/06/08(水) 23:25:04.09
>>313
IP V6関連の増補とか、SCTPやIPsecが追加されたとか、細かいところいろいろな。
第3版出たの9年前だが、いつまでたっても邦訳改定されないので、
2年後ぐらいに原書買ってしまったんだが、まさか10年近くたってもまだ出ないとは
思わなかったわw
315デフォルトの名無しさん:2011/06/08(水) 23:40:25.53
おおIPv6とSCTPか。ほしいな。
でもIPv6って10年前と今とでわりと結構違うくね?
第4版まで待って買うかね
316デフォルトの名無しさん:2011/06/09(木) 01:02:51.45
>>312
良書は必ず読むって層が英語で読んじゃうからね。
317デフォルトの名無しさん:2011/06/09(木) 04:51:47.78
実際実装していく上での疑問点はrfcを確認することになるから、需要がある層が英語おkだったりして日本語版の必要性が低い。
ietfとかの国際会議で議論までしちゃう連中だと、日本語版を買う必要性も無いだろうな。現地で英語版買ってそのまま日本でも読み続けてると思う。
318デフォルトの名無しさん:2011/06/09(木) 15:33:13.82
翻訳がひどいの多いしね。
全部カタカナにするだけでいいんだが・・・
319デフォルトの名無しさん:2011/06/09(木) 16:39:49.45
固有名詞だとむしろ英語のまま残しておいてもらったほうがいいな。
エラーログまで和訳され手分けわかめなのと同じ。
320デフォルトの名無しさん:2011/06/09(木) 18:09:23.21
ルー大柴に監修してもらえばいいんだよな
321デフォルトの名無しさん:2011/06/10(金) 03:01:03.80
はいはい、翻訳ひどくてすみませんでした(AAry
322デフォルトの名無しさん:2011/06/10(金) 11:53:51.75
お前翻訳者か? 反省しろよ
323デフォルトの名無しさん:2011/06/10(金) 21:56:15.88
>>315
著者のスティーブンスが死んじゃったからなぁ。
324デフォルトの名無しさん:2011/06/10(金) 23:30:55.59
まじ? 最近名前を知ってる人がポンポンよく死ぬなぁ。
もうすぐオレも死ぬんじゃないか? って気になるわ。
325デフォルトの名無しさん:2011/06/10(金) 23:52:22.99
経絡秘孔の入林を突いたお前はもう
326デフォルトの名無しさん:2011/06/11(土) 01:13:10.10
一昨年、高校のときの担任が病死した
去年、大学のときのたばこ好きの先輩が食道癌になって逝った
今年、高校のときの同級生がバイクで事故死した
327デフォルトの名無しさん:2011/06/12(日) 00:36:34.67
ipv6を手がける様な人って経験豊富な高齢者だからよく氏ぬのか?
328デフォルトの名無しさん:2011/06/12(日) 01:52:12.81
itojunnも死んだよね。
ipv6は正にこれからなんだが
329デフォルトの名無しさん:2011/06/12(日) 03:07:19.32
.netFrameworkに追加されたparallel使ったTCPのsocket送受信サンプルって
参考になるサイトありませんか?
330デフォルトの名無しさん:2011/06/12(日) 04:17:27.59
>>329
ありません
331デフォルトの名無しさん:2011/06/12(日) 17:08:38.36
伊藤さんの損失は大きいね。亀プロも解散しちゃったし。日本がネット技術で先端を開く芽を失った。
爺さんじゃなかったはずだけど持病でもあったのかな? プログラマとか持病多いからなあ。

ipv4聡明期の村井さんとか砂原さんじゃこれから20年とかとても戦えないからなあ。
ウィンドウズ95の発売で一気に一般化したipv4から16年か。もうアドレス枯渇で役目を終えようとしてるけど。
332デフォルトの名無しさん:2011/06/12(日) 20:10:01.48
>>331
自。なぜかわしらない。当時はIPv6の話をしても誰も聞く耳をもたなかったからか?
333デフォルトの名無しさん:2011/06/12(日) 21:30:06.79
wiereshark について聞いていいですか
非同期のUDP による送受信プログラムを一台のPC で検証しています
パケットモニタしたいと思いフィルタリングで
ip.addr == 127.0.0.1 && udp.port == 5030
として、applyするのですが、パケットがキャプチャーできません、何処か間違ってますか?
334デフォルトの名無しさん:2011/06/12(日) 21:34:47.94
インターフェースの指定は合ってる?
-i lo
335デフォルトの名無しさん:2011/06/12(日) 21:36:35.68
↓これくらいの検索キーワードをすぐに思いつかない奴がネットワークプログラミングする事が間違っている。
windows wireshark loopback
336デフォルトの名無しさん:2011/06/12(日) 21:42:51.49
>>335
鼻息荒いな 夕飯食ったか?
337デフォルトの名無しさん:2011/06/12(日) 21:50:13.06
>>336
>>335はツンデレだろ
338デフォルトの名無しさん:2011/06/13(月) 00:51:32.24
>>336そろそろ お夜食の時間です。
339デフォルトの名無しさん:2011/06/13(月) 06:42:03.58
カルシウムやストロンチウムを採ると心が落ち着きますよ
340デフォルトの名無しさん:2011/06/13(月) 08:07:17.04
アダマンチウムを摂取して 今よりもっと強くなりたい
341デフォルトの名無しさん:2011/06/13(月) 13:01:08.23
カルシウム単体では吸収率低いよ。タンパク質が必要。
人間の身体はコンピュータほど単純ではないよ。
342デフォルトの名無しさん:2011/06/13(月) 14:07:39.84
>>341
ミルクはカルシウムが、野菜はビタミン豊富、大豆はタンパク質
バランスも大切。
343デフォルトの名無しさん:2011/06/13(月) 14:33:50.79
おまいらの場合は亜鉛の方が重要だろ
注入量以上を毎日放出してんだから
344デフォルトの名無しさん:2011/06/14(火) 02:55:53.87
ミルクは実は吸収率悪い。量は取れるけどね。カルシウム過多でも問題あるので注意。
345デフォルトの名無しさん:2011/06/14(火) 03:00:02.73
亜鉛中毒もきついと聞くな
346デフォルトの名無しさん:2011/06/14(火) 08:47:45.68
日本じゃ牛乳飲んでもおっぱいでかくならんよ
347デフォルトの名無しさん:2011/06/16(木) 06:47:06.62
ビタミンD
348デフォルトの名無しさん:2011/06/19(日) 01:22:04.15
質問です。
今日、SFの本を読んでいて思ったんですが、
例えば10年後に火星に基地が出来たとします。
その基地と通信する場合にTCPを使ったとすると、
パケット一個届けるのに20分くらい。
ACKが帰ってくるのに20分くらい。
通信状態が悪いでしょうから、パケットが消えて
再送したりするとすごく大変じゃないですか。
そこで一つのPCにNICを5個つけて、
送信したいデータをRAID6のような形にパリティつけて分割した後、
5つのNICから送信先に向かって一度に送ってしまえば、
受信側でいくつかデータが欠損していても復元できて幸せと
思ったんですけど、そんなプロトコルというか仕組みって有るんでしょうか?
349デフォルトの名無しさん:2011/06/19(日) 01:27:29.74
はやぶさとかあかつきはどうやってんのかな
350デフォルトの名無しさん:2011/06/19(日) 01:31:51.58
>>348
つ TTCP
351デフォルトの名無しさん:2011/06/19(日) 01:38:58.59
>>350
>TTCP
ググってみましたけれど、
T/TCPのことですよね。
これってネットワーク環境が良くないと使えないのでは?
僕は、宇宙と通信する場合を想定しているんですけれど...
↑電波な発言だな~
352デフォルトの名無しさん:2011/06/19(日) 03:27:01.15
伝播どうこうより「宇宙と通信」が言葉として既におかしいというか誤解を招く
353デフォルトの名無しさん:2011/06/19(日) 04:39:26.45
すいません。
じゃあ、宇宙等極限環境下でのネットワーク環境についてですね。
354デフォルトの名無しさん:2011/06/19(日) 05:29:46.79
所詮2chの名無しなんて
俺が何を作ろうと、煽り続けるんだろう
相手してるとつかれるんよ
355デフォルトの名無しさん:2011/06/19(日) 05:47:36.33
>>354
おまえも名無しだろ。
356デフォルトの名無しさん:2011/06/19(日) 10:17:12.52
>>348
パケットの遅延については、あなたの使ってる TCP でも ACK を待たずに次の
パケットを送ってしまい、間違ってたらそのパケットのみ再送すると言う制御
をしている。(tcp window と tcp selective ack とかでググルといいかも。)

誤り制御はわざわざ別チャネルにする必要はないので、通信データ自体に冗長
化データを付加して誤り訂正するようにしている。

複数チャネルを使うと言うのは MIMO とか link aggregation 等の技術がある
けど、基本的に高速化のための技術。
357デフォルトの名無しさん:2011/06/19(日) 10:18:30.45
ていうか宇宙と通信するのに通信路が複数ある可能性は無いよね。
358デフォルトの名無しさん:2011/06/19(日) 11:13:24.80
>>357
「宇宙と通信」は >>352 が言う通り意味がよくわからんが、
はやぶさは3本の通信路を持ってたよ。

て言うか通信路1本だけって、怖すぎだろ。
359デフォルトの名無しさん:2011/06/19(日) 11:46:10.75
>>358
3本もあったのか・・・
1本は直通だとして、残りの2本はどことどこ経由?
やっぱ火星のアンテナ経由するのかな
360デフォルトの名無しさん:2011/06/19(日) 11:46:37.88
100mbpsでも物理想は4本の撚り線使ってた気がするけど。
361デフォルトの名無しさん:2011/06/19(日) 13:03:19.73
>>359
直通って...、流石に宇宙と通信しようとしてる奴は違うな (w

マジレスしとくと、低利得アンテナ (8bps)、中利得アンテナ (32bps)、
高利得アンテナ (4Kbps) の3系統。
362デフォルトの名無しさん:2011/06/19(日) 13:27:30.68
>>356
>>357
>>358
>>359
>>360
おお、皆さんありがとうございます。
僕が思ったのは、惑星間航行が普通に行われるようになっても
これだけ普及したIPという仕組みは無くならないと思うんですよね。
でも、TCPだとちょっと?機能が足らないと思ったんですよ。

パケットの送信に何十分もかかる状態なら、
いっそパケットを多重化してしまえば再送が必要ないんじゃないかなと。

別チャネル?にしたらいいんじゃないかなと思ったのは、
通信路が複数有ったら一本磁気嵐とかでデータが飛んでも
リカバリできるんじゃないかなと。

どちらかというと絶対確実に届くUDPの方が近い気がしてきた。

そういう仕組みって誰も考えたことないのかなぁ。

ガンダムとかだと、
AMBACとか細かい設定まで有るのに。
まぁ、あの世界だとニュータイプがいるからいいのかな。
363デフォルトの名無しさん:2011/06/19(日) 13:54:57.28
>>362
先ずはIPとかTCPとかよりもっと低位層のが問題では?
364デフォルトの名無しさん:2011/06/19(日) 13:55:27.15
>>362
> どちらかというと絶対確実に届くUDP

色々考えるのはいいことだと思うが、まず基礎からちゃんと勉強して
おくことをお勧めする。

でないと、まともな人から相手されなくなるよ。
365デフォルトの名無しさん:2011/06/19(日) 14:17:31.32
わかりました。
勉強してきます!
366デフォルトの名無しさん:2011/06/19(日) 14:25:48.06
よーし、じゃあ俺も!
367デフォルトの名無しさん:2011/06/19(日) 14:51:58.33
>>364
お前は日本語を勉強しろよ・・・ それはたとえの部分だろ
368デフォルトの名無しさん:2011/06/19(日) 15:41:46.66
>>362
そんなことはずっと昔にわかっている・・・というか、
昔は遅延が大きかったので、遅延が発生するのが前提で設計されていた。
それを遅延が無いのを前提で使い倒すようになったのは最近の話。

数時間~数日単位の遅延が発生する場合でも、Windowsサイズを大きくして、
タイムアウトを長くとれば、それなりにちゃんと動くはず。
もちろん遅延が大きいので、アプリケーションレイヤのプロトコルは
それなりに設計していないと使い物にはならない。

エラー訂正などについては、物理層の仕事。
369デフォルトの名無しさん:2011/06/19(日) 15:45:51.10
受信済みのデータを削除する方法を教えてください。
今までは空読みしてたんですが、どう考えてもこれって無駄ですよね。
なにかいい方法ありますか?
370デフォルトの名無しさん:2011/06/19(日) 16:09:16.84
>>367
例えだからと言って、堂々と間違い書いてたら相手にされなくなるぞ。
371デフォルトの名無しさん:2011/06/19(日) 16:21:02.62
>>368
そういうことを言いたいんじゃないんですよ。

例えば火星で人が病気にかかったとして、
地球に対して、治療方法を聞くとするでしょ。

もし、パケットが不着だと、再送するだけでも40分かかる。
それは、windowサイズやタイムアウトを長くとっても
回避できますか?

エラー訂正が物理層の仕事なら、
なんでTCPに再送制御の仕組みが備わってるんですか?

パケット自体を冗長化するようなアプローチが有っても良いんじゃないんですか?
ってことです。
372デフォルトの名無しさん:2011/06/19(日) 16:26:50.99
deep space networkでぐぐれ
373デフォルトの名無しさん:2011/06/19(日) 16:27:34.94
絶対確実に届くUDPがあったらいいなぁっていう鼻血だろ

そんなことも言ってはいけないって言葉狩りじゃまいか
374デフォルトの名無しさん:2011/06/19(日) 16:32:38.11
>>371
>エラー訂正が物理層の仕事なら、
>なんでTCPに再送制御の仕組みが備わってるんですか?

物理層で訂正できないエラーが発生するから。

>パケット自体を冗長化するようなアプローチが有っても良いんじゃないんですか?

パケットと言うのがどこを指しているのかよくわからんけど、TCP レイヤーの
パケットを言っているなら、そう言うアプローチは無意味だから。
375デフォルトの名無しさん:2011/06/19(日) 16:34:33.18
>>373
>そんなことも言ってはいけないって言葉狩りじゃまいか

誰も言ってはいけないなんて書いてないと思うが。
ただ相手にされなくなるだけで。
376デフォルトの名無しさん:2011/06/19(日) 17:03:33.12
>>374
>パケットと言うのがどこを指しているのかよくわからんけど、TCP レイヤーの
>パケットを言っているなら、そう言うアプローチは無意味だから。
なぜ無意味なの?
誰か実験したの?
377デフォルトの名無しさん:2011/06/19(日) 17:06:24.90
物理的にパケットが届くのに20分かかるなら
なにをどうしても「不着」が発生したら40分のロスは生じる

まずは物理的なレイヤーで、光速を超える通信ができる技術を考えてくれ
それが無理なら、結局は最悪遅延すること前提で設計するしかない
378デフォルトの名無しさん:2011/06/19(日) 17:11:32.04
>>375
SCTPの説明をするときよくそういう言い方する
379デフォルトの名無しさん:2011/06/19(日) 17:25:32.70
>>376
物理層と同じ機能を TCP レイヤーで持ってもしょうがないから。

それは間違っているとか、すげーいい方法考えたとか言うなら、
それこそ実験や理論で証明するなりすればいいと思う。
380デフォルトの名無しさん:2011/06/19(日) 19:39:09.66
>>371
>例えば火星で人が病気にかかったとして、
>地球に対して、治療方法を聞くとするでしょ。

なんでわざわざ地球に聞くの?
火星にいる人に聞けば問題ないのに。
え?火星で解決できなかったからだって?
事前に想定した事態に対する荷物しか用意していないし、
事前に用意した荷物なら使い方を知っているし、
その範囲でどうにかできないなら、同意ようもない。
381デフォルトの名無しさん:2011/06/19(日) 19:43:26.21
>>371
>もし、パケットが不着だと、再送するだけでも40分かかる。
>それは、windowサイズやタイムアウトを長くとっても
解決できるよ。ちゃんと40分後に再送され、運が良ければ60分後に届く。

>なんでTCPに再送制御の仕組みが備わってるんですか?
物理層以外でデータをロストする可能性があるから。
382デフォルトの名無しさん:2011/06/19(日) 19:47:04.06
>>371
>パケット自体を冗長化するようなアプローチが有っても良いんじゃないんですか?
あるよ。アプリケーションレベルで好きに実装すればよい。
IP電話なんかは、一部のパケットが無くなっても問題ないようになってるし。
383デフォルトの名無しさん:2011/06/19(日) 19:47:35.41
>>380
バカが考えた例え話は突っ込みどころ満載だから、バカは例え話しない方が良いぞ。
事前に用意した荷物をどの組み合わせと順序で使えばいいか。
384デフォルトの名無しさん:2011/06/19(日) 20:03:29.53
>>362
> パケットの送信に何十分もかかる状態なら、
> いっそパケットを多重化してしまえば再送が必要ないんじゃないかなと。

別チャンネルにする必要はなくって、物理層が冗長符合を大量に持って
謬り訂正すればいいだけじゃね?

誰かも書いてたけど再送要求でてもそれが届くのは数十分後

> どちらかというと絶対確実に届くUDPの方が近い気がしてきた。

絶対確実に届かないのがUDP
つか、エラーパケットは積極的に捨ててる実装しかみたことがない
385デフォルトの名無しさん:2011/06/19(日) 20:07:43.20
>>380
ねえ、ネタでやってるの?
>>371 の例えもどうかと思うが、そんなとこに突っ込みいれる君はそれ以上だよ。

>>382
> IP電話なんかは、一部のパケットが無くなっても問題ないようになってるし。

全然違う話を持ってくるなよ...。
386デフォルトの名無しさん:2011/06/19(日) 20:08:36.36
>>361
ありがとう。謎が解けた。なんとかなりそう。
387デフォルトの名無しさん:2011/06/19(日) 21:49:09.41
パケットのじょうちょうか
388デフォルトの名無しさん:2011/06/19(日) 21:57:18.89
すまん。iPhoneなもんで間違って送信ボタンに当たった。
パケットの並列送信による冗長性確保に付いて言いたい事があるが、また後でな。
389デフォルトの名無しさん:2011/06/19(日) 22:56:18.77
>>373
> そんなことも言ってはいけないって言葉狩りじゃまいか

そんな考えは無駄だってことを、
Token Ringや100VG AnyLANやATMが教えてくれたんですよ。
390デフォルトの名無しさん:2011/06/19(日) 23:11:46.30
冗長化よりも行間(パケット間)を読み取る能力が大事と言うことですね
391デフォルトの名無しさん:2011/06/20(月) 15:12:18.40
気になったけど、ウィンドウサイズ大きいほうがエラーで廃棄される確率高いと思うけどな。

再送に40分かかる距離として、どれだけ冗長に送っておいたほうがスループットいいのかは検証が必要だ。
392デフォルトの名無しさん:2011/06/20(月) 15:16:24.89
「思う」って言われても…
それは通信路の性質によるし。

帯域は太い、しかしラウンドトリップタイムが大きい通信路で、
転送効率上げるにはウィンドウを大きくするのは定石で、
今のTCPにもヤコビソン先生が衛星回線用に書いたロジックが入ってる。
393デフォルトの名無しさん:2011/06/20(月) 16:57:30.41
なんのためにLGAMGAHGA三段階にしてあると思ってるんだこいつ
394デフォルトの名無しさん:2011/06/20(月) 17:51:12.84
じゃあそれぞれのパケットドロップ率を描いてくれよw
395デフォルトの名無しさん:2011/06/20(月) 18:01:27.02
>>394
T・C・P! T・C・P!
396デフォルトの名無しさん:2011/06/20(月) 21:47:17.93
>>395
mopera経由の通信モニターしてると結構TCPセグメントが焼失して再送が発生してるわけだが
397デフォルトの名無しさん:2011/06/20(月) 23:25:34.74
>>396
だったらそのTCPくっつけて見られるようにしてくれよ
398デフォルトの名無しさん:2011/06/21(火) 00:32:50.51
くだらん話が続いてるな。
399デフォルトの名無しさん:2011/06/21(火) 05:58:59.22
ドコモのデータ通信程度でも5パケットに一回程度はエラーで再送されてたりするのかな?
家政往復なんて1万個パケット送って1こと独程度だったりしてw
400デフォルトの名無しさん:2011/06/21(火) 11:29:59.74
それは通信路、通信相手による。
パケットのロスはほとんど輻輳なんだから。
はやぶさなんか専用線なんだから輻輳ロストなんてほぼ0。
通信路の性質上、バーストロストは頻度高いだろうけど。

ただこういうのは、土方プログラマーが考えることじゃない。
最低でもStevens本くらい読みこなしてないと考える意味がない。
401デフォルトの名無しさん:2011/06/21(火) 11:32:49.07
専用線っていえば、そうなんだろうけど
402デフォルトの名無しさん:2011/06/22(水) 09:47:59.90
>>400
専用線なんだっけ? あれって他の人は使ってないの?
403デフォルトの名無しさん:2011/06/22(水) 11:33:42.58
データ受ける側は世界中にいるけどな
404デフォルトの名無しさん:2011/06/22(水) 21:32:14.30
>>388
>すまん。iPhoneなもんで間違って送信ボタンに当たった。
>パケットの並列送信による冗長性確保に付いて言いたい事があるが、また後でな。
まだ~?
405デフォルトの名無しさん:2011/06/23(木) 02:48:07.33
マカってホント情報弱者だな。
406デフォルトの名無しさん:2011/06/23(木) 08:43:12.98
マカってホント肉体疲労・虚弱体質な人向けネットワークプログラムに向いてるよね。
407デフォルトの名無しさん:2011/06/23(木) 11:05:34.92
>>402
何を言っているのだ、お前は。
408デフォルトの名無しさん:2011/06/23(木) 12:35:19.83
>>407
はやぶさとの通信の話だよ
409デフォルトの名無しさん:2011/06/23(木) 13:34:59.86
はやぶさの近くに同じ周波数帯を使う物体が飛んでいるのか?
410デフォルトの名無しさん:2011/06/23(木) 13:38:23.97
はやぶさに偽指令って送ることは可能だった?
411デフォルトの名無しさん:2011/06/23(木) 14:16:46.03
>>410
可能だった。
412デフォルトの名無しさん:2011/06/23(木) 14:51:23.10
楕円暗号とかの署名付けて送らないと無視するぐらいの機能はついているべきだな。
413デフォルトの名無しさん:2011/06/23(木) 16:26:03.54
「楕円暗号復号回路が壊れました!署名を検証できません!」
「こんなこともあろうかと、署名無してもコマンドを受けつけるようにしておいたんだ!」
414デフォルトの名無しさん:2011/06/23(木) 23:09:50.11
>>406 せつこ それ ネットワークビジネスや
415デフォルトの名無しさん:2011/06/24(金) 00:34:17.50
あまりにも通信状態が悪くて署名で付けた楕円暗号が毎回エラーで、タイミング会わずに軌道に乗れずに宇宙の彼方に飛んでいったってのはあるだろうなw
416デフォルトの名無しさん:2011/07/02(土) 15:19:04.55
UDP通信でNat越えしたいんですが、
パケット、セッションについて教えてください。

ネットでサンプルプログラムを見ると、クライアント側では
while( true ) {

送信処理(サーバへ)
受信処理(送信処理で使ったsockaddrを使用)
}

こんな感じになっているんですが、このときの送信処理というのは何回も
必要なのでしょうか?

また、発信元ポートというのは、宛先が同じ間でも変わることがあるのでしょうか?

ちなみにNat越えはNat内のクライアントと外部のサーバ間を想定しています。
417デフォルトの名無しさん:2011/07/02(土) 20:39:00.59
>>416
> こんな感じになっているんですが、このときの送信処理というのは何回も
> 必要なのでしょうか?
NATやってるルーター次第

> また、発信元ポートというのは、宛先が同じ間でも変わることがあるのでしょうか?
バークレイソケットインターフェースだとよほどの変態実装でない限り
socket()で作られた発信元ポートは変化しないと思われる
418天使 ◆uL5esZLBSE :2011/07/03(日) 12:40:19.28
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど

もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
きも
419デフォルトの名無しさん:2011/07/03(日) 21:45:44.14
(^_^;)
420デフォルトの名無しさん:2011/07/03(日) 21:58:31.57
デリミタ=区切り文字だから、改行で意味が区切られる言語も対象ってことは・・・
アセンブラか 流石にそこまでローレベル言語は使いたくないな
421デフォルトの名無しさん:2011/07/03(日) 23:44:05.45
すれ違いのマルチは死ねばいいが
pythonの「:」も存在価値が微妙
422416:2011/07/04(月) 00:19:35.96
>>417
ありがとうございます。
とりあえず、送信と受信は別スレッドにして良さそうですよね?
423デフォルトの名無しさん:2011/07/04(月) 09:18:14.46
Rubyの行継続ルールは微妙
424デフォルトの名無しさん:2011/07/04(月) 11:08:54.00
rubyはうんこだからしかたない。
というかネットワークには関係ない言語だからスレ違いだろう。
425416:2011/07/05(火) 08:29:00.96
416の内容でクライアントがVPNを利用して、
DMZ内にあるサーバと通信する場合だと、
416のやり方でも大丈夫でしょうか?

ちなみにVPNはCiscoのIPsecを使っています。
NAT トラサーバルとか、良くわかりません。。
426デフォルトの名無しさん:2011/07/05(火) 09:38:52.80
>>425
わからないなら学べ。勉強しろ。
427デフォルトの名無しさん:2011/07/05(火) 17:22:13.84
vpn糞遅いからな。sslしてるのと変わらない。
428デフォルトの名無しさん:2011/07/05(火) 19:26:37.46
>>427
根拠は?
IPsec なら専用ハード積んでる GBE だと wire rate でるんだが?

429デフォルトの名無しさん:2011/07/05(火) 19:32:50.94
大丈夫だ、問題ない。
430デフォルトの名無しさん:2011/07/06(水) 09:56:55.51
>>428
専用ハードをツンデレ場だろ。 うちのPCはツンデレ場が無いよ
431416:2011/07/06(水) 20:09:59.35
VPNですが、サーバまでは通信されましたが、
戻りの通信が出来ませんでした。

クライアント側は3G回線+VPNです。
これって、VPNのASAとかの問題でしょうか?
432デフォルトの名無しさん:2011/07/06(水) 20:59:42.32
>>431
どこでマミられたかわからないとデバッグできないぞ
ルータでドロップ全部ログる設定にしてやりなおしてみたら?
433デフォルトの名無しさん:2011/07/06(水) 21:23:18.34
一番いい装備で頼む。
434416:2011/07/06(水) 22:57:57.99
>>432
確かにデバッグが必要ですよね。。
本番の環境しかないため、自分の権限では、ここから先は出来ません><
テスト用の環境作るにも機材が必要になるので、厳しそうです。

とりあえず、当初の目的だった、外部サーバとNAT内のクライアントで通信が
出来ればよしとします。。
435デフォルトの名無しさん:2011/07/07(木) 00:18:48.32
>>434
よかったな。
もしもテスト環境をポンと渡されたらと思うとぞっとするわ
436デフォルトの名無しさん:2011/07/08(金) 04:57:51.84
>>435
あぁ本当に。
「治るまで作業してていいからね♪」ってサーバー室に閉じ込められた事ならある。
よくよく調べたら、ネットワーク構成図には書かれていないファイアウォール・・・。

使っていたクライアントOSが、何故か毎回同じクライアントポート番号で
接続しに行く不思議仕様だったため、ファイアウォールにたたき落とされていた。
437デフォルトの名無しさん:2011/07/08(金) 07:28:38.32
セキュリティ嬢どこにファイヤウォールとか入れてるかは明示しないのが普通。
どこで図面漏れるか分からないし。口頭でファイヤウォール入ってないのか確認しなかったのが敗因だな。

むしろなりすましを考慮されてない実装なのが(ry
438デフォルトの名無しさん:2011/07/09(土) 10:10:33.94
エンジニアリング的におかしいだろ
439デフォルトの名無しさん:2011/07/09(土) 15:09:03.29
UDPで、一度に大きなサイズのデータ(数十万バイト)は送れないのですが
具体的に、最大どれくらいのサイズまでならば可能なのでしょうか?
440デフォルトの名無しさん:2011/07/09(土) 15:10:38.66
500~1500バイトくらい
441デフォルトの名無しさん:2011/07/09(土) 15:37:20.88
>>439です
>>440thxです
現在winsock で
320×240×23=230400バイトのフレームバッファーを、
1492バイトで分割して、UDPで下記のサイズに分割送信しています
1492×154回
632×1回
受信側で、分割して送られてきたデータを、230400バイトに、再構築するつもりなのですが、
考え方は間違っていないでしょうか?
442デフォルトの名無しさん:2011/07/09(土) 15:39:43.70
失礼
×320×240×23=230400バイト
○320×240×3=230400バイト
443デフォルトの名無しさん:2011/07/09(土) 15:45:13.94
>>441
UDPは送った順に届くとは限らないということは理解してるよね?
444デフォルトの名無しさん:2011/07/09(土) 15:48:28.15
送った順に到着しない
送ったものが届かない

分割して送るなら ヘッダに通番つけといて
上記2点を考慮することになるが…

再送処理とかしだすと、TCPじゃだめなの?って話になる
445デフォルトの名無しさん:2011/07/09(土) 16:07:55.46
>>441です、お世話になります

>>443
はい、それは理解できています
>>444
TCP/IPの送受信実験はすでに成功しており、UDPによる、送受信の実験がうまくできないので
数週間、チャレンジしていますが、手がかりがなくて模索しています。
>>分割して送るなら ヘッダに通番つけといて
ここら辺のことをお聞きしたいのですが、単純に考えますと
例えばデータ構造を
stract UDP{
unsigned int serial;
char data[1492];
};
このようなことが、考えられると思います
しかし、これでは、UDPなので、所詮投げっぱなしのデータなわけですよね
そこで、通し番号はTCP/IPの3way handshake で送り
その後、UDPでデータを送るというような、アルゴリズムになるのでしょうか?
それから、2230400のデータですが
1492×154回
632×1回
こんな送り方より
1440×160回の方が、単純で再構築もしやすいですね^^;
446デフォルトの名無しさん:2011/07/09(土) 16:12:27.19
ごめんなさい、また間違えました
×それから、2230400のデータですが
○それから、230400のデータですが
スマソ
447デフォルトの名無しさん:2011/07/09(土) 16:29:52.14
UDPのデータにそういうふうに番号を付けて、
「何番までのデータは受け取った」とか「何番のデータはまだ来てない」とかそういう返事を受信側から送信側に送り返す
それを見ながら、未着の(たぶん失われたと思われる)データをもう一度送る
返事も失われることがあるので、何秒か返事がなかったら同じものをもう一度送る
「全部受け取った」という返事が来れば終了
448デフォルトの名無しさん:2011/07/09(土) 16:43:47.79
>>447
ありがとう
実装してみます
449デフォルトの名無しさん:2011/07/09(土) 17:02:16.53
TCPじゃだめなの?
450デフォルトの名無しさん:2011/07/09(土) 17:17:30.04
>>449
>>445です
マルチキャストの実験もしてみたいので、TCPではムリポなのでUDPに拘っています^^;
451デフォルトの名無しさん:2011/07/09(土) 17:55:46.30
マルチキャストで複数(多数)の受信者から違うパケットの再送要求が来たらどうするつもりなんだろう
452デフォルトの名無しさん:2011/07/09(土) 17:57:48.84
仮にどうにかできたとして
果たしてそれはマルチキャストと言えるのだろうか
453デフォルトの名無しさん:2011/07/09(土) 18:24:30.11
>>451>>452
>>448です
そうですね、やはりapache の実装のように、子プロセスのインスタンスを生成し
管理するような、システムを構築するべきでしょうね
454デフォルトの名無しさん:2011/07/10(日) 17:16:36.87
>>452
パソコンサンデー的なものになると思う。
マルチキャストでネトゲのパッチ配布実験とかしてなかったっけ。もちろん実験だけで実用にはならんけど。
455デフォルトの名無しさん:2011/07/10(日) 18:54:57.63
まずTCPのセッションを複数張って実装してみて、
それで駄目ならUDPとかマルチキャストとか考えるべき。
大抵TCPで何とかなる。動画サイトを見ろ。
456デフォルトの名無しさん:2011/07/10(日) 18:56:06.09
それから、>>439
確実に知りたければ"Path MTU Discovery"するしかない。
まあ途中に入っているルータが正直に応えるかどうか不明だが。
IPv6の場合はルータの対応が必須だけども。
457デフォルトの名無しさん:2011/07/10(日) 22:06:00.41
>>456
IPv6でも続々と変なルータやFireWallが増えてきてるので、
PMTUDが通る前提は崩されつつある。嘆かわしいことだ。
458デフォルトの名無しさん:2011/07/10(日) 22:23:44.91
>>454
マルチキャストとブロードキャストは違うんじゃね?
パソコンサンデーはブロードキャストだよね
459デフォルトの名無しさん:2011/07/10(日) 22:37:12.22
>>458
ipベースのマルチキャストではないけど。。。
言葉の意味を考えると1対Nなので
TV放送は全てマルチキャストじゃないの?
460デフォルトの名無しさん:2011/07/10(日) 22:55:19.78
無差別なのでTV放送(ブロードキャスト)はブロードキャスト(放送)です。
461デフォルトの名無しさん:2011/07/10(日) 22:58:29.15
>>459
マルチキャストは1:N、ブロードキャストは1:∞ みたいな感じ
と覚えとくといいと思う
462デフォルトの名無しさん:2011/07/10(日) 23:14:54.34
>>460
ごめんそうだね。。。
馬鹿だ俺
463デフォルトの名無しさん:2011/07/10(日) 23:34:09.23
受信料とられるん?
464デフォルトの名無しさん:2011/07/13(水) 20:24:07.81
WinSockでrecvを実行した場合に

-----------------------
7330 : recv(7330) = 0 ms
13242 : recv(35562) = 0 ms
22320 : recv(22320) = 200 ms
-----------------------
(戻り値:recv(受信長) = 所要時間)

となった環境でJavaのInputStream.read()をしてみると全受信まで50msほどでした。
そこでrecv毎にrecv(all)して受信のバッファリングなどしてみたのですが、結果は変わらずでした。
APIを直接叩くよりInputStream.read()のほうが速いのはなぜなんでしょうか?
465デフォルトの名無しさん:2011/07/13(水) 20:35:50.97
はいそうです
466デフォルトの名無しさん:2011/07/13(水) 20:54:59.71
>>464
ソケットの設定による。
デフォルトでrecvの中でちょっと待つようになってる。
待たないように設定してみるといい。
467デフォルトの名無しさん:2011/07/14(木) 03:06:37.65
>>466
ack周りかなと思い、それっぽいオプションをsetsockoptで色々設定してみたのですが変わらずでした...
もうちょいヒントを頂けると助かります
468デフォルトの名無しさん:2011/07/14(木) 10:03:30.52
ノンブロックにすればよくね?
469デフォルトの名無しさん:2011/07/14(木) 11:25:55.01
>>466の言っている遅延タイマがまさに200ms。
Winsockのrecvの馬鹿チョン仕様。
470464:2011/07/14(木) 22:09:23.33
>>468
やってみましたがダメでしたorz

>>469
Nagleアルゴリズムの事であれば無効の試行済みです。
471デフォルトの名無しさん:2011/07/15(金) 22:58:02.53
信頼性の高いマルチキャストプロトコルで
実装が簡単なのって何がありますか?
472デフォルトの名無しさん:2011/07/17(日) 09:10:13.62
>>464
いっそ、Javaの標準ライブラリが何をやってるのか、ソースコードを調べてみたら?
JDK に付属する src.zip にJava部分が、「Java SE 6 JDK Source Code」に C/C++ 部分があると思う。
473464:2011/07/18(月) 00:54:34.43
>>472
そんな物があったのとは!
やってみます。ありがとうございました
474デフォルトの名無しさん:2011/07/20(水) 11:49:04.57
time.nist.govと同期がとれないと起動できないソフトを使用期限解除して
使うようにするにはどうしたらいいですか?
http://www.dotup.org/uploda/www.dotup.org1808412.zip.html
475デフォルトの名無しさん:2011/07/20(水) 12:01:15.76
>>474
time.nist.govを買い取って、好きな時刻に設定すればいい。
476デフォルトの名無しさん:2011/07/20(水) 12:50:02.17
NTPサーバを用意してhostファイルでtime.nist.govにそのIPアドレスを指定する
477デフォルトの名無しさん:2011/07/20(水) 14:48:41.35
>>474
逆アセしてそのチェックして分岐させているところを書き換えるといいよ
478デフォルトの名無しさん:2011/07/20(水) 14:50:14.36
winsockのsend関数で
char buf[100]のものを送るとしたら実際に送られるデータは何バイトになるのですか?
479デフォルトの名無しさん:2011/07/20(水) 14:56:00.83
>>478
それにTCPヘッダとIPヘッダを足した大きさ
それぞれのサイズは忘れた
480デフォルトの名無しさん:2011/07/20(水) 15:13:20.37
なるほどありがとうございます
481デフォルトの名無しさん:2011/07/20(水) 17:24:56.66
どの層を気にしているかによるが、
データリンク層のヘッダにも注意。
482 忍法帖【Lv=12,xxxPT】 :2011/07/20(水) 17:42:59.21
>>478
64 + strlen(data)
483デフォルトの名無しさん:2011/07/25(月) 08:49:02.56
>>478
環境や状況による。
Ethernetなら+TCPヘッダ+IPヘッダ+MACフレームになる。
PPPoE経由でPPTPVPN使ってたりすると、さらに幾つもヘッダがつく事になる。
他のTCPやUDP通信とまとめて、一つのIPパケットにのる場合もある。
484デフォルトの名無しさん:2011/07/25(月) 10:57:00.71
>>483
>他のTCPやUDP通信とまとめて、一つのIPパケットにのる場合もある。

こんなことあるのか?
485デフォルトの名無しさん:2011/07/25(月) 11:15:33.24
ありえねーって突っ込もうとしたけど、>>483特製トンネルならばありうるから止めた。
486デフォルトの名無しさん:2011/07/25(月) 11:39:48.33
「他のsend関数でカーネルに渡したデータと一緒に」
ならTCPでは有りうる。
487デフォルトの名無しさん:2011/07/25(月) 11:44:54.64
>>486
UDPも入ってるから、その可能性は却下。
488デフォルトの名無しさん:2011/07/25(月) 11:53:01.80
誰がどう言ったかとか興味ない。
>>478の質問に即してレスした。
489デフォルトの名無しさん:2011/07/25(月) 16:10:21.68
>>487
TCPでは って言ってんだろ・・・
490デフォルトの名無しさん:2011/07/25(月) 16:12:23.06
> 他のTCPやUDP通信とまとめて、一つのIPパケットにのる場合もある。
491デフォルトの名無しさん:2011/08/05(金) 00:00:54.77
既にハンドシェイクされて確立されたTCPコネクションがあって
そこにパケットを入れ替えるのではなく追加するというのは可能なのですか?
任意のパケットをNICに入れるのはこの際問題にしなくていいです(それは出来る)
TCPプロトコルがいまいちよくわからない
パケットをそのまま入れればいいって問題じゃないですよね?
ACKとかシーケンス番号とかも揃えないといけない?
となるとACKの区切りを検出して、自分のデータのACKのやりとりを丸々入れないけないのですかね?
492デフォルトの名無しさん:2011/08/05(金) 00:16:12.93
TCPハイジャックだっけ
493デフォルトの名無しさん:2011/08/05(金) 00:25:12.33
>>491
そうです 以上
494デフォルトの名無しさん:2011/08/05(金) 00:26:16.72
めんどくさそうだから別の方法でやろう
495デフォルトの名無しさん:2011/08/05(金) 00:35:28.95
難しそうなので僕には出来ませんだろ
496デフォルトの名無しさん:2011/08/05(金) 00:53:09.47
難しいことをやり遂げるのが主目的じゃない
簡単な方法があるならそれを使うまで
パケットを直接入れる方が簡単だと言うなら別だけど
497デフォルトの名無しさん:2011/08/05(金) 09:03:59.82
せやな
498デフォルトの名無しさん:2011/08/05(金) 17:17:11.92
>>491
簡単にはできない。
TCPストリームのデータを中間者が増やした時点で、それ以降のACK/SEQがずっとズレっぱなしになるので、
任意のデータを入れたが最後、その後の通信を全部加工して送らなければならない。

ftpに対応したNATルータがまさにそれをやっている。
499デフォルトの名無しさん:2011/08/05(金) 17:25:53.75
へ?
500デフォルトの名無しさん:2011/08/05(金) 18:05:39.59
>>496
>>494に難しいだけで簡単だって。
スループット上げるのは容易ではないけども。
501デフォルトの名無しさん:2011/08/05(金) 18:33:11.54
全部TCP/UDPパケットをいったん別のソケットにリダイレクトする方が簡単だろ?
一旦正規のソケットに仲介させることで中身をいじるのは簡単になる

1.接続要求がきたら自分のListenポートに修正
2.本来のポートに普通にコネクションを張る
3.自分のソケットから本来のポートに対するパケットのソースアドレスを元に戻す
4.以後はそのパターンでソースとデスティネーションを書き換え続ける

これで完全に仲介したソケットが完成して、本来の接続プログラムが
リモホを参照してもちゃんと元のリモホとして認識されるはず
これでいけると思うんだけど間違ってるかな?
この方法で問題になるのが自分でconnectやacceptする部分であらかじめポート番号を決定できた方が都合がいいんだけど
Winsockってそういうことは可能なんだっけ?
502デフォルトの名無しさん:2011/08/05(金) 18:57:47.69
一生懸命説明してるとこ悪いけど、

> 既にハンドシェイクされて確立されたTCPコネクションがあって

という前提なので。
503デフォルトの名無しさん:2011/08/05(金) 19:03:04.84
>>502
パケットを挿入するという前提があるので、その条件を入れただけですよ
504デフォルトの名無しさん:2011/08/05(金) 19:16:52.10
その前提と条件がどう関係するんだよ。

よくわかってないなら、変な条件つけなきゃいいのに...。
505デフォルトの名無しさん:2011/08/05(金) 19:24:52.51
>>504
こういうスレではあらかじめかなり条件を絞って質問しないと
毎回毎回、知識ひけらかし君が、その部分をまずやれとか意味不明なことを言い出して
それはとっくに出来てるんでとか言うと以後レスしなくなるという
そういう経験ばかりしてきてるんで
無駄なやり取りを減らすために条件を絞るくせがついてるですよ
506デフォルトの名無しさん:2011/08/05(金) 20:03:49.59
>>501からの流れ
誰が誰やらわからんw
507デフォルトの名無しさん:2011/08/05(金) 21:49:57.24
妖しそうなことやりたいんじゃないの?
508デフォルトの名無しさん:2011/08/05(金) 21:50:38.63
>>505
>毎回毎回、知識ひけらかし君が、その部分をまずやれとか意味不明なことを言い出して
>それはとっくに出来てるんでとか言うと以後レスしなくなるという

自分のやったことと、前提条件がちゃんと説明できてないからだろ。
509デフォルトの名無しさん:2011/08/05(金) 22:33:40.45
>>507
妖しいことも出来ない奴がネットワークを語るなよ
そんなレベルの奴に用はねーし
逆にそのレベルに達してきて怪しいことをやったことが無い奴なんて居ない
510デフォルトの名無しさん:2011/08/05(金) 23:23:28.65
ホメラレモセズ
クニモサレズ
サウイフモノニ
ワタシハ
ナリタイ
511デフォルトの名無しさん:2011/08/17(水) 01:52:36.11
おれにはできない。
どういう状況でそんなことやる必要があるのか
知りたい。
512デフォルトの名無しさん:2011/08/17(水) 11:27:32.60
>>501
それは別のネットワークになるので駄目です。
513デフォルトの名無しさん:2011/08/18(木) 22:05:34.40
Socket.Send メソッド (Byte[], SocketFlags)
Socket.Send メソッド (IList<ArraySegment<Byte>>, SocketFlags)
のSocketFlagsの存在が何故あるのかが良く解らないんです。
SocketFlags.Noneを指定するのなら
Socket.Send メソッド (Byte[])
でイイのではないかなぁと思うのですが、サンプル求めてググッてみても
SocketFlags.Noneを指定するのが過半なので、どうしてかな~と疑問に思い質問です。
なんで?
514デフォルトの名無しさん:2011/08/19(金) 00:11:39.24
Windows上で特定のポートに帯域制限を掛けるプログラムを
C++で組みたいのですが、何から勉強していいかわかりません・・・
何かいい本かサイトを紹介してくれませんか。

スキルとしては、画像やテキスト処理のコマンドラインプログラムを
C++で書ける程度です。
515デフォルトの名無しさん:2011/08/19(金) 01:09:58.09
>>514
どういう方法でやろうとしているの?
特定のwindowsサーバにインストールして、そのサーバの下にいるwindowsPCに帯域制限をかけたいの?
それともwindowsPCにインストールして、インストールしたwindowsPCのみに帯域制限かけたいの?

賢い人達はLINUX使うと思う。

まあ、どういう方法をとるにしろ、
デバドラまで入り込まないと無理だぞ。

今日も眠れぬ青画面の世界までようこそ。

WELCOME!WELCOME!WELCOME!
516デフォルトの名無しさん:2011/08/19(金) 02:47:41.32
>>512
そうらしい、実際にやってみたがループバックは物理的なネットワークが違うものとして扱われるらしくリダイレクト出来ない。
パケットをいじるだけで同じPC内でプロキシをするのは無理らしい。
しかし、苦労したけど結局プロキシする方法を発見して出来たからもういいのだ。
517デフォルトの名無しさん:2011/08/19(金) 09:44:30.60
>>514
標準でQoSに対応しているので、有る程度はレジストリ設定だけで
制限できるんだけど、あくまで作るのが目的なの?

作るなら、フィルタドライバとして作るだけだけど。
518デフォルトの名無しさん:2011/08/19(金) 10:13:26.00
>>515
きもすぎwwwwwwwww
519デフォルトの名無しさん:2011/08/19(金) 19:18:23.78
>>515
>それともwindowsPCにインストールして、インストールしたwindowsPCのみに帯域制限かけたいの?
それです。

>>517
目的達成できるなら手段は問わないです。

具体的にはネットワークカメラを走らせていまして、
プロバイダの30GB/日のUL転送量制限に引っ掛からないように転送量を測って、
20GB超えたら速度制限、25GB超えたらそのポートを遮断
日付が変わったら累積リセット制限解除、ということをしたいのです。

制限を超えるのは極稀な日なので、四六時中制限掛けるのは避けたいですし
LAN同士の転送はカウント外にしたいので、ネットワークカメラのポートだけを監視したいわけです。
520デフォルトの名無しさん:2011/08/19(金) 19:44:57.73
格ゲーだとフレーム単位でキャラ操作するつわものいるけど
そういった人を満足させるネトゲって可能?
521デフォルトの名無しさん:2011/08/19(金) 19:50:42.91
ネット対戦できる格ゲーならあるけど、そういう話じゃなくて?
522デフォルトの名無しさん:2011/08/19(金) 20:24:59.54
フレーム単位で通信する必要ないから可能。
523デフォルトの名無しさん:2011/08/19(金) 21:06:34.70
>>519
それって速度制限というか、絶対量制限しないといけないんじゃないの?
1フレームの転送量を計って、制限量に達するまでに何フレーム送れるか計算したら?

webcam -> localhost:8000 -> internet
みたいな感じでlocalhostさんに一度データを送って、localhostさんがwebcamの
データを外に中継だけするようにしたらどう?
524デフォルトの名無しさん:2011/08/20(土) 01:28:49.55
>>520
不可能
小足見てから昇龍とか無理
525デフォルトの名無しさん:2011/08/20(土) 01:31:40.55
ざ 残像だとっ!
526デフォルトの名無しさん:2011/08/20(土) 03:24:37.45
>>520
地球の裏側まで光速で何秒かかるか計算してみるといい。
理論最速値でもそこまでの速度しか出ないということに驚愕しろ。
527デフォルトの名無しさん:2011/08/20(土) 08:14:59.99
>>519
TCP/UDPプロキシでも使ったほうが手っ取り早いんじゃね?
528デフォルトの名無しさん:2011/08/20(土) 08:15:55.13
>>520
可能。ただし1フレームがネットワークのディレイより長い必要がある。
529デフォルトの名無しさん:2011/08/20(土) 09:59:38.11
フレーム制御だとACKタイムアウトで再送とかされて大量にフレームが来るから
帯域制限を掛けるなら当然、同じフレームは不達として落としてやらないといけないから複雑
530デフォルトの名無しさん:2011/08/20(土) 10:04:44.02
一番簡単な方法はAPIフックだろうね
send recvをフックして遅延を掛けてやればいい
ただ、この方法だと100%のソフトを制御出来る保障がないけど
100%制御がしたいとなるとring3では無理
つまりカーネルモード(ドライバ)の領域に入らないと制御は出来ない
531デフォルトの名無しさん:2011/08/20(土) 10:13:07.93
一番、簡単確実なのは>>523だろ。最適解が出てるんだから、オナニーするの止めろよ。
532デフォルトの名無しさん:2011/08/21(日) 19:26:09.84
C#でsocket使おうと思い質問です。
参考にしたのは
ttp://dobon.net/vb/dotnet/internet/downloadusesocket.html
なのですが、
//受信する
byte [] resBytes = new byte[1024];
System.IO.MemoryStream mem = new System.IO.MemoryStream();
while (true){
int resSize =sock.Receive(resBytes, resBytes.Length,System.Net.Sockets.SocketFlags.None);
if (resSize == 0)
break;
mem.Write(resBytes, 0, resSize);
}
の部分がうまく動作しません。
while一週目で全文受信したのち、2周目でresSize 0がこないのです。
ずっとsock.Receiveのところで固まってしまいます。なにか足りないのでしょうか?
オツムの足りない私めにご教示お願いします。
533デフォルトの名無しさん:2011/08/21(日) 19:43:01.85
resSize 0 ってまず来ないと思うよ
534デフォルトの名無しさん:2011/08/21(日) 20:23:57.84
もう忘れたけど、相手がクローズしたら 0 になるんじゃ?
535デフォルトの名無しさん:2011/08/21(日) 22:30:09.31
>>533
Vista以降はcloseするとFINを送る前に0パケットを送信する

>>532
というわけでclose以外で0バイトの受信が来る事はない。
TCPはデータの到達は保障してくれるけど区切りまでは保障してくれない。
だからTCP通信で必須になるのがデータサイズを相手に通知する作業なの

HTTPプロトコルだと、まず\r\n\r\nでヘッダの終わりを通知して
ヘッダの中のContent-Lengthで後続するデータサイズを明記するという構造でデータサイズを渡してる。

同じようにデータのサイズをあらかじめ通知する方法を自分で考えたプロトコルにも組み込まないといけない。
そうすることで何バイト受信すればいいかがわかるでしょ。
536デフォルトの名無しさん:2011/08/21(日) 22:50:19.66
ナルホド確かに受信文の中に数のデータサイズ部分が居ます。納得しました!
537デフォルトの名無しさん:2011/08/22(月) 02:20:50.65
>>535
そうなんだ
でもそれってUNIX系でいうところの
readの戻り値がゼロ ってやつだよね?
538デフォルトの名無しさん:2011/08/23(火) 00:23:23.89
良く解らんがsetSoTimeout(タイムアウト時間);とかないん?
539デフォルトの名無しさん:2011/08/23(火) 00:47:50.24
もっと参考になるサイトがあるだろうに
540デフォルトの名無しさん:2011/08/25(木) 23:18:57.16
LANケーブルを物理的にハサミでちょん切ったりしたりすると延々受信待ちしてしまいますよね?
socketのReceiveTimeoutは同期の場合にしか使えないようなのですが
非同期の場合はタイムアウトや無応答をどう対処したらいいのでしょう?

if (0 < sock.Available | 0 < resSize)
と、ネットワークから受信した、読み取り可能なデータ量が0ならbreak?
ちがうよなぁ・・・。
541デフォルトの名無しさん:2011/08/26(金) 14:23:25.04
復帰
542デフォルトの名無しさん:2011/08/26(金) 19:26:12.89
UDPとTCPを併用する場合
TCPでの送受信がUDP側に影響を与えることってありますか?
543デフォルトの名無しさん:2011/08/26(金) 20:01:21.09
ないですね。
イーサネットの帯域食うくらいの通信をTCPでしてない限り。
100%ないと思っていいです。
544デフォルトの名無しさん:2011/08/26(金) 20:03:25.09
いやあるね
545デフォルトの名無しさん:2011/08/27(土) 02:26:14.91
(`ハ´) ないあるね。
546デフォルトの名無しさん:2011/08/27(土) 09:42:13.51
ありますん
547デフォルトの名無しさん:2011/08/27(土) 10:01:00.55
役に立たねーな
おまいら
548540:2011/08/27(土) 17:30:05.25
まだ困ってます・・・
client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 2000);
で受信タイムアウト設定したつもりで居たら駄目だった。

SocketOptionName 列挙体
ReceiveTimeout タイムアウトを受信します。
このオプションは、同期メソッドにだけ適用されます。BeginSend などの非同期メソッドに対しては機能しません。

AsyncCallback(ReceiveCallback)で非同期受信したい場合ではどうすればいいですか?
549デフォルトの名無しさん:2011/08/29(月) 20:27:18.19
LANが切れた時のタイムアウトは非同期とかどうとかの問題じゃない
何故なら、切断タイムアウトが検出されるのはデータを送信して応答メッセージが無い時だけだからだ
逆に言えば、タイムアウトを発生させたい周期で無意味なデータを送りつけて反応を見ればいい
これをPing送信を言う
550デフォルトの名無しさん:2011/08/29(月) 20:30:29.86
>>548
BeginReceiveを使えばいいだろと言って見るテスト
551デフォルトの名無しさん:2011/08/29(月) 21:36:39.72
>>549
pingとかいちいち送るのうざいじゃん
KIIPUARAIBUを設定してOSに勝手にやらせればよくね?
552デフォルトの名無しさん:2011/09/02(金) 01:33:24.13
HTTPヘッダのUser-Agentに日本語などの非アスキーを混ぜたい場合、単純にutf8の%エンコーディング
にすればよいだけ?
RFC読めば読むほどわからなくなってきた・・・
553デフォルトの名無しさん:2011/09/02(金) 03:35:51.57
yes
554デフォルトの名無しさん:2011/09/02(金) 09:17:50.28
訪問者解析とかしてる奴に攻撃仕掛けるのか?
555デフォルトの名無しさん:2011/09/02(金) 12:24:21.85
>>553
うそつけ
>>552
Qエンコーディング(MIMEヘッダ拡張)しろ
556デフォルトの名無しさん:2011/09/02(金) 16:09:57.29
家庭用PCでWAN側から100ノードくらいから毎秒1~2回くらいで50バイトくらいのTCP接続受けるのって
マシンとルーターの同時接続数上限的に無理かな?
557デフォルトの名無しさん:2011/09/02(金) 16:15:04.36
MMOくらいなら一台で運用してたぞ
558デフォルトの名無しさん:2011/09/02(金) 17:16:33.12
>>557
同時接続どれぐらい?
559デフォルトの名無しさん:2011/09/02(金) 17:57:11.76
>>556
今時、古いノートPCでも、
ネットワークスタックだけに限れば余裕かと。
サーバの処理については内容によるだろうし、
ルータと言っても古いADSLモデム兼用もあるし機種次第だろうね。
560デフォルトの名無しさん:2011/09/02(金) 18:37:58.60
某○ネージュIIのサーバが拡散されたとき、一台でもそこそこできるんだなと感心してしまった
561全然動かないよーー:2011/09/19(月) 02:52:55.49
超悩んでます。やばいです。教えてください。

Linux上でネットワークプログラミングしてます。
IPv4でUDPで受信するプログラムです。
socket()、bind()、setsockopt()は全て成功し正常終了しているのに、
recv()だけがエラーとなり受信できません。
ソケットは確実に開けており、netstatでも確認済みです。
ICMP destination unreachableを発信しています。
何でですか。
562全然動かないよーー:2011/09/19(月) 02:54:57.61
あと、recvmsg()でMSG_ERRQUEUEを使うとエラー情報が取れると
マニュアルにあるので、やろうとしましたが、全然できません。

それに、疑問点が多々あります。
○IP_RECVERRの指定はsetsockopt()でするのでいいですか。
○msghdrにエラーがセットされるとありますが、
 エラーはsock_extended_errで提供されるともあります。
 msghdrのメンバにsock_extended_errなんてありません。
 msghdrに具体的にどのようにエラーがセットされるんでしょうか。
○recvmsg()でエラー情報を吸い上げるサンプルコードの載っている
 サイトをご存知の方は教えてください。

よろしくお願いします。
563デフォルトの名無しさん:2011/09/19(月) 03:47:33.33
select
564デフォルトの名無しさん:2011/09/19(月) 03:50:48.14
>>562
どうして肝心のrecvのエラーを書かないのか
565全然動かないよーー:2011/09/19(月) 05:00:32.36
>>564
recv()のエラーは戻り値-1です。
566デフォルトの名無しさん:2011/09/19(月) 05:02:34.96
>>565
エラー発生時のerrnoの値は?
567デフォルトの名無しさん:2011/09/19(月) 05:30:51.33
これでEAGAINだったら爆笑だが、彼は一歩成長するだろう。
568デフォルトの名無しさん:2011/09/19(月) 05:48:05.57
尻から目が出た!
569デフォルトの名無しさん:2011/09/19(月) 13:54:55.59
ッモルピグ!作っているのですが、まとまったバイナリは送ったときに受け取ったバイナリはまとまっているんですか?
send関数recv関数
2つ送って1つめより大きなバッファでrecvしたら2つめもついてくることあるんですか?
570デフォルトの名無しさん:2011/09/19(月) 16:07:31.16
>>569
ある
571デフォルトの名無しさん:2011/09/19(月) 17:19:28.12
>>570
えっ><
自分で切り分けなきゃだめってことですか><

鯖からsendで16byteと12byteのデータが送られたときに、そのパケットが2つとも到着してる状態でrecvで24byte読み出したら最初の16byteと、次の12byteの最初の8byteが引っ付いた状態で読み出されるんですか><

逆に鯖から8byteのデータが送られたときに読み出すタイミングによっては4byteしか届いてなかったりしますか?
TCPです><
572デフォルトの名無しさん:2011/09/19(月) 17:20:26.98
はい
573全然動かないよーー:2011/09/19(月) 17:33:56.47
>>565 >>567
errnoのとり方が分かりません。
断片的な知識はあるのですが、うまくいきません。
>>562の質問についても助言をお願いします。
574デフォルトの名無しさん:2011/09/19(月) 17:50:27.97
>>573
#include <errno.h>
#include <string.h>

int ret = recv(/*略*/);
if (ret == -1) {
printf("recv() failed: errno = %d (%s)\n", errno, strerror(errno));
}

errnoやstrerror()についてはググッて。
575デフォルトの名無しさん:2011/09/19(月) 18:23:26.31
>>570,572
ありがとうございます><
頑張ります><
576デフォルトの名無しさん:2011/09/20(火) 00:45:14.61
>>561
パケットフィルタで蹴られましたとか言ったら殺す。
577デフォルトの名無しさん:2011/09/20(火) 02:16:11.56
パケットフィルタで蹴られましたとさ
578デフォルトの名無しさん:2011/09/20(火) 12:21:46.46
>>576
それは無いだろ。それなら届かないからそもそもエラーにならない。
579デフォルトの名無しさん:2011/09/20(火) 14:17:18.53
すごいアイデアを思いついた
TorっていうP2P匿名ソフトはSocksに対応してるんだよな
ローカルのソフトの通信を全部Torに投げてやれば自動的にすべてのソフトを匿名で利用出来る
そして俺にはそのやり方の知識と、既に作ったソフト群がある
これ作ったらたぶん革命的だろうな、特にファイル共有関連とかな
が作る時間がない
アイデアだけ託すから誰か作ってみるといい
580デフォルトの名無しさん:2011/09/20(火) 15:41:59.35
了解
581デフォルトの名無しさん:2011/09/20(火) 19:32:49.64
既に作ったソフト群があるなら作る時間がなくても困らないじゃん
582デフォルトの名無しさん:2011/09/20(火) 23:21:57.28
さっさとソース出せ
583動いたよーー:2011/09/21(水) 11:29:58.67
561です。

動きましたーっ☆

>>576,>>577
その通りでした。
ファイアウォール設定でごく一部のポートしか開いてませんでした。
それが原因でした。助かりました、ありがとうございます。

>>578
実は、訳あってノンブロックにしていたので、制御が戻り、
-1を返していました。
584デフォルトの名無しさん:2011/09/21(水) 12:05:08.84
>>583
>>567のとおりだったわけか
585デフォルトの名無しさん:2011/09/21(水) 13:33:00.92
いや、>>561がerrnoを見たとは限らないぞ。
586デフォルトの名無しさん:2011/09/21(水) 14:04:40.71
そうだな。あんだけ言ってもまだ-1とかぬかしてるしな
587デフォルトの名無しさん:2011/09/21(水) 15:29:37.40
知識の無い奴は、さらに知識の無い奴を見つけると揚げ足とって猿みたいに喜ぶんだよな
だから馬鹿なんだよ
588デフォルトの名無しさん:2011/09/21(水) 17:06:42.20
>>587
喜びのレスありがとう
589デフォルトの名無しさん:2011/09/21(水) 17:40:28.94
http://www.tasukete.org/
ここの管理人アホだから手助けして
590デフォルトの名無しさん:2011/09/21(水) 22:14:20.60
>>587
同意w
591デフォルトの名無しさん:2011/09/24(土) 00:48:30.65
CとJavaを入門書終わらせてちょっと簡単アプリなんかも作ってみたりする程度の経験で
ネットワークプログラミングについても勉強してみたいな、と思ったのですが
そういう状況だと入門書としては「猫でもわかるネットワークプログラミング」辺りでよろしいでしょうか
592デフォルトの名無しさん:2011/09/24(土) 13:33:35.47
>3 >4
から好きなの読めば
593デフォルトの名無しさん:2011/09/24(土) 13:48:56.26
>>591
UNIXネットワークプログラミングvol1と、あとは適当な薄い本買っとけ。
594デフォルトの名無しさん:2011/09/29(木) 01:09:29.28
UDPで送信側が1から4まで番号つけたデータを順番に送信して、
受信側が1、2、4という順番で受信したときに3のデータがロストしたのか4の後に来るのか判断する方法ってある?
3がくるのをちょっと待ってみるか、2の次に4を受信した時点で3の再送を要求するしかない?
595デフォルトの名無しさん:2011/09/29(木) 08:05:15.55
>>594
>4の後に来るのか判断する方法ってある?

ない。

>3がくるのをちょっと待ってみるか、2の次に4を受信した時点で3の再送を要求するしかない?

うん。
596594:2011/09/29(木) 08:23:58.03
>>595
ありがと
597デフォルトの名無しさん:2011/09/29(木) 11:38:51.77
応用によっては「3は諦める」という選択肢もある。> しかない?
ストリーミングで行われているケースあり。
598デフォルトの名無しさん:2011/10/16(日) 18:09:31.09
ネットワークプログラミングって
情報少ないけどどうしてますか?
599デフォルトの名無しさん:2011/10/16(日) 18:27:54.19
>>598 つりだよな???
600デフォルトの名無しさん:2011/10/16(日) 18:36:58.08
>>599
そうでもない
601デフォルトの名無しさん:2011/10/16(日) 18:38:32.12
エラー処理等細かいところまでしっかり説明した日本語のサイトって意味なら
少ないかもな
602デフォルトの名無しさん:2011/10/16(日) 18:54:33.92
たとえばTCP-MD5を実装したいって思ったって、ほとんど
実装の参考になるサイトはないよね。
603デフォルトの名無しさん:2011/10/16(日) 19:02:15.18
>>602
TCP-MD5ってよくしらないんだけど、そんなにみんなが実装したがるものなの?
>>598ってちまたによくある「ソケットの使い方」みたいなものを指してると思ってた。
604デフォルトの名無しさん:2011/10/16(日) 22:28:06.21
>>602 RFCにこと細かく書いてないか?
# RFC も読めないような低能はネットワークプログラミングするな
# 迷惑だ
605デフォルトの名無しさん:2011/10/17(月) 14:23:16.79
WindowsからLinuxにTCPで接続したのですが、
Windows側でソケットを正常に閉じて終了した際、
Linux側のソケットでrecvしても返り値が0以下(エラー)になりません。
接続をしたままでWindows側のプログラムを強制終了するとLinux側のrecvはちゃんとエラーを返してくれます。
なぜでしょうか?
そしてLinux側でWindows側のソケットが正常終了したことを知るにはどうしたら良いでしょうか?
ノンブロッキングモードです。
606デフォルトの名無しさん:2011/10/17(月) 17:32:52.11
>>605
closeはしたけど、shutdownはしてないとか?
607604:2011/10/17(月) 20:06:20.06
>>606
ありがとうございます。
シャットダウンしてなかったのでshutdown(sock,2)してみましたが変わりませんでした。
タイムアウトの判定組み込んで何とかします・・・
608デフォルトの名無しさん:2011/10/17(月) 21:21:09.69
>>605
エラー返さないってそこいらじゅうに書いてあるじゃん
戻値0の場合, EOF とも
609604:2011/10/17(月) 23:17:12.80
>>608
すいません、shutdownの使い方しか読んでませんでした。
検出頑張って実装します。
610デフォルトの名無しさん:2011/10/18(火) 00:50:03.94
>>608ひとこと余計だって言われない?きみ
611デフォルトの名無しさん:2011/10/18(火) 01:17:51.53
>>610
重要な情報だろ。おかげで>>609も気づきを得た
612デフォルトの名無しさん:2011/10/18(火) 15:43:49.59
>>610
2chは初めてか? 肩の力抜けよ
613デフォルトの名無しさん:2011/10/18(火) 19:03:52.22
ひとこと。余計だって言われない?きみ
ひとこと余計。だって言われない?きみ
ひとこと余計だって。言われない?きみ
ひとこと。余計だって言われないきみ。
614デフォルトの名無しさん:2011/10/18(火) 22:33:33.33
もしかして >>608 の「戻値0の場合, EOF」が余計な一言と言ってるのではあるまいか?
「安易に答えを教えず自分で調べさせろ」って意味?
615デフォルトの名無しさん:2011/10/19(水) 00:11:37.08
おしい! あと11時間でゾロメだったのに
616デフォルトの名無しさん:2011/10/19(水) 10:10:21.69
2ちゃんでのスレの伸びなんて気にしなくていいよ。
ちゃんとメディアに取り上げられた方が勝ち。

2ちゃんなんて、どうせネトウヨが荒らしに来るだけでしょ。
普通の人が使うネット情報は、ツイッターやフェイスブックの方がメインになってきている。
流行ってるし、コミュニケーションがうまく取れない人は入り込めないから、
ネトウヨがグチグチ文句言ってるでしょw

もはや、2ちゃんは、ネットの中でも上手くやっていけないタイプの人が流れ込んで来る場所でしかないんだよ。
だからデモ関係など人を集めたい場合は、2ちゃんは使わない方が良いんだよ。
617デフォルトの名無しさん:2011/10/19(水) 14:54:07.06
氏ね政治基地外
618デフォルトの名無しさん:2011/10/20(木) 17:06:52.07
>>615
ちょっとまて33時ってどゆこと?
619デフォルトの名無しさん:2011/10/20(木) 18:48:53.61
>>618
ネタなんだよ。
620デフォルトの名無しさん:2011/10/21(金) 19:48:42.44
(´・ω・`)ふ~ん
621デフォルトの名無しさん:2011/10/24(月) 00:25:35.00
職場の新人にネットワークの基礎からたたき込むことになったのだが、新人教育は初
相手は一応ソフト関係を大学で勉強はしたがネットワーク関係はさっぱりという連中、
ソフトを扱っていたというレベルもちょと不安なところ
ネットワーク関連の組み込みアプリケーション(DLNAとか)の
設計ができるところまで育てる必要があるのだが
さて、どこから教えたものか?
とりあえずOSI参照モデルあたりの説明でもしとけばいいのか??
自分が独学なだけにどうしたらいいのかよく分からん、助言あれば頼む。
622デフォルトの名無しさん:2011/10/24(月) 00:33:28.87
>>621
逆に考えるんだ。DLNAを作れるという到達目標が明確なら、
そのために必要な前提知識を洗い出す。
・・・で、さらにその前提知識を洗い出す。
これを生徒の現在のレベルであろうという場所まで繰り返す。
それが教えなければならない項目のリストだ。

生徒の現在のレベルについては、事前にペーパテストでもやっておくと良い。
事前にテストとか出来ないなら、とりあえず優しいレベルからスタートして、
生徒の顔色を見ながら知ってそうならすっ飛ばすことになる。
623デフォルトの名無しさん:2011/10/24(月) 00:36:30.28
>>621
課題となるアプリを決めて環境構築から設計、実装までを新人といっしょにやってみるのが一番じゃね。
624デフォルトの名無しさん:2011/10/24(月) 01:10:08.08
>>622
>>623
なるほど、とりあえず軽くテストしてレベルを調べるってことをやると
ある程度方針が決まるかもですね
そこで基礎固めがある程度できたら、
実際のシステム構築をやらせてみて
その都度必要な知識についてこちらから説明するなり
自分で調べさせるなりすれば身につきやすいか
何となくイメージができてきました。
625デフォルトの名無しさん:2011/10/24(月) 02:59:19.70
人に教えるのって大変だよな。小学生から独学でプログラミングやって、膨大な量のソースコード書いてきたから
大学の授業でちょこっとやっただけの奴らって大丈夫かって思う。
特にデバッグ力、設計力に圧倒的な差が出る
626デフォルトの名無しさん:2011/10/24(月) 23:16:41.55
c#スレでこちらに誘導されましたのでお願いします。

popサーバにアクセスして、新着メールを取得するプログラムを作りたいのですが、
接続~取得まではうまくいきましたが、メールをフォルダわけしている場合に、
"受信フォルダ"←ルート?のメールしか取得できません。
条件で振り分けている他のメールも取得したいのですが、行き詰まってしまいました。
よい方法がわかるかたがいらしたら回答よろしくお願いします。

言語はC#で、listやstatを投げても、ルートディレクトリのメールしか取得できない状態です。
627デフォルトの名無しさん:2011/10/24(月) 23:29:59.76
>>626
POPじゃどうにもならないだろ。
素直にIMAP4使え。
628デフォルトの名無しさん:2011/10/25(火) 00:30:13.88
>>625
俺は大学に入ってから初めてプログラミングに触れた人間だが
大学の授業でやったレベルだと全く役にたたんね
設計力・コーディング力以前にソフトウェア的な概念自体さっぱり身につかない
教科書見てこう書けばこう動くだけだからねぇ

やっぱり、学習と言うより経験が重要だからOJTが一番身につくのかなぁ
629デフォルトの名無しさん:2011/10/25(火) 00:52:13.23
630デフォルトの名無しさん:2011/10/25(火) 01:46:48.27
>>628
ベーマガ読んで倉庫番作れ。
それがもっとも早道だ。
631デフォルトの名無しさん:2011/10/26(水) 20:17:30.05
質問失礼します。

C++でwinsockのUDPのプログラミングを行っています。
C/S共にsendtoとrecvfromを利用しているのですが、
まれにC/S共にrecvfromでブロックされて、それ以後の送受信が行えない事象が発生します。
sendtoでエラーは出ていませんでした。

①サンプル通りに作ったのですが、こういった事はありうるのでしょうか?
②これはどのように回避すべきでしょうか?
 recvfrom関数をノンブロッキング関数にする事はできるのでしょうか?

分かる方、お願いします。
632631:2011/10/26(水) 21:02:27.21
すいません。
②は解決しました。

サーバーで利用する関数を sendto recvfrom
クライアントで利用する関数を sendto recv にして、
Ulong uloVal = 1;
ioctlsocket(socket, FIONBIO, &uloVal);
上記設定を行った所、ノンブロッキング処理が行えるようになりました。

しばらくコレで様子をみます。
633デフォルトの名無しさん:2011/10/26(水) 21:36:42.51
>>631, 632
UDP って, 仕様的に 「必ず届く保証がない」 ってのは知ってる
634デフォルトの名無しさん:2011/10/26(水) 21:56:16.42
>>633
Yes, I know.
635631:2011/10/27(木) 07:33:40.59
>>633
知ってました。。。確かにそうですね。
教科書のサンプル通りに組んだんですけど、教科書にも間違いがあるんですね。

お陰さまで解決できました。
ありがとうございました。
636デフォルトの名無しさん:2011/10/27(木) 10:11:02.18
ロストをフォローするようなコードになってないだけで別に間違ってるわけじゃないだろ
自分で考える脳みそがないのを教科書のせいにすんな
637デフォルトの名無しさん:2011/10/27(木) 10:55:53.61
「ただし、空気抵抗は無いものとする」
と同じようなものだよ。
とりあえず空気抵抗を考えるのは次のステップで
まずは基本を抑えておけと言う
638デフォルトの名無しさん:2011/10/28(金) 13:23:28.05
で?
639デフォルトの名無しさん:2011/10/28(金) 17:18:25.07
>>638
基本を押さえたら あとは実践あるのみだよ
640デフォルトの名無しさん:2011/10/28(金) 22:19:13.97
今時だいたい仮想化できるんだから実践なんて必要ないよ
641デフォルトの名無しさん:2011/10/28(金) 22:58:25.16
なら仮想を実践すればいい
642デフォルトの名無しさん:2011/10/30(日) 14:27:50.51
linuxでネットワーク用のバッファメモリの
システムでの合計最大量を制限する方法ってなかったっけ。
物理メモリの何%までとかいう感じのがあったような記憶があるんだが。
643デフォルトの名無しさん:2011/10/31(月) 10:25:11.14
>>642
無い。

ソケットごとのバッファサイズや開けるファイルの数なら設定できるから
それらの掛け算で上限を決めることは出来る。
644デフォルトの名無しさん:2011/10/31(月) 11:39:42.32
3人プレイのゲームをオンラインにするとき、Aをホスト、BとCをクライアントとすると
B・C間のデータのやりとりってAを介して行うもの?
それともBとCにお互いの宛先を教えて直接やりとりさせるもの?
645デフォルトの名無しさん:2011/10/31(月) 12:22:29.49
他のゲームがどうやってるか、考えたこと無いのか?
646デフォルトの名無しさん:2011/10/31(月) 12:42:58.47
俺だったら、3人のうちで、誰かの通信速度が遅かったり、急に切断されても。残りの二人が遊べるような仕組みにする
だから、AB BC CA間全てでやりとりさせるな

簡単にするなら、BとCはインターフェースとしての役割にして(つまり、キーの入力とかをそのままAに投げる)
Aだけでゲームの処理をする
647デフォルトの名無しさん:2011/10/31(月) 12:50:53.31
>>644
どちらでも好きに。それぞれメリットデメリットはある。
特定のPCをホストにする場合、そのPCがボトルネックになる。
その代わりに作りやすい。
P2Pにしてもいいけど、各PCごとに持っている各PCの状態が事なってたり
する可能性があるので、作るのは難しくなる。
648デフォルトの名無しさん:2011/10/31(月) 12:53:03.80
>>645
他のゲームがどうやってるか考えたら何がわかんの?
649644:2011/10/31(月) 16:17:13.13
>>646-647
参考になった
ありがとう
650デフォルトの名無しさん:2011/10/31(月) 16:47:49.12
>>648
いろいろわかる
651デフォルトの名無しさん:2011/11/02(水) 01:19:33.72
すみません。
ひよっこC++プログラマーで、まず1:1通信を勉強し、いずれはサーバーを置いて2秒おき程度に通信しあって仮想空間を実現したい者です。

ネットワーク系書籍で、様々なプロトコル、ネットワークを実現する機器の構成、ネットワークを実現する技術のあらまし、OSI参照モデルなどの勉強はしたのですが、
ネットワークプログラミングの勉強をしようと書籍を読むと、いきなりPCを2台準備しなければ困難 と書かれており立ち往生しています。
やはりPCが2台無いと勉強はできないものなのでしょうか?

また、個人でなるべく手間をかけずに実現できるのはどの程度で、どれ以上は個人では無理が出始めるのでしょうか?
メンテナンスやセキュリティの技術が無ければ仲間内の小さなお遊び程度に留めるべきなのだろうなぁとは思っているのですが…。

良い勉強方、今、そして今後知るべき/読むべき書籍などの誘導をして下さると幸いです。 よろしくお願いします。
652デフォルトの名無しさん:2011/11/02(水) 01:46:04.80
その勉強したっていうネットワークの本、もう一度読んで
ネットワークとは何か勉強しなおそうぜ♪
653651:2011/11/02(水) 01:54:14.06
>>652
擬似的2台にみせかけて勉強するとかも困難なものなのですね・・orz
友人にプログラムを送って手伝ってもらうなりしないとなのでしょうか。 少し復習してみます。。
654デフォルトの名無しさん:2011/11/02(水) 02:37:46.15
localhost使ったら問題のあることやりたいの?
http://www.geekpage.jp/programming/
ここにあるような、初歩的なものなら1台で実験できる。
655デフォルトの名無しさん:2011/11/02(水) 02:46:19.07
お前さんの思い込みが入ってるように思えてならないが

本当にその本に「PCを2台準備しなければ困難」と書いてあるなら、
書名をさらして今すぐ捨てろ
656デフォルトの名無しさん:2011/11/02(水) 04:02:01.93
>>651
端末を二つ開いて、一つをサーバーに、一つをクライアントにすれば、たいていの場合同一マシンでも確かめることができます。
あとそんな方法でさえも教えてくれないというその書籍の名前を教えてください。
657651:2011/11/02(水) 04:02:52.92
>>655
オンラインゲームプログラミング という本だったと思います。
PC2台ないと解説についてこれなくなるという標記に肩を落とした記憶が・・。

>>654
ありがとうございます・・! 初歩的・・でもとにかく感触だけでも知りたいので色々試して学んでみようと思います。感謝っ
658デフォルトの名無しさん:2011/11/02(水) 06:41:06.34
>>657
それはネットワークの都合では無くて、
ゲームの都合でついてこれなくなるんじゃね?
659デフォルトの名無しさん:2011/11/02(水) 09:49:45.31
660デフォルトの名無しさん:2011/11/02(水) 09:57:12.03
プログラミング初心者だと、ネットワーク系はデバッグが無理だろ。
こういう系のプログラム作るなら、9割りがた一発で通せるレベルじゃないと
661デフォルトの名無しさん:2011/11/02(水) 10:30:00.68
うまく動作しているLAN戦略がWANにも適用できると思ってはいけない

 TCP/IPプログラミング徹底解説 Jon.C.Snader著
662デフォルトの名無しさん:2011/11/02(水) 17:32:56.34
まずはネットワークスペシャリストの資格を取るべきだろ
663651:2011/11/02(水) 18:18:59.08
>>656
1台のPCでも確かめられるんですね; ありがとうございました;
>>658
そういう意味だったのですかね、、 10ページ程は無理に読み進めてみたけれどこんがらがって挫折してました;
>>659
おそらくそれです。
>>660
初心者では無いですが、中級者とも言えないひよっこです; なんとか頑張ります;
>>661
オンラインゲームで不具合だらけのパッチが来るのはそこが原因なのでしょうか。
654さんのURLから始めて2プログラム間のやり取りを試せて嬉しい反面、
やはり実際に外とやってみないと動作保障は無いと思った方が良いのですね・・。ありがとうございましたー;
664デフォルトの名無しさん:2011/11/02(水) 21:54:47.98
>>662
> ネットワークスペシャリスト
うちの会社のもいるけど, 現場じゃ, 全然つかえねぇじゃんw
665デフォルトの名無しさん:2011/11/02(水) 22:09:21.00
残念だが資格もってない奴よりはまだマシなんだぜ・・・
666デフォルトの名無しさん:2011/11/03(木) 07:08:47.07
一般的な基準にはなるわな
持っていない奴等の中から本当に使える奴を探すよりも、
持っている奴等の中から探したほうが、ずっと早いし確実
667デフォルトの名無しさん:2011/11/04(金) 10:32:30.91
勉強すればネットワークスペシャリストレベルの知識を理解し、覚えることができるという証明だからな
教えてできるかどうかわからない奴らよりはずっと信用できる(人間性を除く)

たまに面接前に応用技術の過去問やらせる会社とかあるけど
流石にあれは何を求めてるのかわからん
資格持ってる奴でも普段そういう仕事やってなきゃできるわけねーのに
668デフォルトの名無しさん:2011/11/04(金) 10:40:04.11
ネットワークスペシャリストの取得者は東大卒レベルだからな
669デフォルトの名無しさん:2011/11/04(金) 11:39:28.84
ネットワークスペシャリンスト()ならこれ解くくらい簡単なんだぜ
http://yuina.lovesickly.com/wp-content/uploads/2008/11/captcha1.jpg
670デフォルトの名無しさん:2011/11/04(金) 11:40:32.66
でも今の合格率見るとたいしたことないかも
俺が受かったときは6%くらいだったのに。
671デフォルトの名無しさん:2011/11/04(金) 11:40:33.75
>>667
普段そういう仕事やってる香具師を採りたいんだろ
672 ◆QZaw55cn4c :2011/11/04(金) 12:33:35.90
>>669
なんで変数が x しかないのに∂なんだ?
673デフォルトの名無しさん:2011/11/04(金) 12:55:06.58
何か問題でも?
674デフォルトの名無しさん:2011/11/04(金) 13:36:30.86
>>671
それなら募集要綱に書くだろ
675デフォルトの名無しさん:2011/11/04(金) 21:28:11.25
A:4
676デフォルトの名無しさん:2011/11/05(土) 04:03:48.60
VC++とWinSock2.0で通信プログラムを作ったんだけど

PC_A --- モデム --- インターネッツ --- モデム --- PC_B
な構成だと普通にSENDで期待通りにデータが到達するのに

PC_A --- モデム --- インターネッツ --- モデム --- ブロードバンドルータ --- PC_B
という構成にすると
PC_Aがリスン状態でPC_BがPC_Aに接続することはできるのに
どちらからSENDしても相手にデータが到達しないっていう
ブロードバンドルータ的にはDMZに登録してない限り外部からのデータは受信しないと聞いているけど
それならせめて送信はできてもいいと思うんだけどNAT的にデータが到達しないのが正しい挙動なのでしょうか?
677デフォルトの名無しさん:2011/11/05(土) 06:37:34.31
>>676
いいえ。
678デフォルトの名無しさん:2011/11/05(土) 07:02:49.52
もうだめだこのスレ
679デフォルトの名無しさん:2011/11/05(土) 09:38:56.15
ほらねこういう基礎が無い人がいるでしょ。
でもネットワークスペシャリストを取得した人間なら
こんな基礎はしっかり頭に入ってる。この違いがでかい。
680デフォルトの名無しさん:2011/11/05(土) 13:15:28.19
DMZに登録するかポート開けないと
681デフォルトの名無しさん:2011/11/05(土) 14:01:39.42
ポート解放?なにそれ?っていうめんどくさいユーザーのためにサーバー役以外はポート解放しなくてもいいようにしたいんだけど無理なの?
682デフォルトの名無しさん:2011/11/05(土) 14:21:42.43
>>681
もちろんできるよ。
683デフォルトの名無しさん:2011/11/05(土) 14:25:28.85
>>669
0
684デフォルトの名無しさん:2011/11/05(土) 19:45:07.71
最低限のセキュリティって頭はないのか?
685デフォルトの名無しさん:2011/11/05(土) 22:31:51.97
PGなんてのは最底辺がやる仕事なんだからそんな高度なことは考えなくてもいい。
全部解放でいいじゃん。
686デフォルトの名無しさん:2011/11/06(日) 00:45:28.10
プログラマといえど安全設計を念頭にやったほうがいいとおもうが
まあ試しに開放で・・・。
687デフォルトの名無しさん:2011/11/06(日) 01:25:56.85
まあね
688デフォルトの名無しさん:2011/11/06(日) 02:42:34.88
安全設計やってもやらなくても評価(単価)は変わらないよ。やるだけ損。
チャッチャと作って問題おこるころにバックレている方がずーっと賢い。
689デフォルトの名無しさん:2011/11/06(日) 02:59:24.21
そんで次からは発注してもらえなくなると。
690デフォルトの名無しさん:2011/11/06(日) 03:04:32.50
>>688
それは賢いプログラマーだと思うが・・・。
691デフォルトの名無しさん:2011/11/06(日) 13:02:11.82
ずる賢い
692デフォルトの名無しさん:2011/11/06(日) 16:20:10.43
なぜMSに発注が続くのか理解出来ない
693デフォルトの名無しさん:2011/11/06(日) 20:55:45.99
スマートハブとかインテリハブとかあるでしょ?
スマートで済むものにインテリの見積もり費用吹っかけておいたらウマー
694デフォルトの名無しさん:2011/11/08(火) 17:26:44.08
>>692
それを理解できないうちはお金持ちにはなれんよ
695デフォルトの名無しさん:2011/11/09(水) 12:15:36.04
まあね
696デフォルトの名無しさん:2011/11/13(日) 21:16:35.85
gzipで圧縮されたHTTPをGZipStreamで解凍するとパケットが分割されてない、ひとつだけの時は解凍できるのですが
複数のパケットに分割されて送られてきたものを一つにまとめて解凍するとなぜか失敗します
何が原因でしょうか?
697デフォルトの名無しさん:2011/11/13(日) 22:32:16.48
データが壊れてないかどうか比べてみた?
698デフォルトの名無しさん:2011/11/14(月) 00:06:55.75
壊れてないです
699デフォルトの名無しさん:2011/11/14(月) 11:39:37.53
このスレの >>98- あたりの話かねぇ
700デフォルトの名無しさん:2011/11/14(月) 11:46:33.72
仕様読めよ。昔読んだけど忘れた

content encodingと・・・encodingってあったような
content-lengthはcontentの長さ。圧縮後の長さだったような
rangeは忘れた
701デフォルトの名無しさん:2011/11/14(月) 13:36:01.68
お前が言うな
702デフォルトの名無しさん:2011/11/18(金) 04:09:33.92
マルチキャストのプログラムを書いたんだけど、
ひょっとしてこれスイッチの負荷が物凄い?
703 ◆QZaw55cn4c :2011/11/18(金) 20:00:13.01
>>702
マルチキャストは同軸ケーブル一本に乗っていた時代だからこそ容易に実装できたわけで。
704デフォルトの名無しさん:2011/11/18(金) 21:38:36.33
死ねクズ
705デフォルトの名無しさん:2011/11/18(金) 23:05:29.88
>>702
まぁな, スイッチのバックプレーンには確実に負荷がかかる
まぁ, その程度でアップアップするようなスイッチは捨てろ
ってな話もあるが... ... ...
706デフォルトの名無しさん:2011/11/25(金) 03:55:09.69
あぁーそうか、昔はネットワーク装置側にとって
ユニ・マルチ・ブロードでのキャストの違いはなかったんだっけ。
今は賢いのが当たり前すぎて完全に忘れていた。
707デフォルトの名無しさん:2011/11/29(火) 14:22:20.99
WinSocket2のOverlapped IOの質問です。
クライアント側でサーバーにTCP/IPで接続した後、WSARecvでOverlapped IOして放置して、
で、例えば、WSASendでこちらは同期呼び出しで送信してる間に、サーバー側からデータ来た場合、
WSARecvの最後の引数で指定した完了ルーチンが呼び出されるのでしょうか?というか
こういう使い方はアリなんでしょうか?
708デフォルトの名無しさん:2011/11/29(火) 14:48:31.10
すみません。忘れて下さい。
709デフォルトの名無しさん:2011/11/30(水) 10:09:57.72
現在ローカルPCがアクセスしているインターネット接続(HTTPのみ)の取得方法を教えてください。

イメージ的には
iexplore.exe http://ahoo.com/hoge/index.html
firefox.exe http://googoo.com/sage/index.html
spy.exe http://spy.gr/~12345

などです

言語はVB,VCのどちらかでお願いします。

710デフォルトの名無しさん:2011/11/30(水) 14:00:46.12
不可能
711デフォルトの名無しさん:2011/11/30(水) 14:21:30.31
不可能か
netstat -b は不可能なんだ
712デフォルトの名無しさん:2011/11/30(水) 14:23:48.45
urlまで取るならパケット横取りして解析するしかないか?
713デフォルトの名無しさん:2011/11/30(水) 14:24:10.45
HTTPだからだろ
714デフォルトの名無しさん:2011/11/30(水) 15:00:46.92
proxy
715709:2011/11/30(水) 16:28:21.12
やはりパケット解析しかないですか。
接続先IPアドレスだけだとちょと足りないんで。
昔のようなバカハブが安く売ってればいいんだけど、今逆に高くて・・・
716デフォルトの名無しさん:2011/11/30(水) 16:36:20.24
winPcapでがんばれ
717デフォルトの名無しさん:2011/12/06(火) 11:32:27.58
ちょうどこんなのあるらしいぞ

HTTPNetworkSniffer
http://www.forest.impress.co.jp/docs/review/20111205_494893.html

まさしくWinPcapでHTTPをキャプチャする
718デフォルトの名無しさん:2011/12/29(木) 15:57:22.25
ホスト側とクライアント側に別れる事ができるゲームで
「ホスト側はポート●●番を開放して下さい」とよく表記されています

ホスト側はあけたポートでデータを受信しているのはわかりますが
クライアント側は一体どうやってデータを受信してるのでしょうか?

丸一日ほど探したのですが見つからないので質問させて頂きます
719デフォルトの名無しさん:2011/12/29(木) 15:59:32.29
板違い
720デフォルトの名無しさん:2011/12/29(木) 16:04:47.53
>>718
TCPならクライアント側のポートはOSなどが決定する。
・クライアントが通信を開始する
 通信用のポートをOSに要求
・そのポートからサーバの決められているポートにデータ送信
 このときサーバはクライアントはどのポートからデータを送ったのかも通知している
 (TCPの仕様でポート番号もヘッダに含まれるから)
・サーバはクライアントのポートに対してデータを返す
・サーバから、もしくはクライアントから接続を切る

要するに、クライアント側は出口を「返事の入り口として開けて待っている」という状態。
721デフォルトの名無しさん:2011/12/29(木) 16:41:30.21
> TCPならクライアント側のポートはOSなどが決定する。
ウソ教えんなよ。雑魚。
722デフォルトの名無しさん:2011/12/29(木) 16:53:36.80
>>720
TCPではとのことですけど
やっぱりUDPでは不可能なのでしょうか?
何か回避策などあったりするんですか?
723デフォルトの名無しさん:2011/12/29(木) 18:58:09.85
>>722
何が不可能なんだ?
何を回避したいの?
724デフォルトの名無しさん:2011/12/29(木) 19:53:28.92
cookieに関しての質問です。
2chの専ブラを制作しているのですが、cookieの管理で悩んでいます。
cookieの仕様書通りに管理するプログラムを書いたのですが、
書き込み時に、PON=????の文字列が一番最初に来ないと書き込めませんでした。
ex) PON=...; HAP=...   OK
   HAP=...; PON=...   BAD
仕様書によると、pathは優先度が変わりますが、domainはその詳細に順位が関係しないはずです。
俺が知らない何かがあるのでしょうか。
725デフォルトの名無しさん:2011/12/29(木) 20:20:17.44
2chサーバーが仕様書通りに実装されているという保証はどこにもない。
726デフォルトの名無しさん:2011/12/29(木) 20:29:26.13
>>725
なるほど。でも、これだけ大規模なのに?
727デフォルトの名無しさん:2011/12/29(木) 20:30:46.67
>>723
すみませんUDPでも
728718:2011/12/29(木) 20:33:07.64
>>723
すみませんUDPでも
ホスト側でクライアント側のIPやポート番号を取得することができました。

しかしホスト側でそのIPとポート番号を元に
クライアント側にデータを送信してもうまく受信できません

何故失敗するのでしょうか?
729デフォルトの名無しさん:2011/12/29(木) 20:49:50.82
サンプルがいくらでも転がってるから、それを動かしてみて動かなかったら質問しろ。
お前が試行錯誤ででっち上げたクソコードの動作の予測なんてできるわきゃねーだろ。
730デフォルトの名無しさん:2011/12/30(金) 00:17:59.99
>>728
同一コネクションでも?
731デフォルトの名無しさん:2011/12/30(金) 03:46:44.88
>>728
クライアント側でconnect()でもしてなきゃ無理だよ。
732デフォルトの名無しさん:2011/12/30(金) 07:12:22.76
>728
パケットキャプチャのソフト(ワイヤシャークとか)で、パケットが届いてるか確認してごらんよ。
あとはサーバとクライアントでプログラム入れ換えたらつながるか
733デフォルトの名無しさん:2011/12/30(金) 07:37:51.65
>>728
ポート開放とか書いてたけど、もしかしてそれNATルーターの話か?
エスパーすると、サーバー側で受信したそのソケットから返信してないとか?
734718:2011/12/30(金) 19:32:14.69
手順は以下の通りで実装してます
サンプルは色々探しているのですがUDPを使用したクライアントとホストの相互通信で
ホストのみがポート開放をする例のサンプルが見つからずに苦戦しております
●ホスト側
 ・準備
  ①受信用のUDP用socketを作成する
  ②受信用に使うsockaddrを作成する(ポート▲番指定)
  ③送信用のUDP用socketを作成する
 ・受信
  ①bindで受信用socketを結びつける
  ②recvfromで受信用socketからデータを取得する
  ③上記の処理で手に入ったポート番号とIPで送信用socketを設定する(ポート■番がわかる)
 ・送信
  ①sendtoで送信用socketを使う
●クライアント側
 ・準備
  ①送信用のUDP用socketを作成する
  ②送信用に使うsockaddrを作成する(アドレス・ポート▲番指定)
  ③送信用のsocketをconnectする
 ・受信
  ①bindで受信用socketを結びつける
  ②recvで受信用socketからデータを取得する(■失敗する■)
 ・送信
  ①sendtoで送信用socketを使う

Q1・クライアントでホストがポート何番に返信されたかが不明なので受信は不可能なのか
Q2・UDP通信でconnect()は本来の用途ではないと書かれていたのですが正しいのか
735デフォルトの名無しさん:2011/12/30(金) 19:57:09.52
だから、ちゃんとした教科書つかえよ。

ホスト側、クライアント側ともに「送信用ソケット」と「受信用ソケット」を使わない。
1つのソケットを送信、受信で共用する。
ホスト側にUDPが届く設定ができているなら、これで送受信できるはずだ。
736デフォルトの名無しさん:2011/12/31(土) 00:12:52.06
同じポートで2つソケット開いてるんだな。それだと、どっちのソケットに届くか不定だったはずだ。

普通ソケットは、同一マシン送受信で1個で設計する。
サーバ側 7001
クライアント側 7001 (分かりやすくするため7011とかもok)


まあ送信用と受信用で別にしても作れる。その場合は、同一マシン内はポートを別にする。
例えば、
サーバ 受信 7001
サーバ 送信 7002
クライアント 受信 7001 (7011とかもok)
クライアント 送信 7002 (7012とかもok)


送信で相手ポートを指定するのに、sendじゃなくsendtoするんだからconnectは不要。

自分のポート指定は全部bindで行ける。

前の人も言ってるとおりまともな教科書買えよ。スレのアタマ見たか?
737デフォルトの名無しさん:2011/12/31(土) 00:25:06.58
あと、基本を勘違いしてそうだな。
1方向の1通信で、送信元ポートと送信先ポートがあるんだぞ。

サーバ側プログラムでrecvfrom 呼ぶときお前が指定すべきなのは、クライアント側の送信元ポート。どの送信元ポートでも受け付けるならanyaddrを指定する。

呼んだあとで取得できるのは、サーバのどのポートに届いたか(送信先ポート)であって、送信元ポートじゃない。普通はbind済みで自明なので、そんなの見る必要ない。
738デフォルトの名無しさん:2011/12/31(土) 00:26:08.92
anyaddrじゃなくanyportだった。間違い。
739デフォルトの名無しさん:2011/12/31(土) 00:34:38.82
先ずは車輪の再発明と模倣と反復練習と復習。軟弱地盤にゃ土質改良が必要。
740デフォルトの名無しさん:2011/12/31(土) 00:48:08.96
>>734
サーバー側が recvfrom で受け取ったアドレスをまんま使って sendto しないのはなぜ?
以下じゃだめな宗教的理由でもあるの?
recvfrom(s, rb, sizeof rb, 0, (struct sockaddr*)&a, &l);
/* 何かの処理, aとlの内容はつつかない */
sendto(s, sb, sizeof sb, 0, (struct sockaddr*)&a, l);
741デフォルトの名無しさん:2011/12/31(土) 01:00:31.54
>>737
そうなのですね勉強になります
742デフォルトの名無しさん:2011/12/31(土) 01:02:28.41
すみません間違えて投稿してしまいました

>>737
そうなのですね勉強になります
anyportについて検索してみても資料が出てこなかったので別の言い方とかありませんか?

>>740
わかりにくくてすみません
ちゃんとプログラム側ではそう実装しておりました
743デフォルトの名無しさん:2011/12/31(土) 02:19:42.46
そう実装してました、って、じゃあ>>734で書いてることと違うじゃん。
どっちが本当なのよ?
744デフォルトの名無しさん:2011/12/31(土) 09:48:53.30
そうなのねですか勉強になりすます
745デフォルトの名無しさん:2012/01/03(火) 02:28:39.89
すまん間違えた。recvfromで取れるアドレスはやっぱ送信元だ。吊ってくる
746デフォルトの名無しさん:2012/01/03(火) 04:27:43.30
DoCoMoの不具合連続で不安になったんですが、

C++やjavaでtcp通信用のソケットを生成して通信する場合、
生成から破棄まで、特殊なことをしない限りは、通常は通信相手は固定ですよね?
747デフォルトの名無しさん:2012/01/03(火) 12:22:11.25
>>746
まぁそうだね。
自分が特殊な事をしなかったとしても、経路上にある機器や、
通信相手が特殊な事をしていないとは限らないけどな。
748デフォルトの名無しさん:2012/01/03(火) 13:39:18.52
やっぱそうですよね、よかった。
749デフォルトの名無しさん:2012/01/03(火) 13:43:20.10
何がよかったのか…
750デフォルトの名無しさん:2012/01/03(火) 18:55:54.44
通信がおかしい場合は「相手が特殊なんだ」と相手のせいにできる
口実を手に入れたつもりになっているんだろう。
751デフォルトの名無しさん:2012/01/03(火) 19:29:52.81
>>746の1行目とそれ以降が繋がってない気がする。
752デフォルトの名無しさん:2012/01/08(日) 18:29:24.53
IPv6でdivertでパケットを横取りしてルーティングヘッダを
付けようとしていますが、うまくできません。
誰かIPv6でヘッダに拡張ヘッダを付加する方法を知りませんか?
753デフォルトの名無しさん:2012/01/08(日) 19:58:02.60
ルータにはじかれるだけでしょ、小細工すると
754デフォルトの名無しさん:2012/01/08(日) 22:00:57.57
はじかれる前にパケットを送れてないんですよ
755デフォルトの名無しさん:2012/01/23(月) 11:13:35.01
Windows 7 Professionalで、XPのrsh.exeと同等の機能を使いたい何とかしてくれ。
用途は、VC++で作った自前のアプリからrsh.exeを呼んで、サーバのシェルを実行し、その結果を取得したい。
無償、有償は問わない。rshクライアントのソースコードでも構わない。
756デフォルトの名無しさん:2012/01/23(月) 15:13:45.92
ここはプログラミング板なので作成依頼ということだな。
100万/納期1か月で作ってやるよ。
757デフォルトの名無しさん:2012/01/23(月) 15:21:05.56
>>755
Cygwin使えば?
758デフォルトの名無しさん:2012/01/23(月) 15:45:27.56
>>756
1か月とかw

>>757
論外


誰かまともなレス頼む
759デフォルトの名無しさん:2012/01/23(月) 15:46:28.59
>>758
どうしてCygwinのrsh.exeは論外なの?
760デフォルトの名無しさん:2012/01/23(月) 16:16:17.75
VB5で書かれたrsh.exeがころがってるからVCに移植すれば?
そんなに複雑なコードじゃなかった記憶があるし
761デフォルトの名無しさん:2012/01/23(月) 16:48:32.78
>>759
CygwinのrshってVC++からコールして使えるの?
あとCygwinって商用利用とかダメだった記憶が。調べてないけど

あくまでもrsh単体を自前のアプリに含めて商用利用したい
一応売り物なんでどこぞの怪しい物は使いたくない
762デフォルトの名無しさん:2012/01/23(月) 17:33:51.75
>>761
コマンドラインアプリなんだから普通に使える
GPLなので商用利用は問題なくできる
ソース公開義務はrshにのみ発生する
763デフォルトの名無しさん:2012/01/23(月) 18:59:19.29
rshの使用を強要される商用アプリなんか使いたくないな。
764デフォルトの名無しさん:2012/01/23(月) 19:10:22.60
もうほっといたれよ
765デフォルトの名無しさん:2012/01/24(火) 16:31:41.70
>>755
PuTTYのplink.exe使うと良いよ。
766デフォルトの名無しさん:2012/01/24(火) 16:55:59.72
怪しい物は使いたくないって言ってんだろカス
767デフォルトの名無しさん:2012/01/24(火) 17:02:24.09
超メジャーなんですけど・・・

Googleの検索結果
約 31,200,000 件 (0.13 秒)
768デフォルトの名無しさん:2012/01/24(火) 17:04:08.41
あ、あと当然ながらソースも公開されてます。

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
769デフォルトの名無しさん:2012/01/24(火) 17:10:40.88
>>758
25万1週間ならどう?
770デフォルトの名無しさん:2012/01/24(火) 17:12:33.96
こんなのも自前で作れない奴がソフトでお金を取るとか
771デフォルトの名無しさん:2012/01/24(火) 17:16:23.00
>>770
人月いくらでやってるITドカタには、こんなレベルの奴腐るほどいるよ
772デフォルトの名無しさん:2012/01/24(火) 17:20:34.26
html書けます!perl書けます!って
そこらへんの主婦でも書けるもんな
アセンブラからC#みたいな今風のやつまで全部できる奴が欲しい

あと、大規模なプログラムも設計できて、他人のコード読めて、数学ができて、コードが速く簡潔に書ける奴
俺のことだけど

まあ、プログラミングの仕事したこと無いんだけどさ
773デフォルトの名無しさん:2012/01/24(火) 17:21:23.11
もう少ししたら始めるんだけど、どのくらい稼げるのか楽しみ><
774デフォルトの名無しさん:2012/01/24(火) 17:37:33.22
>>772
俺もできる。
ついでのハードもできる。
775デフォルトの名無しさん:2012/01/24(火) 17:40:09.01
初任給手取り16万がいいとこかな
776デフォルトの名無しさん:2012/01/24(火) 19:09:21.94
マジかYO
777デフォルトの名無しさん:2012/01/25(水) 09:35:17.82
ネットワークプログラミンクの話に戻すよ。

C#のWCF、やってみたらなかなかよかったぞ。

オイラ、(多分ここの住人も同じと思うが)バークレーソケットをこのスレの頭にあるような本で学んだクチだ。
SolarisやLinux、HP-UX、win32等の仕事で大いに役に立ったが、あのAPIっていまいち「イケてない」感があると思っていた。
RPCエンコとかもXDR,NDR,SDR,...統一されてないし。

WCFはイマドキな(httpやxmlなど、ヤレヤレって思うような)感じだが、少し対象レイヤーが上で、API構成に「イケてる」感がある。

機会があったら毛嫌いせずやってみるといいよ
778755:2012/01/25(水) 16:43:56.75
自作するのがただ単純にめんどくさかっただけなんだ
仕方ないんでC++でRSHクライアント自作することにした
どこかRSHの詳しい通信仕様のせてるサイト教えろ
779デフォルトの名無しさん:2012/01/25(水) 17:37:19.25
なんでplink.exeつかわんの?
アホなの?
780デフォルトの名無しさん:2012/01/25(水) 18:38:50.55
>>779
それは上のほうですでに判明している。
781デフォルトの名無しさん:2012/01/25(水) 20:10:19.95
>>778
多分オレに100万/納期1か月で依頼した方が安いと思うよ。w

ホレ、仕様。
http://linuxjm.sourceforge.jp/html/netkit/man8/rshd.8.html
782デフォルトの名無しさん:2012/01/25(水) 20:25:47.49
それのどこが仕様だよ
馬鹿じゃねえの
783デフォルトの名無しさん:2012/01/25(水) 21:35:45.55
残念ながらこれがberkeley伝来の仕様なんだ。これ以外には存在しない。
だから100万出せって。w
784デフォルトの名無しさん:2012/01/25(水) 22:31:12.97
>>778 rfc1258.txr
785デフォルトの名無しさん:2012/01/25(水) 22:32:34.89
>>778 rfc1258.txr
^^^^^^^^^^^^^^^^t の間違いだった
786デフォルトの名無しさん:2012/01/25(水) 22:55:08.61
それはrloginだから違う。100万払う気になったか? w
787デフォルトの名無しさん:2012/01/25(水) 22:58:26.93
webサービスでやったほうがいい
788デフォルトの名無しさん:2012/01/25(水) 23:18:02.43
>>787
実際楽だしな
httpsでパスつけりゃやりたいことはすぐ出来るしね
789デフォルトの名無しさん:2012/01/26(木) 01:19:19.38
質問に対し親切に教えているにも関わらす、まともに礼も言えないかまってちゃんは、徹底的に無視でお願いします。

荒らしをいつまでも構うのも荒らしです。
790デフォルトの名無しさん:2012/01/26(木) 09:17:31.87
今時、商用アプリでrsh使おうってくらいだから…
多分無能上司の下で働く、上司に輪をかけた無能なのだろう。
791デフォルトの名無しさん:2012/01/27(金) 06:17:43.65
>>790
ちっさいちっさい視野でほざくなカスが。

特定の企業向けアプリケーションで、当然お客様にも了承済み。
ポートも開放してもらう。
ローカルエリアネットワーク内にアプリの乗った端末PCを入れて、
装置ワークステーション(以下W/S)に対して様々な通信処理を行う。
内一つの機能として、RSHを使用し、W/Sのシェルを実行して、
その結果を得る機能を提供している。


先日、RSHクライアントの仕様が掲載されている良い書籍を見つけました。
汎用的なRSHクライアントではなく、機能を限定した形で自作完了した。
以上、いろいろとご教授ありがとうございました。
徹夜明けなんで今から寝ます。
792755:2012/01/27(金) 06:18:49.43
おっと、>>791>>755です
793デフォルトの名無しさん:2012/01/27(金) 10:06:50.40
rshの利用を検討したとき

まともな客:まともなSIer → (SIer)rshはやっぱダメですよね。(客)うんダメだね。
無知な客:まともなSIer → (SIer)rshはやっぱダメですよね。(客)そーなの? じゃやめとこう
まともな客:素人SIer → (SIer)rshでいいですね? (客)寝言言ってるんじゃねー、帰れ
無知な客:素人SIer → >>791

ロシアンクラッカーの踏み台候補が一つ増えたって事だな。
794デフォルトの名無しさん:2012/01/27(金) 12:43:40.59
だから相手すんな。話変えるぞ。

今の時代、パケットのエンディアンてリトルに合わせたほうが多数が幸せな気がする。

最近のビッグ陣営ってどことどこなの?
795デフォルトの名無しさん:2012/01/27(金) 13:29:29.22
バカSIerの犠牲者を減らすためにバカっぷりを晒しておく必要がある。
「パスワード無しのサーバーと同等ですが、いいですね。情シスにも
そのようなサーバを設置すると報告しておいてください。」と説明し
て了承受けたわけでもあるまい。

> 今の時代、パケットのエンディアンてリトルに合わせたほうが多数が幸せな気がする。
バカ? エンディアンが混在するなんて真っ平御免だ。
既存のネットワークと一切無関係な世界作るなら勝手に作れ。
796デフォルトの名無しさん:2012/01/27(金) 13:40:37.02
もうバイナリをやり取りするの辞めようよ
797デフォルトの名無しさん:2012/01/27(金) 14:13:14.04
リトルエンディアンにするより遥かに現実的だな。
798デフォルトの名無しさん:2012/01/27(金) 14:27:34.50
>>790
相手(サーバ)側の都合で、sh叩いてくれってのは今でもたまにあるが。
799デフォルトの名無しさん:2012/01/27(金) 15:03:17.16
>>798
rshでなくsshでやれ
といいたいんだと思うが、今時のrshはsshなのでどうでもいいかな
800デフォルトの名無しさん:2012/01/27(金) 15:05:10.58
>>794
IP層とかTCP層とかがビッグ代表格じゃね?
801デフォルトの名無しさん:2012/01/27(金) 16:31:41.71
>>799
え、そういう話?
なら、そう言えばいいのに。
802デフォルトの名無しさん:2012/01/27(金) 21:03:24.95
>>794
> 最近のビッグ陣営ってどことどこなの?
汎用機, power, 68k/coldfire, spark 辺りかな
# メモリーマップの左上が 0 番地な big の方がドキュメント書くときは楽
803デフォルトの名無しさん:2012/01/27(金) 22:19:19.09
数字の表記もリトルエンディアンの方が便利だったような気もするなぁ。
804デフォルトの名無しさん:2012/02/01(水) 02:06:59.57
>>802
良く落ちるスパークの綴りぐらいおぼえておいてくれよSPARCだよ
805デフォルトの名無しさん:2012/02/09(木) 16:07:15.48
WinSock2.0でパケットキャプチャをしたいんですけど
WSARecvで受信した後、いろいろ処理してて次のWSARecvまでに
間があると取りこぼしちゃうみたいなんですけど
取りこぼさないようにする方法はないでしょうか?
806デフォルトの名無しさん:2012/02/09(木) 16:09:45.79
ネットワークプログラミング以前の問題だなwww
807デフォルトの名無しさん:2012/02/09(木) 16:17:41.59
>>805
間を開けずに次のWSARecvを呼べばよいです。
808デフォルトの名無しさん:2012/02/09(木) 17:37:48.75
いろいろ処理を別スレッドにしてみました。
809デフォルトの名無しさん:2012/02/10(金) 08:34:51.98
取りこぼし減りました。でもやっぱり大量に来ると
だめみたいです。あきらめます。
810デフォルトの名無しさん:2012/02/25(土) 02:08:51.53
質問です。

adobeのRTMPにて映像のストリームと音源のストリームをサーバーに送信したいと思っています。
OSはWindowsでクライアント環境は.Net(C#で組もうと思っています)です。

FluorineFxというのを見つけたので、中のサンプルを動かして見て接続はできたのですが、その先が分かりません。
(Misc\RtmpClient\WindowsApplicationというのを動かしました)

映像のストリームと音源のストリームをサーバーに送る方法が分かる方がいらっしゃいましたらお願いします。
811デフォルトの名無しさん:2012/02/26(日) 12:40:41.57
>>799
> 今時のrshはsshなのでどうでもいいかな

油断禁物。普通に古典的なrshが入っているOSある。
812デフォルトの名無しさん:2012/02/26(日) 13:26:57.91
一か月近く前に終わった話題に、今頃になってトンチンカンなレスつけるってかっこ悪い。
813デフォルトの名無しさん:2012/02/26(日) 13:58:26.64
>>812
お前がかっこうわるい。反省しろ。
814デフォルトの名無しさん:2012/02/26(日) 14:02:06.36
http://ja.wikipedia.org/wiki/Real_Time_Messaging_Protocol
http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/rtmp/pdf/rtmp_specification_1.0.pdf

ここらへん調べてからやろうぜ?
最近ショートカットする奴が多すぎる
ライブラリの使い方ばっかり上手い奴らな。そいつらに俺は駆逐されていくわけだ
815デフォルトの名無しさん:2012/03/01(木) 16:37:28.68
ライブラリに限らない話だけど最近はちゃんと調べるのをさぼって
使い方だけ知って終わりにする奴が増えた気がする
816デフォルトの名無しさん:2012/03/01(木) 16:56:23.74
いいんだよそれで
すべての人がすべてを知る必要は無い
817デフォルトの名無しさん:2012/03/01(木) 20:09:58.76
でいずれ誰も知らないという時代が来るわけね
818デフォルトの名無しさん:2012/03/01(木) 20:33:02.01
料理は作れないがメシは食える
料理人が絶滅したらメシ食えなくなるかもな
そのころには料理ロボでもできてるかもしれんが
819デフォルトの名無しさん:2012/03/01(木) 22:13:18.24
技術は継承されない
悪習は蔓延する
820デフォルトの名無しさん:2012/03/01(木) 22:22:29.64
継承できないのなら先人たる我々の力不足か元々いらないものなんだろう
821デフォルトの名無しさん:2012/03/02(金) 13:02:12.73
winsockを使いたい奴はいると思うが、winsockの中身をいじりたい奴はあまりいないだろ。
全てを調べろというのは無茶だ。
っていうかソレ言うと、このスレの存在意義が無くなる。
822デフォルトの名無しさん:2012/03/02(金) 14:33:05.61
今度は中身をいじるとかわけわからんこと言い出すが出てきたなw
823デフォルトの名無しさん:2012/03/03(土) 05:52:58.55
>>821
君はwinsockの全てを知っているといいたいのだな。
824デフォルトの名無しさん:2012/03/03(土) 09:31:12.80
お前らは全部言わんと分からん子かw
825デフォルトの名無しさん:2012/03/04(日) 03:12:14.21
そりゃぁ

お らは わんと からん かw

一部だと解らんがな?
826デフォルトの名無しさん:2012/03/04(日) 03:35:55.61
馬鹿には無理
827デフォルトの名無しさん:2012/03/04(日) 10:18:11.66
目クソと鼻クソが争ってるな。
2chもレベルが下がったもんだ。
828デフォルトの名無しさん:2012/03/07(水) 21:41:38.61
ネットワークプログラミングをTDDでやろうとしていつも挫折するわ
829デフォルトの名無しさん:2012/03/08(木) 19:20:08.31
TestDrivenDevelopment
830デフォルトの名無しさん:2012/03/08(木) 22:33:39.26
>>828 RFC standard tracking 自体が TDD だと思うんだが
831デフォルトの名無しさん:2012/03/08(木) 23:18:30.00
思うんだが…と書かれても
832デフォルトの名無しさん:2012/03/09(金) 10:15:03.37
>>830
思ってるだけじゃダメだろ!
その思いをもっと表現しろよ!
833デフォルトの名無しさん:2012/03/17(土) 11:50:48.54
マルチキャストについて教えてくれろ
239.255.255.6と受信設定した場合、239.255.255.6宛のマルチキャストのみ届くの?
それとも、239.255.255.2、4、6宛のマルチキャストがすべて届くの?
834デフォルトの名無しさん:2012/03/17(土) 19:15:14.69
受けるほうがマルチキャストに対応してないといけないんとちゃう
835デフォルトの名無しさん:2012/03/17(土) 19:45:17.56
>>833
joinしていれば239.255.255.6宛のマルチキャストのみ届く。
836デフォルトの名無しさん:2012/03/18(日) 21:16:48.59
>>833
2と4はどこから出てきたのだ?
837デフォルトの名無しさん:2012/03/18(日) 21:32:29.05
>>836
6からだろ
838デフォルトの名無しさん:2012/03/18(日) 21:51:13.47
192.168.0.255/24のブロードキャストアドレス場合、
192.168.0.255 & 192.168.0.X == 192.168.0.X
が成立すればブロードキャスト範囲に含まれる!とかそういう発想でもあったのであろうか?
839デフォルトの名無しさん:2012/03/21(水) 16:26:23.89
正式に名前解決が出来ないことが保障されているドメイン
ってなんだっけか。 なんかあったよね?
840デフォルトの名無しさん:2012/03/21(水) 16:56:29.82
example ?
841デフォルトの名無しさん:2012/03/21(水) 19:56:16.01
example.comは解決できます。到達も可能です。
842デフォルトの名無しさん:2012/03/21(水) 21:19:42.75
まあいいや
chinko.unko とかぜったい解決できないだろ
843デフォルトの名無しさん:2012/03/22(木) 01:00:35.06
ttp://suika.fam.cx/rfc/ja-translations/rfc2606-ja.html
は解決とは別問題だったような
844営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 01:45:01.22
アッー!
AIJ社長の詐欺罪を必ず立証する!

官僚が他人の金を盗んでしゃーしゃーと「年収7千万は問題ない」
などと国会答弁するんだから人権以前の問題だな

完全にトチ狂ってるw
いかにうまく国民から巻き上げるかしか考えてないぞあいつら
UDPは以下の認識で合ってますか?

・送ったものが届かないかもしれない
・送った順番で届かないかもしれない
・受信されたものは受信側のPC内部で化けない限り正しい
・送られたパケットが重複して受信される事はない
3. ヘッダのチェックサムを信じる限りは。
それじゃ信頼性低いという用途であれば、
自分で信頼性を確保しましょう。
4. 重複します。
>>848
UDPってエラーパケットは闇に葬る仕様だと認識してますけど
どういう仕組みで重複するのでしょう?
850営利利用に関するLR審議中@詳細は自治スレへ:2012/04/01(日) 12:41:15.32
MAC層が誤認で再送することがある
>>850
ありがとう!
Ethernetが大きなお世話をすることがあるのか。
あ、Ethernetのコリジョンチェックの誤認識で再送される場合があるってことか。
・受信されたものは中継側で化けたりしてると受信側のPC内部で化けてる
>>853
え?
CRC合わなくなるんで破棄されて届かないんでは?
256分の1の確率でCRC合うんじゃないの?
CRCって16bitじゃないの?
Ethernetで使われるのは32bitのCRC
IPで使われるのが16bitのチェックサム
まあ細かいことはいいっこなしで
いや、細かいことも理解していないと
たまたま運がよくて動いているプログラムが出来上がる。
信頼性あるもの使えよ
>>849
IPやUDPの設計の基本は、
「(ルータ等が)こういう仕組みで~してしまうことがあるから」ということじゃなくて、
ピアトゥピアのパケット転送で保証できないことは何も保証しないということ。
つまり中間がどんな馬鹿な経路であっても、(ただし邪悪"mal-functional"な経路は仮定しない)
端末と端末だけでできることのみ保証する。
これにより経路設計に自由度を与えている。その代わりにTCP層その他で頑張ってる。
この設計はEthernetから大きな影響を受けてる。

残念だけどこうなってしまったねということじゃなくて、
雑多なネットワークを様々な種類の経路で接続するための中間(inter-)ネットワークとして開発され、
自由度を最大限に発揮するために、理屈詰めで設計されている。
消極的ボトムアップ設計ではなくて、色々と概念整理した後の積極的トップダウン設計です。
ハード屋だけどもバーストエラーあるから
ビット数から受ける印象よりも頻度高い。
バースト読んでまだ入るからな
864営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 11:33:05.82
ネットワークやるときはな、ガチでやるならな
相手が何をしてきても平気なように作れ

自分の家から出たらみんな敵
>>864
RFC793にもそう書かれているな
866営利利用に関するLR審議中@詳細は自治スレへ:2012/04/04(水) 12:19:26.44
apacheのヘッダーが長すぎるとメモリバカ食いして落ちるみたいなバグあったじゃん
あんなの最初作ったときに想定しろっつーの
サーバ側の一番単純な記述例=テンプレート、スケルトン等があるURLをお願いします。
単に固定応答でかまいません。
ですがシングルタスクタイプはNG
検索したのは複雑のばかりでした。
868営利利用に関するLR審議中@詳細は自治スレへ:2012/04/05(木) 16:45:16.64
870デフォルトの名無しさん:2012/04/13(金) 12:50:47.92
ソケット通信によるサーバプログラムを書いている初心者です。
ノンブロッキングで複数のクライアントを待ち受けるとき
select()を使うのとスレッドを使用するのはどちらがいいのでしょうか?
速度とか安全性とかそういう面も教えて頂きたいです。
871デフォルトの名無しさん:2012/04/13(金) 13:53:06.93
OSは?
872デフォルトの名無しさん:2012/04/13(金) 13:53:53.99
処理そのものはマルチスレッドにしなくていいんだろうか
873デフォルトの名無しさん:2012/04/13(金) 15:24:12.81
>>870
そんなん状況によるとしか言いようが無いだろ

なので、メインロジックはどっちの方法でも動くように書いとく
874デフォルトの名無しさん:2012/04/13(金) 18:19:02.52
>>870
aioも検討対象にしようぜ。
まあOSと言語によるが。
875デフォルトの名無しさん:2012/04/13(金) 20:30:15.81
>>870
スレッドが良くわかっているとすると
CPUコア数と同じスレッドとSelect()の組み合わせ
876デフォルトの名無しさん:2012/04/14(土) 09:38:18.67
謎なぞ?

複数クライアント同時処理したいとして、俺なら
select方式にするならシングルスレでブロッキングでやるし
マルチスレ方式にするならなおのことブロッキングでやるから
何言ってんのか分からん

unix 系とwindows では公式リファレンスが「非同期」と呼んでるものがズレてるからos分からんと混乱するし

作る気あるなら手動かしてから○○が上手く行かないと
聞くはずだし
覚えたての単語で書き込みたかっただけか?
877デフォルトの名無しさん:2012/04/14(土) 13:02:03.67
>>876
ソケットそのものはノンブロックにするのが基本だろ?
なに言ってんだ?
878デフォルトの名無しさん:2012/04/14(土) 13:21:21.88
1ソケット1スレッドならブロッキングで良いだろ。
879デフォルトの名無しさん:2012/04/14(土) 13:40:34.41
ブロッキングにしたらブロックしちゃうだろ
何考えてるんだ
880デフォルトの名無しさん:2012/04/14(土) 18:23:22.21
>>879
ブロックしちゃってもまずくなければブロックのままで良いのでは?
881デフォルトの名無しさん:2012/04/14(土) 18:35:04.00
>>879
メインのスレッドが「accept()→別スレッドにブン投げ」くらいしか
やることがないなら、ブロッキングで充分じゃないか。
(クライアント数が少ない場合)
882 ◆QZaw55cn4c :2012/04/14(土) 21:47:15.74
>>881
ブロッキングだと自分の側からスレッドを終了できないのがつらいところ(通信相手から QIET みたいなのを送ってもらう、とか取り決めておかないといけない)。
883デフォルトの名無しさん:2012/04/14(土) 22:08:04.59
>>876
例えばCPUが4コアなら4つのスレッドを立ち上げて
それぞれのスレッドでSelect()処理を行わせて多重化する。
884デフォルトの名無しさん:2012/04/14(土) 22:44:38.84
workerスレッド方式でやる場合、各workerがselect()するやり方って一般的だっけ?
そのとき、select()で監視するソケットは各workerに振り分けるんだろうか?それとも共通なんだろうか?
885 ◆QZaw55cn4c :2012/04/14(土) 23:05:54.21
>>884
常識的に考えて select() はひとつ、read() した結果をみてから各スレッドにわけるんじゃないかい?
886デフォルトの名無しさん:2012/04/14(土) 23:20:23.15
俺はselect()はひとつで、そこで起きたソケットをworkerへ渡してそっちでread/write
するのが普通かと思っていたが。
>>883>>885もやり方違うんだな。
887デフォルトの名無しさん:2012/04/14(土) 23:28:07.94
listen(), Accept()がひとつでAccept()で起きたソケットをworkerに振り分けて
select()で処理すりゃ良いんじゃない。
888デフォルトの名無しさん:2012/04/14(土) 23:33:52.94
いや、それだと1socket=1threadになるんじゃないか?
889デフォルトの名無しさん:2012/04/14(土) 23:38:16.28
>>888
select()って複数ソケット守りできるんでは
890 ◆QZaw55cn4c :2012/04/14(土) 23:46:01.90
>>888
サーバー側なら確かに 1 クライアント 1 スレッドになりますね。
http://hibari.2ch.net/test/read.cgi/tech/1295273862/27
http://codepad.org/wDEPkAtB
891デフォルトの名無しさん:2012/04/14(土) 23:48:56.38
>>890
nクライアントmスレッドに出来るだろ・・・
892デフォルトの名無しさん:2012/04/14(土) 23:49:10.41
>>889
そこで、1threadが複数のsocketを処理するworker方式で>>883はどうやってるんだろう
というのが元の質問だったんだが。
新しくaccept()されたソケットを各workerのどれかに振り分けるとした場合、

・1つのworkerが担当するソケットが複数読み書き可能になった場合、他のスレッドが遊んでいても
 直列的にしか処理できない
・そもそも割り振られたworkerがselect()で待ち受け中の場合、新しいソケットを待ち受けることができない

という問題がありそうに思えるけど。
893デフォルトの名無しさん:2012/04/15(日) 00:53:55.45
>>892
パイプで渡すから問題ない
894デフォルトの名無しさん:2012/04/15(日) 00:54:46.29
>>892
割り振ったworkerが偏っちゃった場合は諦める
895デフォルトの名無しさん:2012/04/15(日) 00:55:26.36
レイテンシのことでしょ
896デフォルトの名無しさん:2012/04/15(日) 07:06:24.33
>>894
なのにそれでもworkerスレッド内でselect()したいという理由がわからないんだが。
他になにかメリットがあるんだろうか?
それとやはり、そのやり方だと全スレッドがselect()でブロックされたまま新しいソケットを
処理できなくなることがあるように思うんだが。
897デフォルトの名無しさん:2012/04/15(日) 07:35:59.32
コルーチンで実装したことある
コルーチンの切り替え判断をC++のストリームに内臓させちゃって
結構使いやすいんだ
898デフォルトの名無しさん:2012/04/15(日) 07:42:15.64
でもなんだっけ、linuxでファイルをそのまま送るやつ。lighttpdの売り
カーネル内でなんかやってメモリコピーが減りましたってやつ
思い出したsendfileだ
899デフォルトの名無しさん:2012/04/15(日) 07:48:03.60
みみっちいよな。メモリアクセスがオーバーヘッドになることなんて
俺なんてサーバー作ったとき書きやすさのためにバッファ何層も重ねたぞ
chunk用のストリーム、・・・用のストリームって
900デフォルトの名無しさん:2012/04/15(日) 09:41:08.09
sendfileが軽減したのは、
単なるメモリアクセスじゃなくて、
カーネル/ユーザ空間間のコピーだよ。
901デフォルトの名無しさん:2012/04/15(日) 09:49:33.87
>>896
リスナーのソケットをSelect()に入れればAccept()拾えるんでは?
902デフォルトの名無しさん:2012/04/15(日) 09:56:02.40
そもそも、select()を使う場合は
recv()~何かの処理~send() が
短時間で終わらないと破綻する。
903デフォルトの名無しさん:2012/04/15(日) 10:03:01.10
どれかひとつのスレッドでリスナーを待ち受ける場合、他のworkerに
処理を渡せない場合があることは変わらない。
それとも、全部のスレッドで同じリスナーソケットをselect()する?
904デフォルトの名無しさん:2012/04/15(日) 10:05:51.25
>>902
そこでノンブロッキングI/Oですよ。
905デフォルトの名無しさん:2012/04/15(日) 10:11:33.93
>>904
複数ソケットでそれを行うとselect()の再発明になる。
906デフォルトの名無しさん:2012/04/15(日) 10:22:27.31
>>905
select()のかわりにノンブロッキングI/Oを使えと言っているわけじゃないよ?
select()でトリガを受けて、read/writeをノンブロッキングでやるのが最近の流行。
907デフォルトの名無しさん:2012/04/15(日) 10:45:26.33
>>903
今更何をw
908デフォルトの名無しさん:2012/04/15(日) 11:08:40.66
>>907
今更と言うか、結局、>>883のように各workerスレッドでselect()するという場合
どのスレッドでどのソケットを監視することになるのか、これだけ質問しても
よくわからなかったんだ。
今更というくらい明らかなことだったらちょっと教えてくれないか?
909デフォルトの名無しさん:2012/04/15(日) 11:29:24.83
>>906
select()でトリガ拾うとrecv()/send()はブロックされないのでは?
910 ◆QZaw55cn4c :2012/04/15(日) 11:41:59.98
>>906
>最近の流行
最近じゃない。初心者本
http://www.amazon.co.jp/dp/4874085032/
ですら昔からだ。
911デフォルトの名無しさん:2012/04/15(日) 11:47:43.93
ソケット廻りって結構古いもんを引きずってるからね。
912デフォルトの名無しさん:2012/04/15(日) 12:05:55.34
>>909
待ってれば読めるだろうけど多少なりともブロックされることはあるらしい。
913デフォルトの名無しさん:2012/04/15(日) 12:54:56.19
>>912
WSAEWOULDBLOCK をスルーすれば良いのんか。
914デフォルトの名無しさん:2012/04/15(日) 13:36:07.17
>>910
入門本に書いてあることが流行だと言ってる?
915デフォルトの名無しさん:2012/04/15(日) 13:51:27.59
>>908
1スレッド100本くらいで100スレッドくらい
これならそんなに無理なく1万本管理できる
916デフォルトの名無しさん:2012/04/15(日) 13:53:58.20
1万コネクションサポートするのに1万スレッド作ったら問題あるのだろうか?
OSにもよるだろうけど。。。
917デフォルトの名無しさん:2012/04/15(日) 14:03:06.10
32bitOSじゃ無理。64bitならもしかしたら大丈夫かも。
918デフォルトの名無しさん:2012/04/15(日) 14:09:25.25
>>916
無理がある気がするな。
Apacheなんかどういう実装になってるのだろう?
919デフォルトの名無しさん:2012/04/15(日) 14:20:28.63
>>915
いや、そういう問題じゃなくて。
その100本のスレッドのうちリスナーを監視するのが1本なのか全部なのか?
もしリスナーをselect()しないスレッドがあるとした場合、そいつらがselect()で
ブロックしてしまう問題をどうするのか?ってことなんだが。
もちろん、100本もスレッドを用意したのに状況によって1本しか走れない
ということも考えられるし。
920デフォルトの名無しさん:2012/04/15(日) 14:23:15.17
>>919
そのselect()とやらが何をブロックするのだ?
921デフォルトの名無しさん:2012/04/15(日) 14:39:07.53
>>917,918
そうですね。当然でした。
調べてみると、例えばWindowsのCreateThreadで作れるのは
最大で1プロセス2028スレッドとありました。
922デフォルトの名無しさん:2012/04/15(日) 14:45:56.01
当然そのスレッドを、だが。
もしかして、timeout=0でブン回すという使い方なのかな?これ。
923デフォルトの名無しさん:2012/04/15(日) 14:51:37.06
>>922
そのスレッドでアイドリング処理をしないのならブロックしても問題なかろう。
recv(),send(),accept()の処理以外で何をするのだ?
924デフォルトの名無しさん:2012/04/15(日) 15:05:42.39
いや問題あるだろ。
1スレッドが100ソケット受け持ったとして、そこで複数のソケットが読み書き可能に
なったとしても他のスレッドは何もできないんだから。
925 ◆QZaw55cn4c :2012/04/15(日) 16:52:43.69
>>914
入門書であること力点をおいているのではなく、1990年代の書籍であることに力点をおいています。
1990年代にしめされている手法が「最近はやっている」とは考えにくいでしょう、普通。

関係ありませんが、この本、ネットワークバイトオーダーに問題はあるものの、 fj でも一定の評価がついていましたね。
926デフォルトの名無しさん:2012/04/15(日) 18:04:19.36
いやー、昔から使えたということと流行は関係ないでしょ。
一昔前ならわざわざ面倒なノンブロッキングI/Oを使うよりも
上の人のようにスレッド+ブロッキングI/Oの方が人気があった
ような気がする。さらに前だとfork()が主流だったよねぇ。
927デフォルトの名無しさん:2012/04/15(日) 18:27:54.74
1992年でfjってのも微妙な話だなw
928デフォルトの名無しさん:2012/04/15(日) 18:33:40.53
C10Kみたいなことが言われて、selectやpollの性能向上が始まったのが、
1990年代後半からだよ。本格的には2000年代入ってから。
マルチスレッド+ブロックI/Oやforkによる実装も普通に行われていた。

非同期I/Oの優位性は80年代から言われていたけど、(X11のプロトコルがそうだし)
低レベルAPIとして登場したのはその後だね。
929デフォルトの名無しさん:2012/04/15(日) 20:19:03.11
>>924
そうならないように分配すればいい
その上でどうしてもそうなったらあきらめればよろしい
930デフォルトの名無しさん:2012/04/15(日) 20:20:01.53
>>919
リスナーは1本で。
各ワーカーにはパイプで適当にソケットを送りつければ良い。
931デフォルトの名無しさん:2012/04/15(日) 20:26:49.72
select使うのにlistener必要?
分配にポリシーを実装する必要なければ、複数のworkerが直接同時にselectすればいい。
932デフォルトの名無しさん:2012/04/15(日) 20:34:20.91
>>931
だれも待ち受けしなかったらサーバにならなくね?
933デフォルトの名無しさん:2012/04/15(日) 20:38:39.05
934デフォルトの名無しさん:2012/04/15(日) 20:40:52.10
スレッド1万あるよりはマシ
935デフォルトの名無しさん:2012/04/15(日) 20:46:01.12
>>928
Winsock FAQ
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/io-strategies.html
には 「経験則3: select()は避ける」 とあるけど
これの元ネタの英文はかなり古いものなのかな。
936デフォルトの名無しさん:2012/04/15(日) 20:47:38.09
WIndowsのselectは性能悪かったしね。たぶん今もそうだけど。
937デフォルトの名無しさん:2012/04/15(日) 20:49:17.95
>>935
winならそれでいいんじゃね?
unixlinuxには選択肢ないからな
938デフォルトの名無しさん:2012/04/15(日) 20:50:29.14
>>930
なるほど、やりかたはわかった。ただ、わざわざそうすることのメリットがよくわからないな。
activeなソケットの偏りで効率が落ちる問題は残るし、特にプログラミングが簡単になるようにも
思えないし。

>>929
「そうならないように」って、無理だろそりゃ。どのソケットがactiveになるか事前に判断できる
わけがないし。
939デフォルトの名無しさん:2012/04/15(日) 20:51:19.09
>>936-937
スレッド嫌いなのでselect()で実装してやったけど
なんの問題もなくサクサク動いたよw

Winsock FAQってWindows 9x の時代のものじゃないのかな。
940デフォルトの名無しさん:2012/04/15(日) 20:51:57.12
UNIXだとfdが多くなったらselectより、poll, epoll, /dev/poll, kqueueでしょ。
意外にもfd maskのbit演算がボトルネック!
941デフォルトの名無しさん:2012/04/15(日) 20:53:25.28
>>938
C10Kのようなのだとスレッドのオーバーヘッドのが大きくなるから。
クライアント数が少ないのならスレッド実装のが楽
942デフォルトの名無しさん:2012/04/15(日) 20:53:27.29
95系のselectは性能どころか仕様にも問題あった。
詳しくは古いwinsockのドキュメント読んでくれ。
943デフォルトの名無しさん:2012/04/15(日) 20:56:10.86
>>931
こっちは同時select()か。全スレッド同時に起きるけど、mutexを奪った1スレッドだけが
処理するという形になるわけかな。
944デフォルトの名無しさん:2012/04/15(日) 21:00:20.71
>>943
それではスレッドにする意味がないような。
945デフォルトの名無しさん:2012/04/15(日) 21:06:57.74
>>943
違うよ。
同時selectしているスレッドの一つだけが起きる。
どれが起きるかはスケジューラ任せ。
自分で選びたいならlistener/schedulerを作らないと仕方ない。

read等も同様の仕様。ほとんどのUNIXが。
946デフォルトの名無しさん:2012/04/15(日) 21:50:18.53
>>945
そうだっけ?それだとレベルトリガじゃないような気もするが、正直1つのソケットを複数のスレッドで
同時にselect()するなんてやったことなかったから勘違いしていたかもしれん。
であれば、どのスレッドにどのソケットを監視させるかという割り振りも必要なかったといことか。
947デフォルトの名無しさん:2012/04/15(日) 22:03:10.33
forkするマルチプロセスサーバが一つのsocketで全員acceptしてますよ。
じゃないと同じポート番号にならないし。
もちろん起きるのは一つのプロセスだけ。
948デフォルトの名無しさん:2012/04/15(日) 22:53:17.93
>>947
Unix 系はいいんだが, WinSock ってそのへんどうなってんの?
# 明日から Windows でネットワークプログラムするはめになってしまった orz
949デフォルトの名無しさん:2012/04/15(日) 23:07:41.22
>>938
1万スレッド起こせるならその方が楽だけどね
普通は無理っしょ
950デフォルトの名無しさん:2012/04/15(日) 23:09:42.76
>>938
事前に判断なんて無理なので、無理しないで淡々と振り分ける。
偏ったらあきらめるか、ソケットを余力がある他のスレッドに投げる。
951デフォルトの名無しさん:2012/04/15(日) 23:11:13.18
Winsockの場合は、対象となるWinsockのバージョンのドキュメントをしっかり読んでください。
特にXPでは~、Vistaでは~、7では~との注意書きは必ず読みましょう。
読まない人はプログラム書くなと言いたくなるくらい細かい違いが多い。
952デフォルトの名無しさん:2012/04/15(日) 23:11:39.79
>>940
今はそこはどうでもいい
953デフォルトの名無しさん:2012/04/15(日) 23:18:52.51
>>945
これ本当?どこかにリファレンスがあるなら教えて欲しいな。
例えば、ソケットがread readyになって起こされたスレッドがreadしなかった
場合とかどうなるの?
954デフォルトの名無しさん:2012/04/15(日) 23:25:42.66
別に何も起こりませんが?
955デフォルトの名無しさん:2012/04/15(日) 23:35:15.90
>>954
「何もない」があるのよ!

epollとかでエッジトリガとかだと何もしないがゆえに
問題になることはあるかも
956デフォルトの名無しさん:2012/04/15(日) 23:44:57.62
>>954
理解できないです。
select/pollはレベルトリガですよね?
起こされたスレッドがreadしないでsleepしたら同じsocketでselectしている
別のスレッドが起きない?
957デフォルトの名無しさん:2012/04/15(日) 23:45:51.97
>>956
それでいいだろ
Aのスレッドでなにも怒らないからBのスレッドで怒り爆発だろ
958デフォルトの名無しさん:2012/04/16(月) 14:16:21.10
この程度の基本的な枠組みの常套手段すら確立されてないなんて・・・
959デフォルトの名無しさん:2012/04/16(月) 15:25:23.72
されてるってw
2ちゃんねるは世界の全てではない。
960デフォルトの名無しさん:2012/04/16(月) 16:11:19.98
すいません。よくわからないので具体的に教えてもらってもいいですか?
unixでCPUコアが4つあって
1000人までクライアントを待ち受ける場合
・スレッドを4つ作る
・各スレッドでselect()をする
ってことですか?
その場合、各スレッド250人までをどうやって割り振ればいいんでしょうか?
均等に割り振る事ができるんでしょうか?
961デフォルトの名無しさん:2012/04/16(月) 16:17:40.24
>>959
んじゃ、バシッと常套手段教えてやれよ
962デフォルトの名無しさん:2012/04/16(月) 16:19:44.02
別にスレッドは4つである必要は無い。
スレッドを作らなくてもいい。
振り分けは適当でいい。
全部スレッドでもいい。
963デフォルトの名無しさん:2012/04/16(月) 16:24:25.45
ワーカー数と各ワーカーの担当数の積が
最大せっちゃん数を
上回ってればどうでもいい
964デフォルトの名無しさん:2012/04/16(月) 16:24:50.62
>>960
> 1000人までクライアントを待ち受ける場合

処理する内容を詳しく言わないとわからない。
スレッド数、ジョブの回し方は処理する内容に依存する。
965デフォルトの名無しさん:2012/04/16(月) 18:51:41.92
4人対戦のゲームのサーバを想定しています。
1000人までのロビーがありゲームする部屋が10あるとします。
4人集まったらゲーム開始、サーバではゲームの進行やカードを配ったり
といった処理もさせます。
こんな感じのことをしたいのですが、どうでしょうか?
966デフォルトの名無しさん:2012/04/16(月) 19:54:42.64
どうぞご自由に
967876:2012/04/16(月) 22:49:16.49
うむ。どうやっても出来るから、まずは手を動かして作れよ。

OSがUnix系なら、Windowsに関する話は参考にならないよ。
>3 先頭のリチャードスティーブンスの本を、超おすすめする。
お前の人生上絶対、もととれる。

参考までに、俺なら
・4プロセス。
・各プロセスは別ポート番号。全く別のマシンであるかのように設計。
・1プロセスは1スレッド。
・長いトランザクションで1クラがサーバを占有しないよう
トランザクションを中断・再開できる工夫をする。
で組む。

マジレスだが、プロトタイプを各方式で作って実測し、
本チャンの方式を決定するのが王道だぞ。どんな案件でも、
方式設計でプロトの実測値がないと空中戦(机上の空論ばかりで
結論が出ない)になる。

「均等に割り振ることができるんでしょうか?」じゃねぇよ
アプリの特性を考慮してお前がそれを考えて、比較して、決定するの。
そんなレベルで1000人とか言ってないで
まず250人処理できる1個のサーバを作るほうが先。
968876:2012/04/16(月) 22:57:49.50
もし本当に負荷分散を勉強しいなら、「ロードバランサ」製品が
どうやってるかを学んで、そこで振り分け先の「サーバ」を
「プロセス」に置き換えて考えてみやがれ。
参考まで: http://www.networld.co.jp/slb/load_sharing.htm

(俺は、お前さんが今やるべき事は違うと思うけどね)


>877 俺と君は意見が違うようだが、
Unixでselect(epoll等含む)するならブロッキングのままのほうが、
俺の経験上は楽だった(テスト工程とか)。
君がどうつくるのが好きかは君次第だから、君の言葉で語れ。
俺は否定しない。

>879 ソケットはブロッキングモードで、selectすれば
ブロックしないよう作れるよ。"Unixでは"その方が普通。
てかselectってそのためのものだよ。
syn reset してくる、普通じゃないクライアント(ポートスキャナ等)
の対策とか、高度な話はいろいろあるけど、今はそういう話じゃない
から割愛します。
969デフォルトの名無しさん:2012/04/16(月) 23:24:37.22
>>968
そう。だからソケットはノンブロックが基本なんだよね。
select使うならなおのことブロッキングにしとく意味がない。
970デフォルトの名無しさん:2012/04/17(火) 11:08:39.89
やっぱ、この程度の基本的な枠組みの常套手段すら確立されてないじゃんw
971デフォルトの名無しさん:2012/04/17(火) 11:14:18.58
>>970
Windowsは大変だよね
972デフォルトの名無しさん:2012/04/17(火) 16:16:27.35
>>965
俺なら、
・部屋数プロセスを起動
・ゲーマごとにスレッド
・その他必要なプロセス(対戦者入り口、割り当てなど)とスレッド(カード配布する親など)。
ポートは、
・入り口 (*1)
・部屋ごと
でacceptして、前者のプロセスから後者のアドレス/ポート番号を聞き、
部屋プロセスとゲーマのクライアントは直接接続を張る。
こんなところから始めてみる。

開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
部屋割り当てロジックは後から作る。
上の構成なら分離されてるので、独立に開発できる。
973デフォルトの名無しさん:2012/04/17(火) 16:18:02.55
>>970
workerの仕様次第だから。
974デフォルトの名無しさん:2012/04/17(火) 17:05:38.13
つまり、このスレの住人は、workerの仕様もわからないのに自分語りをはじめてしまうお馬鹿さんばっかということだね
975デフォルトの名無しさん:2012/04/17(火) 17:08:05.21
そうだね。質問の直後はひどかったね。
976デフォルトの名無しさん:2012/04/18(水) 08:13:22.36
>970
そうだよ。だからどうした。スタートはそこからだ。

それを理由におまいさんがネットプログラムやめてくれても
全く構わないし、「俺がガンダムだ」宣言して
各OS統一できる基本的な枠組みを作ってくれてもいいぞ。

そしたらおっちゃん嬉しくて涙出る。
みんな夢見て挫折した、死屍累々の歴史があるの。

俺はWindowsの64ソケット制限がガンだと思うんだが、
でもその分WinはUnixのAIOより非同期が明後日の方へ進化して
カッケェことになってるしなぁ。
977デフォルトの名無しさん:2012/04/18(水) 10:43:04.21
>>976
だからどうしたって、されてないでしょと言ったらされてると主張した奴がいたから、
やっぱりされてないじゃんと言っただけなんだけど

なんか気に障ることでもあんの、おっさん
978デフォルトの名無しさん:2012/04/18(水) 11:11:24.05
>>977
なんだ、ただのゆとりかよ
979デフォルトの名無しさん:2012/04/18(水) 13:46:26.16
>>972
>開発では、最初は1プロセスのみで、1部屋4人だけのサーバを作る。ロビーとかなし。
スレッド(カード配布する親など)、これはゲーム進行をコントロールしている
スレッドって意味ですか?
それプラス4人の計5つのスレッド構成でやる感じでしょうか?
スレッドを駆使してやる理由を教えて頂いてもいいですか?
select()では駄目でしょうか?
980デフォルトの名無しさん:2012/04/18(水) 13:58:04.89
>>979
名前付けて。
無視するから。
981デフォルトの名無しさん:2012/04/18(水) 14:03:08.69
やっぱりIDいるよな
982デフォルトの名無しさん:2012/04/18(水) 14:11:35.38
もはやこのスレとは論旨が異なってきてる気がするな。
妥当なスレってないのかな。
983デフォルトの名無しさん:2012/04/18(水) 16:54:52.45
>>980
次スレよろしく
984デフォルトの名無しさん:2012/04/18(水) 17:18:10.24
>>983
たてた。

ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
985デフォルトの名無しさん:2012/04/18(水) 19:43:45.92
>>976
64ソケット制限っておっちゃん浦島太郎なのか?
986デフォルトの名無しさん:2012/04/18(水) 19:53:44.11
>>979
対ゲーマーのロジックに専念出来るから。
ちなみにマルチスレッド構成と、
selectは共存しうる。
1スレッドが複数の(I/O)イベントを対象いすることがありうるから。
987デフォルトの名無しさん:2012/04/18(水) 20:15:00.17
イベントで全部済ますのは作るの楽でいいな
988デフォルトの名無しさん:2012/04/18(水) 21:30:51.25
>>986
ありがとうございます。勉強になりました。
979を指針にして作成してみようと思います。
989デフォルトの名無しさん:2012/04/18(水) 21:33:29.51
>>987
作るのはスレッドにしてしまったほうが楽だが。
990デフォルトの名無しさん:2012/04/18(水) 21:33:36.00
>>988
間違いました。972でした。
ありがとうございました。
991デフォルトの名無しさん:2012/04/18(水) 22:08:47.58
>>984
おつうめ
992デフォルトの名無しさん:2012/04/19(木) 04:15:54.52
うめ
993デフォルトの名無しさん:2012/04/19(木) 13:24:31.35
新スレ誘導&うめてんてー

ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
994デフォルトの名無しさん:2012/04/19(木) 15:13:02.59
うめす
995デフォルトの名無しさん:2012/04/19(木) 20:39:50.89
協力うめ
996デフォルトの名無しさん:2012/04/19(木) 20:59:14.79
佐川梅三郎
997デフォルトの名無しさん:2012/04/20(金) 07:27:18.02
うめ
998デフォルトの名無しさん:2012/04/20(金) 11:26:16.88
1
999デフォルトの名無しさん:2012/04/20(金) 11:26:33.36
2
1000デフォルトの名無しさん:2012/04/20(金) 11:26:48.95
3
ダー
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。