トップページ⇒tech
1001コメント301KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/04/18(水) 17:15:34.85
主にソケットに関しての質疑応答スレッドです。

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/
0002デフォルトの名無しさん2012/04/18(水) 17:16:02.36
過去スレ:
Port27 ttp://toro.2ch.net/test/read.cgi/tech/1293284816/
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
0003デフォルトの名無しさん2012/04/18(水) 17:16:24.06
図書コーナー:
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/
0004デフォルトの名無しさん2012/04/18(水) 17:16:40.78
マスタリング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/
0005デフォルトの名無しさん2012/04/18(水) 17:16:56.80
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
0006デフォルトの名無しさん2012/04/18(水) 17:17:11.11
★プログラミング
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/
0007デフォルトの名無しさん2012/04/18(水) 17:17:30.46
★ツール類
ethereal - http://www.ethereal.com/
Wireshark - http://www.wireshark.org/
tcpdump - http://www.tcpdump.org/
Windump - http://netgroup-serv.polito.it/netgroup/tools.html
WinPcap - http://www.winpcap.org/
pathchar - ftp://ftp.ee.lbl.gov/pathchar/
pchar - http://www.employees.org/~bmah/Software/pchar/
Packetyzer - http://www.networkchemistry.com/products/packetyzer/
libevent - http://www.monkey.org/~provos/libevent/

★プロトコル
TTCP
 http://www.sean.de/Solaris/ttcp.html
 http://www.kohala.com/start/ttcp.html
UDP Hole Punching
 http://homepage3.nifty.com/toremoro/p2p/firewall.html

★IP, TCP実装
http://www.iti.fi/documentation/miniip.html
http://www.sics.se/~adam/uip/
http://www.codeguru.com/Cpp/I-N/network/tcpip/article.php/c5447/
http://www.geocities.jp/bruce_teller/security/garakuta.htm
0008デフォルトの名無しさん2012/04/18(水) 17:19:53.47
前スレ修正し忘れた。

ネットワークプログラミング相談室 Port27
http://toro.2ch.net/test/read.cgi/tech/1293284816/
0009デフォルトの名無しさん2012/04/21(土) 14:33:05.88
VBでパケットキャプチャをするプログラムを作ったんですが
PCによってキャプチャできたりできなかったりします。
ネットワークカードによってキャプチャできないような
ものがあるのでしょうか?
0010デフォルトの名無しさん2012/04/21(土) 23:21:30.10
>>9
ワイヤーシャークとかでキャプチャしてみれば自分のプログラムが
おタコなのかどうかわかるだろう。
0011デフォルトの名無しさん2012/04/21(土) 23:59:44.90
>>9
いいえ。
0012デフォルトの名無しさん2012/04/22(日) 02:44:51.03
>>9
NICの指定と設定が間違ってる
0013デフォルトの名無しさん2012/04/27(金) 22:47:04.63
質問があります。

プライベートアドレスは、ifaddrsなどで取得できるのはわかるのですが、
グローバルアドレスの場合は、プログラムからどのように取得すればよいのでしょうか?
ルータにアクセス?して取得する方法があるのでしょうか。。。
0014デフォルトの名無しさん2012/04/27(金) 23:42:44.34
確実な方法としては、外部につないでその結果を返すサーバを作り運用する
0015デフォルトの名無しさん2012/04/27(金) 23:57:22.15
授業科目案内トップ > 授業科目案内 教養学部 > 専門科目 産業と技術専攻 > ネットワークとサービス('12)http://www.ouj.ac.jp/hp/kamoku/H24/kyouyou/A/sangyo/s_1554581.html
0016デフォルトの名無しさん2012/04/28(土) 00:26:20.73
>>13
プライベートアドレスもグローバルアドレスも取得方法は同じ。
0017デフォルトの名無しさん2012/04/28(土) 01:43:36.92
多段NAT
0018デフォルトの名無しさん2012/04/28(土) 07:08:51.41
MIT NAT 水戸納豆
0019デフォルトの名無しさん2012/04/28(土) 10:24:23.98
>>13です

皆さん、ありがとうございました。
試行錯誤して試してみます!
0020デフォルトの名無しさん2012/04/29(日) 14:40:57.11
sendとかwriteとかで、すぐに送信しないでちょっとだけ待つロジック
あれなんて名前だっけか? どわすれした
0021202012/04/29(日) 15:02:57.11
思い出しました。 ありがとうございました。
0022デフォルトの名無しさん2012/05/01(火) 11:11:35.62
俺は思い出せない、、、なんだっけ
0023デフォルトの名無しさん2012/05/01(火) 13:16:25.30
は?
帯域制限のこと?
ロジック?
0024デフォルトの名無しさん2012/05/01(火) 13:21:49.64
>>23
アルゴリズムな
0025デフォルトの名無しさん2012/05/01(火) 13:21:51.11
NAGELアルゴリズムのことだろ
0026デフォルトの名無しさん2012/05/01(火) 13:35:30.16
ナゲル?
0027デフォルトの名無しさん2012/05/01(火) 13:40:36.97
なげたらあかん
0028デフォルトの名無しさん2012/05/01(火) 13:40:38.10
なんだスタック側の話か
アプリケーションかと思った
0029デフォルトの名無しさん2012/05/01(火) 13:41:03.90
そう。パケットを「投げる」からきている。
0030デフォルトの名無しさん2012/05/01(火) 13:43:40.61
本人面白いと思ってるんだろうなぁ…
0031デフォルトの名無しさん2012/05/01(火) 14:22:53.45
ニコニコ生放送で高速で
アカウント変更とコメントを出来るツールって作れますか?
0032デフォルトの名無しさん2012/05/01(火) 14:37:26.38
にしこり
0033デフォルトの名無しさん2012/05/01(火) 14:43:00.78
バーレーン
0034デフォルトの名無しさん2012/05/01(火) 15:36:38.49
>>30
バーカ
0035デフォルトの名無しさん2012/05/01(火) 15:46:32.07
BT PANて使ったこと無いんだが、
あれはこのスレの守備範囲なのか?
いちおうソケットだよな?
0036デフォルトの名無しさん2012/05/01(火) 15:56:58.94
>>35
プログラミングは関係ないからなぁ・・・
0037デフォルトの名無しさん2012/05/01(火) 16:52:01.71
>>34
悔しかったの? (w
0038デフォルトの名無しさん2012/05/01(火) 17:28:34.62
>>37
子ね低脳
0039デフォルトの名無しさん2012/05/01(火) 18:32:38.05
>>38
>>37
0040デフォルトの名無しさん2012/05/02(水) 15:13:50.42
_ひ
0041デフォルトの名無しさん2012/05/04(金) 14:32:56.20
_ふ
0042デフォルトの名無しさん2012/05/04(金) 14:36:54.17
ファイル転送するアプリを作っています。

サーバ側に受信ポートを変えて同じEXEを10個立てて、
1000個のクライアントプロセスから10kbのファイルを10個ずつ送信を
行っているのですが、6000ファイルくらい送ると、
クライアント側のconnectがエラーになり始めます。
※connectのerrnoは2(no such file or directory)

これはサーバ側がいけないんでしょうか。
サーバ側のタスクマネージャを見ていても、CPUは張り付いていないし
メモリも食ってないし、帯域もそんなに使用していません。

調査方法でも良いので、どなたかわかりませんでしょうか。
0043デフォルトの名無しさん2012/05/04(金) 14:40:49.50
>>42
TIME_WAIT状態のが沢山残っているのでしょう。
netstatで見るとわかると思います。

これを防ぐにはTIME_WAIT時間を短くするか
クライアント側からshutdownさせれば良いはず。
0044デフォルトの名無しさん2012/05/04(金) 14:42:19.83
>>42
OS 位書けよ…

まあ、OS 書かない奴の大半は Windows だろうからそれを仮定するけど、
connect( ) 失敗時に見るのは、errno じゃなくて、 WSAGetLastError( )
じゃないのか?
0045デフォルトの名無しさん2012/05/04(金) 14:48:58.41
>>44
OSはz/OSです
0046デフォルトの名無しさん2012/05/04(金) 15:01:03.82
>>43 たしかに TIME_WAIT と CLOSE_WAIT が沢山ありました。。。

>>44 すみません、Windows2008ServerR2 同士 です

0047デフォルトの名無しさん2012/05/04(金) 15:03:18.36
クライアント側の問題だと思うよ(TIME_WAIT累積によるローカルポート枯渇)。
クライアント側もz/OS?何台のマシンでやってるの?
0048デフォルトの名無しさん2012/05/04(金) 15:06:59.57
>>46
そんなOSないしw

TIME_WAIT周りに不具合があるみたいだな。
http://salaryman-life.blogspot.jp/2012/04/windows-server-2008-timewait.html

CLOSE_WAIT が残っているのはロジック見直した方がよいと思う。
切断手順がおかしいか
0049デフォルトの名無しさん2012/05/04(金) 15:07:06.40
>>47 クライアント側もWindows2008serverです。
   (z/OSではないです)
0050デフォルトの名無しさん2012/05/04(金) 15:10:30.03
TIME_WAIT と CLOSE_WAIT が両方あるってどんな繋ぎ方してるのよ?
0051デフォルトの名無しさん2012/05/04(金) 15:11:59.55
なんだよWindowsかよ(このやろ!!>>45)。
レジストリで
・使えるローカルポート数を増やす(デフォルト5000個のはず)
・TIME_WAIT時間を短くする(Windowsのデフォルトは凄く長かったと思う)
くらいしかないだろうなあ
0052デフォルトの名無しさん2012/05/04(金) 15:15:52.41
>>51
OS/360にしとけば良かったw
ゴメリンコ
0053デフォルトの名無しさん2012/05/04(金) 15:17:12.23
>>46
だから、Windows 系なら errno じゃなくて、WSAGetLastError( ) 見なよって
書いてあるんだが…

話は、それからだと思う。
0054デフォルトの名無しさん2012/05/04(金) 16:16:18.79
>>53 すみません、遅くなりました。
   WSAGetLastErrorだと、 10061  が返ってきています。
0055デフォルトの名無しさん2012/05/04(金) 16:58:27.34
>>54
10061 WSAECONNREFUSED Connection refused.
まんまですな。

で、Shutdown() しているのはどちらから?
0056デフォルトの名無しさん2012/05/04(金) 17:11:54.57
>>54
接続切断回数を減らすか
>>51 の言っているようにレジストリをつつくかだな
TcpTimedWaitDelay MaxUsePorts ぐぐれ粕
0057デフォルトの名無しさん2012/05/04(金) 18:32:50.40
>>54
WSAECONNREFUSED だから、サーバー側で Listen しきれてないんだろうな。

他の人も言ってる様に CLOSE_WAIT 状態が続いてるのは普通はないから、
クローズ処理を見直したほうがいいと思う。

自分で良くわからないなら、まずはサーバー側とクライアント側の netstat の
概要と、サーバー/クライアントの切断処理を晒せばここの人が何とかしてく
れるかも。
0058デフォルトの名無しさん2012/05/04(金) 18:42:06.98
そもそも切断処理をしていないとか。
0059422012/05/07(月) 22:59:56.89
すみません、諸事情でマシンをさわれませんでした。

ソースコードを見直したところ、connectリトライや切断の際に
処理がおかしい箇所があったため、見直して修正しました。

そしたら、CLOSE_WAITはなくなりましたが、TIME_WAITは
かなり発生しています。
また、connectエラー(10061)は相変わらず出ます。
レジストリをいじって、TcpTimedWaitDelay を30にしたところ
だいぶ減ったのですが、10061エラーはあまり改善していません。

調べてみたところ、TIME_WAITは出ても問題ない、どうやっても
出てしまうもの。という記述を多くみました。
とすると、やはりTCPの仕組み上の限界なのでしょうか。
0060デフォルトの名無しさん2012/05/07(月) 23:41:56.30
>>59
CLOSE_WAITとTIME_WAITが同時にあるのはおかしい常態だけど
どんな接続や切断の仕方している?
接続はクライアントから? サーバから? 切断は?
どの位の時間間隔で接続数は?

それからTIME_WAITは先に切断要求を出した方に残るのは正常な状態。
0061デフォルトの名無しさん2012/05/07(月) 23:44:16.25
ん? connectリトライって何やってんの?
tcpはリトライなんかしちゃいかんよ。
0062デフォルトの名無しさん2012/05/07(月) 23:57:52.99
ネットワークのトラブルとかで、connect( ) が一時的にエラーになることもあるから、
常にリトライしないとか言うアホは放置で。
0063デフォルトの名無しさん2012/05/07(月) 23:58:23.77
>>59
TcpTimedWaitDelayが30秒だと30秒以内の間隔で連続して
接続・切断を繰り返すとソケットが破綻するのはわかるかな?
0064デフォルトの名無しさん2012/05/08(火) 00:09:21.35
>>62
ごめん、言葉足らずだった。
connectから応答がないときのリトライ。
接続できないからと数秒間隔でリトライとか。

Windowsの場合、connectは20秒なんで20秒で繋がらない
状態の場合は直ぐにリトライしても繋がることはほとんどないが。
0065422012/05/08(火) 00:25:29.88
>>60
CLOSE_WAITはなくなって、TIME_WAITだけある状態です。
・接続は、クライアントからconnectしています。(bind無し)
・切断は、クライアント
      →セッション終了を示すコードをsendで送ったあとは
       自らshutdown(cs,2); closesocket(cs); で閉じてます。
     サーバ
      →セッション終了を示すコードがrecvで届いたら、
       こちらも自らshutdown(cs,2); closesocket(cs); で閉じているので
 
なので、切断は同期があまり取れていないのですが、まずいでしょうか。


>>61
connectでエラーが帰ってきたら、5秒待って再度connectしています。
これはまずいでしょうか。。。

>>63
確かに。。。明らかに30秒以内で接続・切断を繰り返しています。
10KB*10ファイルを1セッションで送るプロセス*1000個を同時起動
なので、やはり多すぎでしょうか。。。
0066デフォルトの名無しさん2012/05/08(火) 06:34:00.32
>>65
shutdown は SD_SEND でやるのがお行儀の良いやり方だけど
SD_BOTH でも問題は発生することはないんじゃないかな。

>セッション終了を示すコードをsendで送ったあとは
これは何?

connect()は問題なし。

>なので、やはり多すぎでしょうか。。。
切れ目無く連続でやると破綻するでしょうな。
0067デフォルトの名無しさん2012/05/08(火) 07:14:08.37
例えば、だけど
0xFFを「終了の合図」と決めておいて

クライアント側は
 0xFFを送る → shutdown
サーバー側は
 0xFFを受け取る → close
ということだろう。

普通に作るならば、クライアント側から切断するのであれば
サーバー側はCLOSEのサイン(recvが0)を待てば良いだけな気がするし
そもそもSENDをshotdownするなら、終了の合図なんて要らないんだけどね。
まあ、将来の可能性も含め、切断せずに繰り返し送受信することを考慮するなら、
そういうやりかたもあるかとも思うけど、
切断時に、両方ともCLOSE前に自分で切ってるのはどうなんだろうね。
0068デフォルトの名無しさん2012/05/08(火) 07:35:58.05
C#なんですが
データグラム ソケットで送信されたメッセージが、内部のメッセージのバッファーまたはほかのネットワークの制限を超えています。または、データグラムの受信に使われるバッファーがデータグラムより小さく設定されています。
というエラーが出ることがあるんですがこれはどうすればいいでしょうか?
0069デフォルトの名無しさん2012/05/08(火) 11:30:47.29
分割するとか
C#に限らないんじゃ?
0070デフォルトの名無しさん2012/05/08(火) 12:24:29.64
Socket.Receiveするときにバイト数を指定すればいいですかね
指定した SocketFlags を使用し、バインドされた Socket から指定したバイト数のデータを受信して、受信バッファ内の指定したオフセット位置に格納します。
0071422012/05/08(火) 13:19:51.41
>>67
仰るとおりの終了の合図をやっています。

切断時に両方からshutdown , closesocket はまずいのでしょうか。
あまりそのあたりに触れているサイトが無くて困っております。

また、今再度確認していて気づいた点があります。
1000プロセスの終盤(残り10プロセスあたり)になると、
connectエラーは起こらないのですが、recv(の前のselect)が
5秒待っても届かずタイムアウトが猛烈に発生します。

この場合、TIME_WAITは30秒経過したからか、殆どなくなって
ESTABLISHEDばかりですが、なぜか非常にrecv,sendが遅く
なっておりました。

NICやHUBが限界なのかなと思えてきました。。。
0072デフォルトの名無しさん2012/05/08(火) 13:57:00.46
その切断の仕方だとサーバ側も(タイミングにより)TIME_WAITになるよね?
>>67が言ってるように、サーバー側の切断は「終了の合図」でやるのではなく、
recvで0が返ってきた時にやるようにすれば問題ないと思うけど。
0073デフォルトの名無しさん2012/05/08(火) 14:03:01.27
>>70
普通にsend側で分割する。receive側でサイズ指定してもダメ。
0074デフォルトの名無しさん2012/05/08(火) 19:23:20.79
>>71
>切断時に両方からshutdown , closesocket はまずいのでしょうか。

問題ないです。

>あまりそのあたりに触れているサイトが無くて困っております。

Winsockと言えばここでしょう。サンプル見れば切断手順がわかると思います。
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/

>1000プロセスの終盤(残り10プロセスあたり)になると、

1台のPCで1000プロセスだとそもそも無理があると思いますが。

>connectエラーは起こらないのですが、recv(の前のselect)が
>5秒待っても届かずタイムアウトが猛烈に発生します。

select()のタイムアウトとは?

>NICやHUBが限界なのかなと思えてきました。。。

そりゃ無いです。ファイルコピーなんか何百ギガも転送したりしますんで。
0075デフォルトの名無しさん2012/05/08(火) 19:26:00.66
DoS攻撃認定されてブロックされてる、とか言うオチはやめてくれよ。
0076デフォルトの名無しさん2012/05/08(火) 20:04:13.19
>>75
昔、俺もやらかしたな
ネットワーク構成図に載ってないFWが間にあって、通信を殺されてたww
0077デフォルトの名無しさん2012/05/08(火) 20:12:44.70
そんなんだと割りと簡単にわかるだろう
0078デフォルトの名無しさん2012/05/08(火) 20:57:32.00
>>71
クライアント側は1台で1000コネクションなんてことは無いでしょうから
TIME_WAITで破綻なんかしないのでは?
テストのやりかたが悪いと思う。
0079デフォルトの名無しさん2012/05/10(木) 23:29:09.16
すごく初歩的な質問で申し訳ないのですが、現在コンピュータが行っている接続を
すべて取得する手段はどのようなものが考えられるのでしょうか。
0080デフォルトの名無しさん2012/05/11(金) 00:29:09.08
>>79
netstat -a
0081デフォルトの名無しさん2012/05/11(金) 01:21:24.11
そーだね
0082デフォルトの名無しさん2012/05/18(金) 00:54:20.27
WiFiでPCからAndroidに作業をさせるようなアプリを作っています。

サーバ側をAndroid、クライアント側をWindowsXP、IPとPort固定で接続しています。
クライアントからサーバに接続しようとすると、初回はだいたいうまくいくのですが
BindException: address already in useが出て接続できない時があります。
ServerSocketクラスのsetReuseAddressやsetSoLingerなどのメソッドを試してみましたが
それでも接続できないことがあります。
Java(というかTCP)の仕様なのでしょうか?
希望としては接続・切断を繰り返しても問題なく接続できるようにしたいのですが、、
いい方法があれば教えてください。
0083デフォルトの名無しさん2012/05/18(金) 05:47:04.16
>>82
少し前にもあったけど、どの程度の頻度で接続を繰り返しているのか?
切断手順に誤りはないか?をまずは確認してください。

頻繁に接続切断を繰り返したり、数分間切断された状態が続くとやばい
とかなら、素直にUDP使っとけやと思います。
0084デフォルトの名無しさん2012/05/18(金) 14:11:54.13
>>82
>IPとPort固定で接続しています。
もしかしてクライアント側も特定ポートにバインドしてるとか?
>BindException: address already in use
はまさにそれっぽいんだが
0085デフォルトの名無しさん2012/05/18(金) 20:20:53.96
>>84
次はサーバ側が多重化されていないので問題が発生する
とエスパーしてみる。
0086822012/05/19(土) 01:31:24.31
ありがとうございます。

>>83
30秒〜1分くらいです。
切断手順は、shutdown→closeみたいな感じでしょうか。
今はcloseだけ行っています。

>>84
クライアント側もサーバのポートを指定して、サーバに接続しています。
サーバ側でBindは呼んでいますが、クライアント側では意識してBind呼んだりは
していません。
0087デフォルトの名無しさん2012/05/19(土) 08:10:23.65
>>86
>今はcloseだけ行っています。
お行儀わるいぞ。こうだろ。

shutdown(send) → recv(0) → shutdown(recv) → close
0088デフォルトの名無しさん2012/05/19(土) 21:29:36.96
>>87
そんなことやんねーよバーカ
何年前の世界に生きてんだ
0089デフォルトの名無しさん2012/05/19(土) 22:26:25.38
>>88
そ、そうなのか・・・w
0090デフォルトの名無しさん2012/05/19(土) 23:02:07.68
>>89
相手が切断したことを確認する必要があるかどうか
無いならいきなりcloseでいい
0091デフォルトの名無しさん2012/05/20(日) 00:05:07.59
>>85
俺の過去が見えるのか!
0092デフォルトの名無しさん2012/05/20(日) 04:09:43.58
久々に来たけど、ここ相変わらず面白いね。
無知とは言え無茶しすぎだろう。

自分の管理下のpcや鯖相手に好き勝手試すのはどうぞ存分に遣ってくれと思うけど、ネット上の鯖とかには控えめにな。サーバ攻撃受けたと判断されて通報されそうだわw
0093デフォルトの名無しさん2012/05/20(日) 07:19:33.49
『朝鮮総連』は色々な企業のホームページからホストコンピューターに進入し、自分達が隠したプログラミングを引き出す…他人の会社のサーバーに『挺陝馗操作』や『改竄red-hat』のクラッカープログラム保管場所にしている。
札幌市立啓北商業高校の野島(横濱)えり Microsoft USA co.tp.
弖十=TEN10(teto)=優多野手頭=野慈蚕=帝跿(徒)=衛鴉朧 笑狸乃雉匯
0094デフォルトの名無しさん2012/05/20(日) 09:17:27.67
>>90
shutdown(both)も要らないのか?
0095デフォルトの名無しさん2012/05/20(日) 09:44:54.47
>>90
大した手間じゃないんだから定石通りの
切断手順を踏んだ方が良いと思うけどね。
0096デフォルトの名無しさん2012/05/20(日) 09:53:02.04
>>94
close内で勝手に呼び出す

>>95
カーネル内部で定石通りに勝手にやる
0097デフォルトの名無しさん2012/05/20(日) 10:08:01.05
>>96
カーネル側でちゃんと処理してくれないOSもあるのか?
でなきゃTIME_WAITもあるし常にclose()のブチ切りで良くなる。
0098デフォルトの名無しさん2012/05/20(日) 13:18:31.48
>>86
>30秒〜1分くらいです。

>サーバ側でBindは呼んでいますが、クライアント側では意識してBind呼んだりは
>していません。

だとすると、それにも関わらずBindException: address already in use
になるのは変だね。実は切断がちゃんと出来てないとか、クライアントの
マシンで別のアプリが大量にポート消費してるとか?netstatは見てみた?
0099デフォルトの名無しさん2012/05/20(日) 13:26:10.26
>>98
Bind()しているのはサーバ側のリスナーのポートだけじゃない気がするw
0100デフォルトの名無しさん2012/05/20(日) 17:39:30.12
>>97
だから基本的にはclose()ブチ切りで問題ない

shutdown()を使うべきなのは、データ送信後に相手が
受け取れたかどうかを見届けたいときくらいなものだ
0101デフォルトの名無しさん2012/05/20(日) 17:55:57.93
>>100
shutdown(SD_BOTH)の存在価値は全くないと・・・
■ このスレッドは過去ログ倉庫に格納されています