ネットワークプログラミング相談室 Port30 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
主にソケットに関しての質疑応答スレッドです。
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辺り
足りなかったら適当に付け足してね
前スレ
ネットワークプログラミング相談室 Port28
http://toro.2ch.net/test/read.cgi/tech/1334736934/
ネットワークプログラミング相談室 Port29
http://peace.2ch.net/test/read.cgi/tech/1351670708/
関連スレ
ネットワークプログラミング雑談
http://toro.2ch.net/test/read.cgi/tech/1235800707/ すまん、>>1 で Port28 を消し忘れた
過去スレ:
Port29 ttp://peace.2ch.net/test/read.cgi/tech/1351670708/
Port28 ttp://toro.2ch.net/test/read.cgi/tech/1334736934/
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 ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. ::: NFCに関するプログラミングの相談ですが、ここで良いでしょうか?
他に適切なスレがあるようでしたら誘導をお願いします。
Windows8からNFCが標準でサポートされるようになり
Windows.winmdを使ってNFCにアクセスできるようになりましたが
FelicaのIDmを取得するようなサンプルを探しても見つかりません
Sonyが提供しているFelicaライブラリなどを使わないとダメなのでしょうか? IDmあたりならWinSCard.dllなどで探した方がサンプル多いんじゃないかな >>11
PC/SCを使ったサンプルがあったのでそちらで実装しました
対応していない古いデバイスだとNGですが
今回の動作環境が比較的新しかったので問題なく動きました 22:00 -(24:30)28:30
たまやー! 2-2 基本的な質問で申し訳ないですが何故プロキシを使って書きこむと
プロキシって分かるんでしょうか?サーバーはIPアドレスとMACアドレス
だけを識別してると思うのですが、何故プロキシだと分かるのか分りません。
公開プロキシだと公開されてるので判別できると思いますが、一般的なプロキシ
は何故ばれるんでしょうか? >>15
俺はプロキシだ!っていちいち名乗るからです。 >>15
状況がちっともわからんがHTTPでも勉強してね >>15
HTTPヘッダで判断するのが基本だけど、ポートを叩いてみてproxyと判断するとこもある。2chもやってなかったっけ。 C言語でネットワークプログラミングを勉強しているのですが質問があります。
RAWソケットを使って流れているパケットを読み取る事はできるのですが流れているパケットを書き換えるって事は可能なのでしょうか?
パケットダンプを解説してるサイトはたくさんありますが全部そこで終わってるのでそういう事はできないのでしょうか >>19
パケットを盗み見てダンプすることと、
書き換えて転送することはまるで違う。
自分がブリッジとしてネットワークに割って入るなら書き換えは可能。 OSにもよるんじゃないの
Linuxだとブリッジじゃなくても書き換える方法があると思った ブリッジしないと無理だとおもうよ〜専用ハードを作ったらうれるだろうか? >>22
ブリッジやゲートウェイじゃなかったら、元のパケットはどうやって遮断するの? >>23
転送容量が100Gbpsくらいあるハードつくれば
結構売れると思うよ。 >>24
「RAWソケットで」という条件付なら無理だけど
パケットを操作するためのシステムインターフェースは存在するでしょって事
カーネルモジュール作る必要あるだろうけど
極端な話、ネットワークドライバでやれば何でも出来るわけだし >極端な話、ネットワークドライバでやれば何でも出来るわけだし
ふむ、ネットワークドライバをpromiscusで動かせば、
誰かが投げた誰か宛のパケットを盗み見るどころか、
消したり書き換えたり自在なのか。
世紀の大発見だね。 >>27
ネットワークドライバを特定の目的向けに書き換えることを言ってるんだよ
そうすれば自分のインターフェースに入ってきたパケットなら
消すことも書き換えることも出来るし、存在しないパケットを生成する事だって何でも出来る
当たり前のことを言ってるだけだ
特にLinuxとかならドライバのソースが公開されていることが多いから、やる気にさえなればそんなに大変なことじゃないよ >>28
そうですか。わかりましたので独り言は他所でやってください。 >>29
ブリッジじゃなきゃ出来ないというのを否定されたからってそんな反応しなくても
そもそもブリッジにしたって同じ問題があるだろ。RAWソケットじゃ出来ない
ネットワークドライバ書き換えは極端な話として書いただけで、そこまでしなくても方法はあるよ
iptablesとかがやってることだし >>30
bpfでもpcapでもいいのに、ドライバ書き換えるとか言い出すバカは
相手にできないということですよ? >>30
それと
>ブリッジじゃなきゃ出来ないというのを否定
否定したつもりなんですか?
ブリッジじゃないとできませんよ。
究極のおバカさんですか? Thunderbirdってメールアドレスとパスワードを入れるだけで
メールを送受信できるようになるじゃないですか。
ユーザー名は@前から取得してるんだと思うのですが、
送受信に使うサーバー名はどうやって取得してるのでしょうか?
JavaMailを使ってメールクライアントを作っていて、
現状サーバー名・ユーザー名・パスワードを指定して認証する形になっています。
もしメールアドレスとパスワードだけで設定ができたら設定する側が楽になっていいのではと思っているのですが、
どうやったらメールアドレスとパスワードの情報を元にメールの送受信ができるようになるでしょうか? >>37
>正攻法ならMXレコード引けば
リンク参考になりました。
dnsjavaでMXレコードが使えるそうなのでやってみます。
回答ありがとうございます。 成功率をどれくらい期待してるかによるけど、
それなりに高いならみんなやってるよな。
ちなみにthunderbird はデータベース使ってるし、うちの自鯖は別になんのひねりもないのに失敗するぞ。 >>19
乗っ取り合い相手が同じセグメントにあるなら
proxy-arp が古典的な方法 初心者なのですが質問させてください
Linux上でTCPを使ったプログラムをc/c++で作っているのですが、sendとrecvのバイト数が合いません
・sendで整数3つ分(12bytes)を送信
・readで何故か28bytesを受信
と言うように余分に受け取ってしまうのです。
これは何故でしょうか? ・12バイトしか送信してないつもりだけど実際には28バイト送っていた
・28バイト受信したと思ったけど実際には12バイトしか受信していない
・違う相手に送信したり違う相手から受信したりしている
・通信回線の途中にいる誰かがパケットの中身を書き換えている
のどれか
俺は2番目の可能性が高いと思うがどうだろう
sendやrecvの戻り値はきちんと確認しているか >>44
どうも1番目のようでした。有難う御座いました。
通信の区切りをバイト数で切っていたつもりが、次の送信分まで読み取っていたみたいです。
通信の区切りは何を基準にやるのが良いのでしょうか・・・ 余分に読み取ったデータを捨てずに残しておいて次の処理に回せばいい 素人さんにもわかりやすい例で言えばhttpの成功があるじゃないか。 httpが成功したのは1リクエスト、1レスポンスのシンプルさじゃないのか。今となっては酷いものだが。 メールアドレスの@以降を使ってAレコードを引いて
NullPointerExceptionが返ってきた場合、
代わりに何を調べればよいのでしょうか?
大学のメールアドレスの場合Aレコードで受信サーバーのIPが得られたんですけど、
i.softbank.jpの場合NullPointerExceptionとなってしまいました。
また、ためしにsoftbank.jpをやってみたら複数のIPが得られたんですけど、
この場合はどのIPでもよいのでしょうか?
それとも@前によってどのIPか決まっていたりするのでしょうか? ちゃんと勉強してからやれ。その程度の知識じゃあ周りに迷惑かける。 メールアドレスならMXレコード引かなきゃダメじゃね?
Aレコードがある保証無くね? digとかnslookupでなくて、いきなりプログラミングしてる時点でお察しください。 >>53
MXレコードとかAレコードとか今回初めて知りました。
正直メール関連に限らずネットワークの知識はあまりないです。
メールクライアント作ろうとしている知り合いがいて、
私も興味を持ってその人とは別に自分なりにやって
たまにその人が作るのを手伝ってみてる感じです。
ちなみに、その人は私よりネットワークやプログラミングの知識がないです。
Thunderbirdはデータベース使っているらしいですけど、
メールアドレスとパスワードで送受信の設定ができたら楽だと思いまして。
その人には以前
「MXレコードを引けば@以下から受信サーバー名わかるらしいよ。
けど私もぜんぜんわかってないし、まずクライアントできてからだね。
こういうこともできたらいいなくらいな感じかな。」
なんてことを言ってました。
一応受信サーバー名とユーザー名とパスワードを使ってメールを受信したりすることはできてます。
>>54
MXレコード引いて出るのはName Server名ですよね?
それ出しても利用方法がわからす、
「mxレコード メール」で調べてみたところ
メールアドレスはAレコードかAAAAレコードに情報があるとか見て、
ためしに引いてみたら>>52の通りでした。
AAAAレコードはどれもNullPointerExceptionでした。
pingで調べてみたら大学のアドレスの場合
ドメインのIPと送受信サーバー(送信も受信もサーバー名が同じです)のIPが同じでした。
Aレコードがうまく行ったのもこれのためなのかもしれませんね。
>>55
digやnslookupは知りませんでした。
そもそもあまりコマンド知らないもので。
すいません。 ネットワークだけでなく普通のプログラミングも怪しいから
やめとくのがいい やめさせるなんてとんでもない
こういう隙だらけのサーバがいるからこそ
楽しいんじゃないか 対応表でもない限り@以降から受信サーバーの情報は取ってこれないようなのであきらめます。
いろいろありがとうございました。 TCPって1バイト未満のデータが届いたときは1バイト以上のデータが届くまで待ってSocketに現す? TCPはsequence numberで送受信の制御を行う
sequence numberは1バイト送れば1進むというもので、1バイト未満の送受信というものはない じゃあ各Socketの末端に現れるのは完全に1バイト単位ってことでおk? 君は軽佻浮薄だな
>>65に書いてあるのはウソかもわからんぞ
ちゃんとRFCを読みたまえ >1バイト未満のデータ
ゆとりか、ナイーブかつユニークな発想の持ち主ではあるが パケット単位で開封されるから半端ビットってものが存在しないのか 量子通信の絡みで半ビット対策が議論されてるけど、有効な手段はないようです。
結局パリティビット(パリティに偽の半ビットが埋まっていても訂正はこれで足りる)
に頼る方向になるようです。 >>72
なにがそんなに楽しいのか・・・
通信関係の低レイヤやったら半ビットなんて当たり前に出てくる単語だぞ? >>74
ネットワークプログラミングの話しかでてないような…? >>75
だからどの規格で、参照実装はなにで、プログラミング言語はなんなんだよwww >>72
RFCに入るには10年くらいかかるか、あるいは入らないかもしれませんね。
この分野はサムソンの動向次第だと思います。
サムソンの考えによっては、RFC自体が尊重されないようになるかもしれません。
その場合、サムソンがRFCに代わる規格を発行するようになるのでしょう。 「半ビット対策」でググってもヒット0件だったので何の話だかわけがわからんけど、どこらへんの分野の話なの?
で、なんでサムソン主導で話が進んでるの? 量子通信でググっても、Wikipediaで
> 量子ネットワーク(りょうしネットワーク)は、量子暗号技術から発展してきた通信ネットワークである。
> 量子テレポーテーション実験における成功の後、量子通信を行うためのネットワークという概念が提唱された。
とあるけど何のことやら。
一般のプログラミングに関係あるの? RS232Cの ストップビット1.5 とは無関係な話? ハーフビットの概念が理解できない奴が騒いでるだけだから
まともに相手しなくていいよ ネットワークプログラムで半ビットとか出てこなくね? ネットワークときいてRFCの範囲しか思いつかない奴が何人かいるね 誰か>>87の友達ネットワーク構築計画の相談に乗ってやれよ。 1バイト未満のデータがどうたらこうたらの話だったのに、
いつの間にか謎の半ビットの話になっていたでござる 量子通信しってまーす、そりゃよかったね、ちゃんちゃん 普通にスレ読めば、TCPで1バイト未満の送信があるかというのが量子通信がどうのとなってる
一番の元凶は>>71がTCPの話もまともにできないのに、本人に興味があったからかなんだか知らないが、
量子通信とか持ちだしたから オクテット単位未満をサポートする通信規格なんて存在するの? >>104
RFCに乗るレベルのルールでは見たことないな
もし知ってたら教えて >>104
だから>>93は「オクテット」と言ってるんだと思うが・・・
>>105
RFCは8bit以外の処理系に対しても考慮されてるよ。
というか、RFC 821とか初期のものはむしろ7bitしか考慮してない。 8bit長のかたまりを オクテット と呼んで、
バイトとは言わないのはそういうこっちゃ >>109
35年前には既に一般化した常識すら知らないってのは恥ずかしいだろ >>112
自分が常識知らないからって
一般人をバカにし始めるのは見てて痛々しい >>113
>一般人
一般人は知らないだろうwww >>116
いや、>>109曰く一般化したらしいからそれに合わせてやっただけ。 Protocol Buffers, MessagePack, Apache Thrift
ならどれがシェア持ってますか?
これからの時代スタンダードになるのはどれだと思いますか? TCPみたいなUDPってなんだっけ?
ここ10年くらいで出てきた比較的新しいやつ すぐちねって言ったらダメだよってお母さんに教えられなかったの? 高度なネットワークとは自己増殖するネットワークのことか? SSLの自己証明書って用途がよくわからないんですが、どういうことですか?
ようはオレオレ証明書っていうものですよね?
接続先は証明できないけど暗号化できるからやるとかそういうものなんでしょうか?
最終的に知りたいのは、
自分が開発したアプリから自分が製作したwebページにアクセスするときに証明できるのか?
っていう所です。
SSLの仕組み自体あまりよくわかってないんですが、よろしくお願いします >>143
>SSLの自己証明書って用途がよくわからないんですが、どういうことですか?
>ようはオレオレ証明書っていうものですよね?
>接続先は証明できないけど暗号化できるからやるとかそういうものなんでしょうか?
主にそう。
>最終的に知りたいのは、
>自分が開発したアプリから自分が製作したwebページにアクセスするときに証明できるのか?
>っていう所です。
出来る。
自分で作るアプリならその証明書(正確には証明書を発行したCA=自分自身)を信頼することが可能。
大雑把に言うと、証明書を信頼できるのはプリインストールされたルート証明書という形で信用するCAを決めているだけなので。
ルート証明書はCAの公開鍵の自己証明書に過ぎません。 自分が開発したアプリがシステムのコンポーネント使うときに
そのコンポーネントにオレオレ証明書くわせるのが大変だったりするけどなー TCPでセッションを張っていて、データが途中のままセッションが切れたとします。
再び同じポートでセッションを張ると途中からのデータは自動で送信されますか? JavaやCなどでTCPを使ってノンブロッキングSocketプログラミングをするとき、
Socketに届いたデータが途中までなのか全部受け取ったのかはどう判断すれば良いですか? 中身のプロトコルを決めてそれで終了判断するのがお気楽かと ブロッキングだろうがノンブロッキングだろうが
プロトコルで約束ごとを用意しないと区切りを知ることはできない TCPの順番が約束されてるってのは
データA送信
→データAを全て受信完了する前にデータB送信
→データAの受信が完了してからデータB受信開始
ってのが約束されてるって事で合ってる?
ならプロトコルに必要なのはデータA開始・データA終了だけでいいのかな?
プロトコルの形はどういうのがセオリー? それじゃhttpとかのリクエストが全部届いてるかどうかっていうのはどう判断されてるんですか?
バージョンとかプロトコルとか固定長じゃないですよね >>153
時間が過ぎたらアウトにします。
HTTPプロトコルバージョンは有れば事実上固定長です。 ゴーストプロトコルが発令されました。今後当局は一切関わりありません。 >>152
データの並びが送信側を同じになるってだけ
送信側 [ABC]送信 続いて [abcd]送信 と送った場合
最終的に ABCabcd が得られることは保証するけど
1回の recv でやってくる塊がどうなるかは保障していない
全て分断で7回の recv: [A] [B] [C] [a] [b] [c] [d]
連結された1回の recv: [ABCabcd]
分断と部分連結で2回の recv: [AB] [Cabcd]
これら全てが起きえます >分断と部分連結で2回の recv: [AB] [Cabcd]
これ結構ふつうに起こる おっと
送信側と同じ区切りで2回の recv: [ABC] [abcd]
が抜けてたな
・先頭記号 - 終端記号 で区切る
・(固定長の)ヘッダに後続のデータサイズをおいて、受信データサイズで区切る
・情報やりとり毎にセッションを張りなおす:
送信側 送ってcloseする
受信側は recv 0 を受け取ったところがデータ終端 >>158
ありがとう
・先頭記号や終端記号が分割された場合
・固定長のヘッダが分割された場合
それぞれどうするのがセオリー? 固定長のヘッダハ固定長なんだから
固定長に達するまで読むまで >>160
先頭記号や終端記号は分割されないように1オクテットにするのが簡単
ユニークな記号なら複数オクテットでも処理できるけどね ありがとう
>>161
俺がバカだった
>>162
TCPの場合どれだけ分割が起こっても最小単位は1オクテットって事かな >>163
そう
8ビット未満に分割されることはあり得ない CでDNSリゾルバを作っているのですが、テスト用のアドレスでlookupすると
逆引き用のホストが数台出てきます。これはどうしてなんでしょうか。
以下実行結果です。よろしくお願いします。
$ nslookup 157.82.13.243
243.13.82.157.in-addr.arpa name = ee.t.u-tokyo.ac.jp.
243.13.82.157.in-addr.arpa name = eeis.t.u-tokyo.ac.jp.
243.13.82.157.in-addr.arpa name = eegw.ee.t.u-tokyo.ac.jp.
243.13.82.157.in-addr.arpa name = maxwell.ee.t.u-tokyo.ac.jp.
243.13.82.157.in-addr.arpa name = ccs.t.u-tokyo.ac.jp.
Authoritative answers can be found from:
13.82.157.in-addr.arpa nameserver = ns1.t.u-tokyo.ac.jp. ip-address : host name = 1 : 1な世界にいるのか linux C++な人はやぱsocket系はclibなので
自分でラッパクラスを自作するの?
それともACEとかブストとかポコとか使うの? 超音波テロの被害にあっています。
卑劣極まりない被害にあっています。
何が起こったかわからないときから、
わかってみれば、
まだ世の中に知られていない超音波テロ。 世の中のどれだけの音の振動源・発信源が
使用されているのかわからないが、
多数の振動源・発信源がシステム化され、
ネットワークを通して、
超音波・音波を集中させて
対象を攻撃するらしい。 人や社会が襲われ、罪もない人が超音波で襲われ、
卑劣な被害にあっています。
聞こえる声、音。超音波テロの加害者の声。
「もらいました」という声とともに、
形のあるもの、ないもの、奪っていき、壊していく
超音波テロの加害者の声。 超音波による物理的な力で、
ものが飛び、ものが壊れる。
それが人間の体に対してまで。
身体の表面を突き抜け、内臓を攻撃される。
頭蓋骨を突き抜け、意識を失わされる。
聞こえる声、認識できない声で、精神的なダメージ。
人間の体を壊そうとする超音波テロ。 「見続けるのがいやだから、殺して終わる」、
「証拠隠滅だ」という超音波テロの加害者の声とともに
強烈な超音波の攻撃。
叫ばされ、いたぶられ、
超音波テロの卑劣な被害にあっています。
心の底から被害を訴え、祈っています。
天に神に届きますように。 PF_PACKET, SOCK_RAWで作ったrawソケットでパケットを受信しているのですが, rawソケットで受信したパケットを上位レイヤーには渡さないような設定は可能でしょうか? 対象のプロトコルがなんなのかってのと上位層に渡したくない理由にもよると思うんだけど、
iptablesで落とすんじゃだめなのかね?
あと、ユーザープロセスでTCP/UDPパケットを直接操作するシステムってのは昔作ったことが
あるけど、そのときは結局、NICに別アドレス割り当ててLXCの仮想ネットワークにつないで
ホスト側と分離した環境で動かしたな。詳しいところはあんまり覚えてないけど。 >>180
対象はDHCPです。
ある条件の場合だけ、
rawソケットを使用しているプロセスで
DHCPサーバー処理をさせようとしています。この際もともと動作しているDHCPサーバーは停止させたくありません。
iptablesも検討していますがrawソケットの設定で可能であればそれを使用したいです。 >>182
>>183
やっぱりできませんか。
iptablesで対応したいと思います。
ちなみに、カーネルをいじるとしたら
net/core/dev.c 辺りでしょうか。 受ける会社大丈夫?
下記の条件が全て当てはまる会社にご注意下さい。
・IT系 in tokyo
・「社名 労基」でググると過去の2chスレが出てくる
・転職会議で2.5点 サーブレットについて教えてください。
以下のようなことを考えています。
JSPからサーブレットを呼び出す → サーブレットで何らかの判定を行う → 元のJSPに戻って(呼び出して?)判定結果を表示する。
この場合、判定結果はどのように戻すのが一般的でしょうか?
ResponceはsetAttributeがないので、Requestに追加して返すものなのでしょうか? ソケットを使ったプログラムを組んでいるのだけど、
どうも安定しないから通信ライブラリを使おうと思っているのだけど良いライブラリはありますか?
プログラムが数個あって各プログラム間で通信したいのだけど
今は通信専門のプログラムを作ってそれに集中的にアクセスしている状態なので改善したいのです
A-->Bで通信したい場合A-->O-->Bみたいな感じで通信している状態です
プログラムの数が一定していなくてMPIは使えないので今みたいな形になってます
素直にA-->B、B-->C、C-->Aみたいにできると良いのだけど・・・ まあイミフだね。強いて聞くなら
「安定しない」ってどういうこと?環境の問題?
「よい」の基準は?品質?
「通信専門のプログラム」って何?Oがこれ? クライアントの相互通信をしたいが
現状はOをサーバーのようにして通信しているって事だろ
そういう事も読み取れないバカしかいないし
誰かが真面目に答えても間違った知識で混乱させようとするから他で聞いた方が良い スイッチングハブで接続されているパソコンA,B,Cがあり
B、C間の通信をAが覗き見る事は不可能ですか? マスタリングの入門編読んだんだけど仕組みは分かっても実際どうプログラムしてるのかが分からなかった
テンプレにも紹介されてるけどネットワークプログラミングの本でおすすめない?
言語はできればCがいい、ちなみにOSはwindowsしかないけど仮想ならlinuxも用意できます Linux Programing Interface ちょと重いか >>208
在庫と値段的にちょっと厳しいかな
>>209
ああなるほどlinuxから入ってネットワークに行くってのもありかー
linux本としてもいいなら買っちゃおっかな マルチスレッドでTCPのacceptしたときnetstatのステータスはどう変化するんですか?
教えてくださいおながいします! 以下のようにVBSでURIで指定したサイトからデータ取得するものを作っています。
Set oReq = CreateObject("MSXML2.ServerXMLHTTP")
oReq.setProxy("2", PROXY_SERVER, "localhost")
oReq.setProxyCredentials(USERNAME, PASSWORD)
oReq.Open "GET", URI, False
oReq.Send
これを1度だけ実行なら問題ないのですが、繰り返し実行
すると5回目くらいに最後のsendのところで、
「無効または認識されない応答をサーバーが返しました」
というエラーが発生します。
これはプロキシサーバの処理能力をオーバーしたということでしょうか。
それともデータ取得先の問題でしょうか。 Win10 Home、Borland C++で
#include <MAPI.h>
typedef ULONG (WINAPI *MAPI_SEND_MAIL_PROC)( LHANDLE lhSession,\
ULONG ulUIParam, lpMapiMessage lpMessage, FLAGS flFlags, ULONG ulReserved );
MapiRecipDesc sender;
MapiRecipDesc Receiver;
MapiFileDesc AttachFile;
MapiMessage Message;
(略)
HINSTANCE hInst;
hInst = LoadLibrary( "mapi32.dll" );
if( hInst == NULL )
printf("mapi32.dllがロードできませんでした。送信に失敗しました。\n");
else{
MAPI_SEND_MAIL_PROC MAPISendMailProc = (MAPI_SEND_MAIL_PROC)GetProcAddress( hInst, "MAPISendMail" );
if( MAPISendMailProc( 0, 0, &Message, MAPI_DIALOG, 0 ) != SUCCESS_SUCCESS )
printf("送信に失敗しました。\n");
else
printf("送信完了しました。\n");
}
FreeLibrary( hInst );
メールを添付ファイル付きで送信するプログラムを組みたいんですが、
MAPIで「規定のプログラムの設定がされてないよーん」的なメッセージが出て出来ません。
設定画面から「メール」で規定のプログラムを設定しましたが変わりません。
なんでざんしょ。 >>218
やはり10の問題でしょうか・・・。
セキュリティ会社に出向することになったんで、ollydbgでこういった動きで漏洩させるプログラムをデバッグで追っかける
準備として自分のメールアドレスにテストメールを送るEXEを作りたいだけなんですけどね。
これが10の問題なら逆にMAPIではできないというのを知れたのでよかったのかな・・・・。 Thunderbirdです。
あー、それもありえるかもなぁ
winのデフォルトインストールメーラーにしてみます。 変わらずでした。
なんかワンクッション必要なのかなぁ。 MAPI っつったら Outlook 一択だろ常考。
OutlookExpress じゃないぞ。
Office に付いてる方だぞ。 mapi32.dllって64ビット環境でもちゃんと存在してちゃんと動くのか? >セキュリティ会社に出向することになったんで
社名を教えて、そこの製品を使わないようにするから ここで適当に同業他社の名前出しとけばライバル蹴落とせるなw ソケットの勉強をしようと思いクライアント側のプログラムを作成しているのですがなぜ
最後にソケットを切断(close)しなくてはならないのですか?
また、closeしなくてもプログラム自体は動くかと思うのですが、closeされていないこと
を確認するにはどのような方法がありますでしょうか?(netstatコマンドなどを使えば良
いのかと思ったのですがわかりませんでした) closeしなかったらプログラム終了時にシステムが自動的にcloseするというだけ shutdownも必要ではなかったか?
今はもう不要? libevが分からない
asyncの自前イベントでどう設定してイベントループからどうやって起こすのか・・・
詳しい人が居ましたら関係する関数を教えてください 1つのネットワークカードに2つ以上のipアドレスを割り当てて、1つのサーバにその割り当てた別々のipアドレスで同時接続は可能?
同じアプリを2個以上起動して異なるipアドレスで同時接続したいわけです 横道にそれるけど
同じIPアドレスだけど listen ポートを別にすることはできないのかな? >>247、>>248
可能
WindowsでもLinuxでも出来ない理由はない よくよく読んだら 複数クライアントが 1つのサーバーに接続
クライアントのおのおので ipアドレスを別にしたい が 同一PC中の同一ネットワークカードで
ということか 受信は問題ない
返信時に送信者アドレスがどっちになるかで
途中のルーターがフィルタしたりする可能性は無きにしも非ず
1枚のときにどっちのアドレスを優先させるか
あるいはどっちのアドレスから送信したことにするかを
プログラミングする必要がある
マルチホーミング考慮する必要もある >>247-248
どっちも可能
ただし当たり前だけどアプリケーションで Listen するアドレスやポートを指定できる必要がある
>>251
受けたアドレスと異なるアドレスに送る TCP スタックなんて見たことない 多重にクライアントを動かせない理由は何なのだろう・・・ 同じサブネットなのか違うセグメントなのかでも変わるな >>256
何を根拠にそんなことを言うのかなあ
セグメントが違えば通信できないならインターネットなんて全然成り立たないわw 1枚のNICに2つのセグメント振る香具師なんているのか? メンテ用の機器繋いだ時一時的に振ったことあるなあ
ルーターだったかな、そっちのデフォルトのアドレスに合わせるために vmwareとか使えば、見かけ上は別のものとして扱えるけど
そういうのではテスト出来ないのかな >>253
ん?
クライアントは普通に多重で動かせる奴も多いぞ
少なくともネットワークの制限で動かせないケースはほとんどないと思うが >>261
>>247 に至った理由が何だろうね?って疑問だったわけで、深い意味はないです >>257
ピントずれすぎ w
1つの NIC の話だから同一物理ネットワーク上に複数のセグメントを置く話
できない理由はないけど実験的にやるとか >>259 みたいに一時的にやるとか以外でそんな構成にすることはほとんどないと思う >>262
>>247 はサーバーの話
1つの NIC では同一IPかつ同一ポート番号で待ち受け(Listen)できるのは基本1つだけだから複数のIPを振りたいって言う要求が出てくる >>264
てっきり クライアントの話かと思った
IP分けるよりListenポート分けるほうが簡単だし刹那的にそうするもんだと早合点 ん?>>247は
1つのネットワークカードに異なる2つのIPを割り当てて(IP1とIP2)
同じアプリを2個起動して(AとB)
1つのサーバーに同時接続(AがIP1で、BがIP2で接続)
だからクライアントじゃないの?
数は説明上2つに変えた 1枚のNICに複数IPの指定は出来るという事ではまずはお茶しましょう。
二つのIP与えて、アパシェのIPベースバーチャルホストなんてのもやりました。
http://good-stream.com/goodstream/server/apache/tips/ipbasevhost.htm
フル >>263
ネットワークが絡んだ開発の仕事が多い俺は1つのNICに複数のセグメント
を割り当てるなんてごく普通にやってるんだが ボンディングとかやぱ二枚刺しでルーターとかフィルターとかフィアオルをやる
ってが多いのかな。今でも >>266
あひゃ、改めて >>247 を読み直したら確かにクライアントの話だったわ
早合点は俺だった... orz
アプリが送信元IPアドレスを指定できれば可能だな >>268
実運用環境でやってるなら単なるバカ
実験やテストでやってるならたいして珍しくもない >>271
俺は開発環境でやってるけど
トポロジによっては実運用環境でも便利なケースはあると思うよ >>271
顧客がやれと言ったから設定した
それだけのことさ
警告はした そもそも警告したくなるような問題が発生しそうなケースが思いつかないんだが
>>271は単に「バカ」という言葉を発したたかっただけだろ そう言っちゃう人もいる事を理解して、無視してあげましょう。 >>273
ああ、作業者にはなんの責任もないから言われた通り作業してくれればいいです
>>272
> トポロジによっては実運用環境でも便利なケースはあると思うよ
その便利なケースとやらを説明してみ 「問題ない」をなんで「問題ない」のか説明させようとするって典型的なアレだからな
ないものはないんだよただそれだけだよ なんだ説明できないのかよ w
運用環境の構成は可能な限りシンプルにしておくのが鉄則
その方が間違いも少ないし障害調査なども楽だから パッと思いつくケースだと
2つのセグメントで構成されているシステムがあったとして各セグメントは閉じているんだが
両方のセグメントにアクセスするマシンを追加したい場合などに1つだけのNICで済むだろ
その為だけに2つのNICを持ってるマシンを用意するのとどっちがシンプルかって話だな
WindowsもLinuxも(その他大概のOSも)1つのNICに複数セグメントを割り当てることが出来るのに
その機能を使うのは「バカ」だって言うならその理由を書いてくれな >>282
各セグメントは閉じてるのに
わざわざ混在させるのか
バカの発想って面白いな w バカって書いてる理由を書いてあるだろ?
もしかしてそれすら理解できてないのか w バカはお前だよ。見た事ないんだろ。貧乏な現場とか、どうしようなない状況。 貧乏ならいちいちセグメントなんて分けるなよ w
てかNIC ぐらい買え
そもそも何かの目的があってセグメント分けてるのにそれをわざわざ混在させるなんて実運用でやるわけないだろ 元質問からの疑問
1つのPC内に(loopback以外の)複数のアドレス A,B があり (※NICの枚数は問わない)
A経由で接続しにいく / AでListen する
B経由で接続しにいく / BでListen する
には、ソケット記述で制御できるもの? それとも上位の何かでコントロールしないと駄目?
後者の場合は WindowsとLinux 他 OSの事情がからみそうだけど >>285
あのね俺が書いた例は独立して機能してる2つのセグメントを「混在」させるわけじゃないから
WindowsもLinuxも(その他大概のOSも)1つのNICに複数セグメントを割り当てることが出来るのに
その機能を使うのは「バカ」だって言うならその理由を書いてくれな
使える機能を使えるところで使わない方がバカでしょ >>290
ありがとう
(bind ってそういうことだったのか。 漫然と使ってた) >>291
ちなみにアドレス0.0.0.0にbindするというのは「どのアドレス宛でも受け付けますよ」という約束事。 どいつもこいつもしったかばっかだし
ぼけもつっこみも自演くさい >>293
おーけーじゃあしったかを指摘して訂正してくれ
できないならお前もしったかだよな >>289
バカには見えないのかな?
念のためにもう一度書いとくよ
> そもそも何かの目的があってセグメント分けてるのにそれをわざわざ混在させるなんて実運用でやるわけないだろ ID:QrmkumON の想定は
セグメントA のネットワーク網に ピンポイントで参加させるメンテPC
セグメントB のネットワーク網に ピンポイントで参加させるメンテPC
メンテPC を通して セグメントA と セグメントB を連結させるわけではない
メンテPCのNICには多重に割り当てるが、実質として選択的に配線し接続してる
こういうことでないの? すんません「バカ」連呼したいだけのアホに餌を与えちゃいました
もうこのアホはスルーがいいでしょう
こっちの質問には決して答えないんだから
>WindowsもLinuxも(その他大概のOSも)1つのNICに複数セグメントを割り当てることが出来るのに
>その機能を使うのは「バカ」だって言うならその理由を書いてくれな >>295
"混在"はしない
"共存"(相乗りでもいいや)できるんだけど
もしかして君にはそれが判らないの? >>296
各々のセグメントに繋ぐ度にケーブル刺し変えてるってこと?
DNS とかも全く使わないならいいのかも知れないけど普通はバッチファイルとかで切り替えた方がいいと思うけど
>>297
>>279 の内容すら理解できてない素人乙
>>298
> "共存"(相乗りでもいいや)
の定義書いてくれ
オレオレ用語で話されても困るから md5とかいう機能を利用すると、
ダウンロードしたファイルが破損、改竄されていないか確認できると知りました。
それはいいのですが、この機能はいつ使うんでしょうか?
仕事とかで、ソフトが改竄されていないか証明するために使うのでしょうか? ダウンロードしたファイルをプロはいちいちチェックしてるのでしょうか?
先輩見ててもサイトから落としたファイルのハッシュチェックなどせず、そのままインストールしています。 >>304
ダウンロードだけに限ればチェックが必要な怪しい所からはダウンロードしません >>304
rpmとかyumとかがチェックしてくれる リポジトリを信用するしかないから、もうyumにお任せですね。
ソースでDLするのは最近ではpostgreSQLぐらいで。それも公式サイトだし。 >>308
> 先輩見ててもサイトから落としたファイルのハッシュチェックなどせず あのねここはプログラミングのスレなの
もういい加減にしてくれない? >>309
ハッシュのチェックをするのは、出自が怪しいかどうかじゃなくて、
途中で壊れてないかを確認するためだろう? >>311
そのどっちかではなく両方
元の>>304には「そのままインストールしています。」とあるから実行ファイルが前提
壊れてるならそもそもチェックなんてしなくても実行不可 だよね
ハッシュ値と一緒にダウンロードのリンクが貼ってあるところも普通なのに(というより、別の手段やミラーがある方が稀)
それとmd5やshaが一緒に並べてあるのは、ダウンロード時の化け等への対処
意図的に改ざんされた、得体のしれないファイルを落とすってのは別の話
もちろん、それも意味があるけれど
そんなんだったら、「転載禁止」として、自サイトからのダウンロードされたものだけを保証、とすれば済む
もちろん、意図的な改ざんへの対処の意味もあるし、
単なるデータ化け判定は、圧縮展開ルーチンに入っていたりするから不要なケースも多い >>312
もとの話につっこんだんじゃなくて、>>305につっこんだんだけどなあ。
まあいいや。 >>314
元の>>304に突っ込んだ>>305に突っ込んでんだからその前提ぶっ壊すのはアスペのみ 論破されると、相手をアスペだといい出すのは、2chではいつものことだが、
>>316はアスペの意味を分かってるんだろうか。 >>317
「>>305につっこんだ」
→いや>>305も>>304の前提引き継いでるから
こういう流れが分からない奴
これがアスペの全てというわけでもないが一部 くわしいひとがいるみたいなので聴くけど
DVD Fab とか HD Decrypter って無料の落として使っても安全?
インターネット繋がってないと起動しないし
実際通信しまくってるんだが抜かれたりしない? >>320
それハッシュ関係無い
そういうのは自分で調べるもんだし自己責任の範疇 TCPで書いたデータが相手に届いたか知る方法ってある?
Ackが届くまで待つみたいな感じで ある
ACKのようなものを返すプロトコルにすればいい 相手のソケットライブラリには届いていても
アプリがrecvしたかはわからないし失敗する可能性もあるから
アプリレベルでも応答確認した方がいいってこと?そうかもね アプリに届いたかが重要なデータならアプリレベルで応答確認するしかないよ SMPT や POP3 とかそう(プロトコルで応答を返すルール)だよね そういえば
ソケットレベルで相手に届いたかどうか知る方法ってあったっけ?
実はないよね 何を気にしてる?TCPでコネクトできたら届いてるでしょ なのよねw
send()が成功したら、やったと思うしかない。
てかそれ以下ってあるんだっけ?
rawソケとか使った事ないっす。 サーバー側の指定ディレクトリにあるファイル一覧をクライアント側で表示したいのですがヒントください!
サーバー
http://ideone.com/fPQ4mZ
クライアント
http://ideone.com/QZQMXY
サーバーではsizeof(ent->d_name)分渡しているのですが、クライアントでsizeof(filename) 256byte分受け取っちゃっているのでここをどうしたら良いのか分かりません。
あらかじめどんな名前のファイルが来るのかわかっていればそのサイズ指定すれば良いと思うのですが。。。
あとサーバー側ではwhile((ent = readdir(dir)) != NULL)でループの終わりを告げれるんですが、クライアント側でソケットに流したファイル名を全て取得したあとの終わり方の告げ方が分かりません。 >>335
分割で届いたりもありえるから
データ先頭にデータサイズ格納させて
その分だけ受信するようにしないといけない
このデータ先頭の情報をヘッダと言う
情報は1つだけじゃなく複数でも自分が必要な分だけ自分で決めた構造で送る >>335
ftp プロトコル辺りを調べたらいいかも >>337
>>338
できました。有難うございます write 1回で送ったものは 1回のread で得られる保障はなく
複数回に分断されたりする
"1234" を write → "12" を read 続いて "34" を read
こういうことが、ごくごく当たり前に起きるから APレベルで送受信するときはヘッダをつけてシーケンス番号を送って、肯定応答を返すのも常識だろう。
今回は不要だが。 どんな常識だよ w
TCP 上でそんなことやるアホにはなりたくないわ 応答で正否返すのは当然だがシーケンス番号は普通要らない気が。
非同期なプロトコルにするぐらいならコネクション増やす むしろシーケンス番号つけて順番どうりに送るのはtcpの役割でしょ TCPとsocketの区別がつかないアホ>>346 TCP上でアプリレベルの到達確認するのは特別な場合のみだな 本当にクリティカルな場面ではアプリレベルの到達確認さえも役に立たない場合さえあるし 同期通信なら、到達確認というか応答受信は入れるな。
send->recv->send->recv->...が基本。
破壊的な何か(データベースに登録したり、ファイルを作ったり削除したり)はrecvがトリガーになることが多い。 まあ>>335のケースならヘッダもシーケンス番号も到達確認も必要ないな
送信側でデリミタ付けて受信側が対応すれば良い >>357
悪いけどお前のレスからはニワカ臭しかしないんだわ
自慢じゃないけどこっちは通信絡みの設計しだしてから言うのが恥ずかしいくらいの年月経てるから
負荷試験?当たり前だろwwwそれをドヤ顔で言う時点であーあーあのタイプかってなるんだわ tcpでデータ受信失敗するときって
・コネクションが切られる
・コネクションが維持されたままいつまで経っても続きのデータが来ない
だけじゃないんですか
後者はアプリ側でタイムアウト時間が不明なときどう判断すりゃええの >>362
ただデータが来ないだけなのか
相手が切断(通知が来ないような異常な切断)してるのかの判断って事でいいん?
>>363
(大口叩いておいて何も言えねぇ) アプリ側ってどのことか不明確だけど
てきとうにこちら側でタイムアウトを決めて判断するしかなくね? >>362
>後者はアプリ側でタイムアウト時間が不明なときどう判断すりゃええの
そういう場合はアプリレベルでのキープアライブをするのが定石だな
・相手(あるいはハブ)の電源が切れた
・ケーブル切れた
の様な場合はメッセージに対する到達確認だけでは検出できないし 習作じゃなけりゃselect系(pollやlibevent)つかうしな。
元の要件からしたらHTTP扱う適当なライブラリつかうのが適当やとおもう。 >>352
rfc-959とかrfc-2616とかrfc-5321とか特殊な例なんだ
へー、そーだったんだ
わー、びっくりだわ 他はよく知らんがhttpのは到達確認っていうのか
サーバーからリクエストの結果は返すけど肝心のレスポンスは送りっぱなしでなんの到達確認もしないじゃん 実際に物(ファイルとかメールとか)をやり取りすろときの物の到達確認をするのと通信そのものの確認は別物だよなあ 通信レベルの到達確認したところであんま意味ない。
受け手のメモリに取り込めたとしてもその後の扱いで失敗するかもしれんし
それ以上気にするなら処理トランザクション的なものになる。 人をバカ呼ばわりする前に正しく使おうな
肯定応答・確認応答 今度は「確認応答」とか言いだしたぞ
このスレでは初出だな このスレではって本気で言ってるのかw
世界狭すぎw なんかスレを荒らしたようですみません。
tcp/ip通信をもっと勉強してから出直します >>377
外野が勝手に盛り上がってるだけだから気にしなくていいよ >>377
気にすんな
バカどもが自爆しただけだから
本日のバカトップ3はミスリードの先頭を切ったID:8pLXigSN、
到達確認とか言いだしたID:AB8Qragb、
意味不明の戯言垂れ流してるID:aGg7Z+yHだな >373
200と404を勘違いしてるのですねわかりますω >>379
自分がしたレスを速攻忘れてるのかな?
>>373 > 到達確認 >>381
お前バカ過ぎる
小学校低学年レベルの読解力 w >>382
本題で反論できなかったら無理してレスしなくていいから >>380
3バカにミスリードされて本質を理解できなかった知恵遅れのID:eJoj7htqには敢闘賞を上げよう >>383
「言い出した」って言葉わかるかな? w >>351
socket とか言ってるのはアホしかいないと言う現実 w >>379
ミスリードとほざくなら TCP 上でシーケンス番号振ってるメジャーな例をよろしく >>387
ひょっとしてタイムアウトとかキープアライブって理解できなかったのか? 3バカが誤解して勝利宣言してるようだから言っとくけどID:q6sk5dsoはオレじゃないから
ID:q6sk5dsoが無回答と言って勝利宣言しないように
>>388
IMAPのtagとかsshのchannel numberかな >>390
お前が誰かなんて知らんよ
どうでもいいし
>>365-366 で回答出てるからもう要らんだろって話だ
> IMAPのtagとかsshのchannel numberかな
IMAP の tag はまだ微妙だが ssh の channel は違うだろ >>392
技術系のスレでそんなことしか書けないならレスしなきゃいいのに... >>389
ん?>>389はID:q6sk5dsoなのか?
違うなら反応しなくてよくね?
それとも自演してるのを忘れて自爆?
>>390
違うなら反応しなくてよくね? >>394
3バカの上を行くバカが現れたか 支離滅裂 ちゃんと質問しないと相手にされない「それ系のML」 アンドロイドスマフォとRaspaiとをLANでIOTのデータやり取りをしたいのだが、一般的
にはソケット通信をするのかもしれないが、結構メンドクサイのでなんか楽な
プロトコルってないか? HTTPとか使うと何か問題ある? HTTPで要件満たすならそれでいいんじゃない?
サーバ書かなくていいしライブラリも多い
あとはAvahiに名前解決まかせたりとか 俺はラズパイ上にwebサーバー立ててwebアプリから操作できるようにしてる
そうすれば自分でプロトコル作ったりとかいらないし、スマホからもパソコンからも操作できる >410
そういう方法があるのか。えっ、RASPAIにはサーバーは最初からは入ってないの?
サーバーがあるという前提でそれにプロトコルを乗せるんではないのか? なんか「サーバー」というものに対して根本的な勘違いをしているような...
サーバーは普通のソフトの一つ
webサーバーとかメールサーバーとかいうけどそれはそのサーバーソフトのこと
(もしくはそのソフトを稼働させているマシンのこと)
webサーバーはhttpというプロトコルを実装したソフトだし、メールサーバーならsmtpとかのプロトコルを実装したソフト
ラズパイにはhttpを実装したソフト、つまりwebサーバーは最初からは入ってないから自分で入れる必要がある >412
えええ、そういう意味なの? webサーバー=httpサーバーってことなの
「WEBサーバー」って、いろんな機能が入ったサーバーの総称かと思っていた。
メールサーバーは「メールができるだけだろう」くらいにはわかっていたが、webサーバー
ってのはメールもhttpもsmtpもできるんだろうと思ってた。 「webサーバーを立てて」といわれるとかなり大層なものを立ち上げることをイメージ
するから、10MbyteのHttpソフトをロードするのとはちょっと想像できないよな。
WEBサーバー立ち上げ100万円です。
で設置して「えっ、メールするには別途100万円かかるの?」
ってなると詐欺かとおもってしまう。W うおー調べてみたら結構たいへんだな。「WEBサーバー立てる」でも「メールサーバー
追加100万でつ」でもまあ許したる。俺は300万もらう。W 馬鹿はどうしようもない、踏み台を作って他の人に迷惑をかけるw >>419
チャット クライアント サーバー プログラミング
くらいで調べてみたらどうなるんだ
こんなんでできんの?とか思うんだろうな コピペで終わり。300万。というわけにはいかんか? >421
調べてみたが、RasPaiにはあまり関係ないぞ。
>406
coapはUDPじゃないか。通信の信頼性がないだろ。ダイジョブか? ちょっと質問
1.RasPai2に WEBサーバーを乗せたい。何がいい。 目的 Httpでスマフォ接続
2.Wifiのアクセスポイントを入れたい。何がいい? 目的 Wifiダイレクト 候補
Apache
hostapd
希望 バカチョンでインストール >>423
仕様(RFC7252)を読めよ。eclipseのプロジェクトは実装例。RESTFUL(HTTP)でもできるしUDPでもセキュアにできる
ttp://coap.technology/ おっと、送信失敗したら何回かリトライするんだろ普通、TCPも同じだろ >>423
お前の知識の信頼性の方がない、>>426,427はお前には無理なのでスルーしていいぞ >427
UDPはフレームチェックシーケンスがないから、フレームに信頼性がない。
ロストしてなくても、中身が壊れている場合がある。
外面はプロのエンジニアでも中身が壊れてるとだめだろ。それとおなじさ。 This protocol provides a procedure for application programs to send
messages to other programs with a minimum of protocol mechanism. The
protocol is transaction oriented,
and delivery and duplicate protectionare not guaranteed.
and delivery and duplicate protectionare not guaranteed.
and delivery and duplicate protectionare not guaranteed.
and delivery and duplicate protectionare not guaranteed.
and delivery and duplicate protectionare not guaranteed.
and delivery and duplicate protectionare not guaranteed.
ここな。
Applications requiring ordered reliable delivery of
streams of data should use the Transmission Control Protocol (TCP) [2]. データグラムでロストや順序の入れ替わりは判るけど ペイロードが壊れてるってあるの? グダグダ言ってないで424にさっさと答えろよ。タコ >>440
いいですねその強気
一匹狼にはぴったりです えええ、そういう意味なの? webサーバー=httpサーバーってことなの
「WEBサーバー」って、いろんな機能が入ったサーバーの総称かと思っていた。
メールサーバーは「メールができるだけだろう」くらいにはわかっていたが、webサーバー
ってのはメールもhttpもsmtpもできるんだろうと思ってた。 「UDP」だけでどうやってデータを送信すんだ?
This protocol provides a procedure for application programs to send >444
それはだな coapって上司しだいなの。タコな部下でも上司がしっかりしてると
会社は成り立つ。お前らみたいなタコなUDPでも上司がいちいち面倒見てくれるので
ネットワークで一応食っていけるってことさ。W
わかった?
わかったらサッサと俺の質問に答えろ。 えええ、そういう意味なの? webサーバー=httpサーバーってことなの
「WEBサーバー」って、いろんな機能が入ったサーバーの総称かと思っていた。
メールサーバーは「メールができるだけだろう」くらいにはわかっていたが、webサーバー
ってのはメールもhttpもsmtpもできるんだろうと思ってた。 coapってLinuxなんかが動かず、TCPを実装する余裕がないような
もっと小さなデバイスが対象でしょ? 単機能のセンサーデバイスとか。 >451
実装の問題よりもTCPはオーバーヘッドが大きいので無駄が多いからだろ。 >452
WEBサーバーの次は、掘立て小屋でも立ち上げな。W HTTPサーバを実装するのは結構大変、あっ「WEBサーバー」ていうのかw お前ら10年前からだろ。W
俺は始めたのは3日前だものな。で既にお前らを超えてしまった。
なんか聞きたいことある? GPSを成立するためには相対背理論(特殊)を使わなければならない事を説明してください UDPってパケットの消失や重複や順序入れ替えが起こり得るって事になってますけど、
小規模な実環境(ハブ数台を間に挟んだPC同士の通信とか)では、どれ位の頻度で
起きるものなのでしょうか? こんなの見つけた
ttp://stackoverflow.com/questions/9196791/duplicate-udp-packets-how-often-it-happens
>>472
PCからPLC相手の通信をやってて、通信するパケットに採番する訳にもいかない
状況です。
消失は許容するとして、
順序入れ替え→1秒以上前の「古い」パケットと入れ替わる訳でもなさそう
重複→定期的にPC側のポート番号を変更(クローズ→再オープン)
…で逃げれるといいなぁ。 番号ふれない云々からするとMCプロトコルの1Eか?
PLCにもよるけど 同報(受けたところへ投げ返す)をサポートしてなくて、
固定のIPとポートに送り返すしかできない奴があって
クライアント側はbind でポート番号固定するしかないん 予めタイムアウトゼロ秒でrecv()して読み捨てれば重複しても排除出来るか。
>>475
横河のFA-M3です。PLCに送る(PLCの)コマンドに任意の番号とかを付加出来ないん
ですよ(同社の新しめのやつだと付加出来るらしいけど)。
固定のIPとポートって事は無いです(ネットワーク関係はBSD由来だそうで)。 UDPは、自ホスト以外で使わない方がいいと思う。
自ホスト内ならわりと便利だし >>471
あまりにも様々な条件が絡むので誰も答えられないし誰も保証してくれません
送信側、ハブ、受信側のどこでもパケット落ちが発生し得ます
それがIPプロトコルというものです
そもそもEthernetは100%伝送を保証していません >>478
自ホスト内だと、自ホスト内でCPUその他のリソースの奪い合いになり、
結果としてリミッタとして働くのも利点ですね。
>>480
順序が保証されない事を積極的に利用したネットワークスタックがあったら
やだなぁw ウインドーズとリナックスで動くCで書くネットワークアプリは
マクロでwinsockとsocketを場合わけするのが普通ですか?
なんで共通じゃないんですか?
2つ覚えないといけないから大変じゃないですか?
上の3つの質問をします。
よろしくお願いします。 >>483
俺は#ifdefで場合分けするけど
BSDソケット関数の範囲で使うなら全然大変じゃないよ select使うのがアホと言ってるやつがアホなんだよなあ
知ったか初心者なんだから黙ってればいいのに
WindowsとLinuxでソースを共通化する必要がある場合で一番簡単なのがselect使う方法
沢山のコネクション扱う場合でもスレッドをうまく使えば非同期使うより効率よく対応できる 大筋では似通ってるけどスレッドもOSの方言がきついな 質問です。
shutdownとcloseについて色々調べていたところ
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13105844663
ここで回答者が(意訳すると)
「socketをcloseせず、shutdownしただけなら、再度セッション張りなおすこともできるよ」
と答えているのですが、いくら調べてもその方法が見つけられません。
やり方が分かる方は、教えていただけると助かります。
(例えば)httpサーバを作る時に、クライアントのshutdown(s, SHUT_WR)をサーバで検知してリクエストの区切りを検知。
返送とshutdown(s, SHUT_RD);でレスポンスの終了位置を検知させる。
なんてことができるといいなぁと考えています。 >>494
TCPなら
socket() -- close()
connect() -- shutdown()
の関係。
shutdownした後にconnectが成功するTCP/IPのプロトコルスタックは見たことないけど。
AF_UNIXとかならうまくいくかもね。 >>494
その回答者がバカなだけ。>>498も同類のバカ。
そもそもcloseとshutdownはそいつらが言っているような関係ではない。 >>494
質問の前半と後半の関係がよくわからんが...
前半は何かいい手があるのかもしれないけどそんなことが必要になったことがないのでよくわからん
> (例えば)httpサーバを作る時に、クライアントのshutdown(s, SHUT_WR) をサーバで検知してリクエストの区切りを検知。
これは普通に read() のバイト数
= 0 で検出できる
> 返送とshutdown(s, SHUT_RD);でレスポンスの終了位置を検知させる。
サーバー側で shutdown(s, SHUT_WR) するか普通に close() すればいいだけ
shutdown(s, SHUT_RD) はあまり使う機会がない 後半で言いたいことは、TCPって基本ストリームで切れ目が無いから
切れ目を(shutdownで)入れたいってことでしょ
普通に改行コードとか使えばいいよ。HTTPならなおのこと >>504
そういう場合はTCP_NODELAYで制御しろよ >>509
TCP_NODELAYが何だか知らないならそういえばいいのにw >>510
もしかして、そのフラグ立てたらネットワーク遅延や再送が回避できるとか思ってる? >>513
どこをどう斜めによむとそういう妄想が出てくるのかな? >>514
TCPのストリームがくっつく理由を理解できてない馬鹿がいるから >>515
ああ、TCPのPSHの動作をしらないんだw >>516
もしかして、そのフラグ立てたらネットワーク遅延や再送が回避できるとか思ってる? >>517
どこをどう斜めによむとそういう妄想が出てくるのかな?
どうせお前の頭の中じゃ、遅延したらバッファにたまってPSHをつけても
くっつく、この程度のバカ認識なんだろ? >>518
実装次第だけど、少なくともくっつけてはいけないという意味のフラグでは無い。
で、くっつける実装はよくある 話にならんなw
"\r\n"を付けろなんていってるバカ相手だとこんなもんか。 >>521
TCPの実装やソケットの実装触ったこと無い素人だろ?お前
妄想で話するから逃げるしか無くなるんだよ 技術的な要素を何一つ書きもしないで罵倒を繰り返してるクズに言われても、
怒らせて解説を引き出そうとしている中学生にしか見えないわけでw TCP_NODELAY、PSHでどう解決するんだ?
>(例えば)httpサーバを作る時に、クライアントのshutdown(s, SHUT_WR)をサーバで検知してリクエストの区切りを検知。
>返送とshutdown(s, SHUT_RD);でレスポンスの終了位置を検知させる。 blocking i/oで常時readかけてれば、PSHで送られたパケットはくっつくことなくreadできるよ。
バークレィ由来のTCP socketはそうなっているはず。
実装的には、mbufなりskbuffなり、受信したパケットのそのものなり複製のチェインで
管理されているので、その通りにまとまらず複数回受信するようになっている。
winsockあたりは知らんから依存しないほうがいいけど、これに頼っている実装も多いよ。 >>525
PSHするならパケットの中身をTLVにでもすればリクエストの区切りなんて簡単に
検知するだろ馬鹿か。もっと単純な方法だってある。
ストリームを読みきったところが次のリクエストの途中かもしれない、という可能性が
一番の問題なのだから、PSHすれば丸ごと解決。 どうでもいいけど、TLVならまずヘッダだけ読んでヘッダの中の長さ分読めば、
別にTCP_NODELAYなんて使わんでもいいんじゃないかい?
元の話を理解してないから適当に言ってるだけだけど。 httpサーバーを その実装で は色々問題ありそうだけど
俺俺プロトコルで http に似た構造の応答になってるという話なら
アリかもしれない >>529
初心者が陥りやすい罠だなw
TCPストリームではTLVのヘッダ長分読めるとは限らないだろ。
ヘッダが読めても残りの長さ分読めるとは限らない。 無駄なこと
>(例えば)httpサーバを作る時に、クライアントのshutdown(s, SHUT_WR)をサーバで検知してリクエストの区切りを検知。
>返送とshutdown(s, SHUT_RD);でレスポンスの終了位置を検知させる。
以上 >>524 > 技術的な要素を何一つ書きもしないで罵倒を繰り返してるクズ
命中率の高いブーメランですね HTTPサーバでTCP_NODELAY?
QUICK/HTTP2/UDP的な実装をする話? >>535
そんなマシな話じゃないよ
>(例えば)httpサーバを作る時に
意図も理解できずにここだけ拾って、HTTPだぁ!\r\nが区切りでなきゃダメだ!って
思考停止してる馬鹿が騒いでいるだけの話w >>537
でなきゃダメなんて誰も言ってないから・・・ >>539
お前らが一人なのか何人なのか知らんが、
まともに代案を出して俺と技術で議論することすらできなかった時点で
お話にならないんだよ馬鹿がw >>540
お前の間違いが余りにも馬鹿すぎて一斉にツッコまれただけ >>540
とりあえず落ち着いて自分のレスを読み返してみろ TCP_NODELAY、PSHでくっつかなくなるとか一番やばいタイプの勘違い
狭い実験内ではそれでうまくいくように見えることもあるだろうが、だからこそヤバイ TCP_NODELAY も PSH もどっちかって言うとタイミングの指示だからねえ
しかも努力目標みたいなものだからそれに頼ったプログラミングとかあり得んわ >>494にはOSの指定が無い。突っ込み所漫才でした。 TCP/IPストリームに実データとして区切りを書き込まずに、
shutdownで1回分の送信の区切りを表現できるといいなぁと思ったんですけどね
(その後にcloseせずに負荷なくセッションを再構築できるっぽい書き込みだったので)
まあ無いってことですね
残念
それにしてもTCP_NODELAY使えはなかなか面白かったです
パケットが綺麗に順序よくrecvでき、割り込みも即座に解決できてる理想的な環境ならいけるかもしれませんね
私は遠慮しておきますが
16KB送信してきたのに対して、2KBでrecvしたりとか
パケットの並び替えが発生して1回のercvで2パケット分以上取得したりとか
問題ありすぎ TCP_NODELAYで1024バイトを2つsendして、そのあとのタイミングで
2048バイトで受信待ちをしたらどうなるか?
2048バイト1回で受信しきる実装はおそらくこの世にありません。
2048バイトでreadしても1024バイトが2回受信できます。
嘘だと思うなら試してみましょう。 TCP_NODELAYで、一発のsendで送ったものが2度以上のrecvに分かれるなんて普通に起こるんだが
ちなXP時代のWinsock
そんなに綺麗にいくんならネットワークプログラミングで苦労しないんだよなあ・・・ >>551
とりあえずWin10でwinsock2で
TCP_NODELAYかけたソケットに5バイトのsendを4回行って
recv1024バイトで受け止めたら一発で20バイトとれたぞ
お前がいるのはあの世か?
というか一発でとれなかったらTCPの受信効率悪すぎてヤバイから実験するまでもないことなんだがな・・・ >>551
とりあえず>>517を理解することから始めろ struct sockaddr* を引数にするライブラリを書いているんだけど
どうせみんな struct sockaddr_storage に保存するんだし
もういっそライブラリ内での引数は全部 struct sockaddr_storage* にしてもいいよな
対外的なところだけ struct sockaddr* にするわ 単純にsocketを使ってTCP/lPでクライアントとサーバーで通信するプログラムをLinuxのC言語で作っています。
ただsocketはノンブロッキングに設定しています。
クライアントはconnectを呼んだ後に正常にサーバーと繋がったか知りたくてselectを呼んでいますが、待ち状態からリターンしてきません。
サーバー側はacceptしており、その後に試しにクライアントへデータを送るとselectがリターンしてくるので、確実にsyn ackはクライアントへ返っていると思います。
selectはサーバーからのsyn ackでは待ち状態は解除されないのでしょうか。
やりたいことはconnectではサーバー応答を待たないで即リターンし、コネクションが確立できたかの結果は別途知りたい。
ググるといくつかのサイトでsocketをノンブロッキングに設定して、connectをコールした後にselectで待つサンプルがありました。
それを真似たのですが、サーバー側はconnec待ちの状態で、クライアントがconnectコール後にselectをコールしてもselectはリターンしてこない。
こうすれば出来る、あるいはそんなこと出来ないなどありましたらご教授お願いします。 select呼んでるのに待ちが発生とか
なんかやらかしてる connectがEINPROGRESSになった後、本当にエラーになってるんじゃないか?
selectに回す前にMSG_PEEKでrecvするといいよ。エラーならrecvのエラーで
取得できる。 select(2) 第3引数を NULL でやってたり? >>570
何言ってるかわからん。きちんと説明できない馬鹿なの? >>579
横からだけど>>570ってかなり分かりやすいと思うんだけど
とりあえずクライアント側でメッセージの取りこぼしが無いかどうか見直してみたら 横からだけど「パケットをダンプ」が出来ないんだろう >>570さん自演はやめてください。みっともないですよ。 "!"!"!MOHYO!"!"!"2"
1.[[[HUn≒MUL=POSI≠MAHO+Set*HUGE=SAGE=LOGE=NOISIA=0≒1]]]
2-[[[[[[[E=RAT%2^10%SPELAn!%]&!TOWA&!PEG#!NOLNOL8!#!HYAGO!2#]1*2=1]U]S]0]O]!#PAL!
3--->PAGODOL7&!@17,2222734.15&[[[%%RENRAK6,9,99"^10"]#$11.2%}]KAIJ]{
41.2SSS = RALQI2.β{{{RA4,0,238^97,1,$.S.L.E.I.L."Q5352.15Q"JOL"5*3>>>41.3q}}}>1.2<0
.3φTALHOSI"0">>>105.10<1.235<1.2>51≠52===55.632>V="E=0.835"of"1.32","632",0.683,1.end
{ 本当におかしくなったようだ。
>>570程度のことが理解できなくて、悔しいんだろうなあ。 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 諸先輩型、お知恵拝借したく…。
IE11で動かすJavaScriptから、同じPC上のQt5アプリケーションのQlocalServerにメッセージを送りたいのです。
JavaScriptにはどのような実装をすればよいでしょうか?
制限として、Node.jsはインストールできません。それ以外のJavaScriptのライブラリであれば可です。(ただし、HTMLのheadで読み込めるライブラリに限ります。) >>590
590です。
自己解決しました。
IE11上ではJavaScriptのWebsocketは使用できないと思い込んでいたのですが、使用できることに気付き、解決できました。
※IE9互換を強制していたのが原因でした(汗
大変お騒がせしました。 8バイトしかデータを送らない時に着信するまでに20秒くらいかかるのは
Nagleアルゴリズムのせいだと思ってTCP_NODELAYを設定したのだけど
改善しませんでした。OSはLinux4.15.15です
int flag = 1;
::setsockopt( sd, IPPROTO_TCP, TCP_NODELAY, &flag, (socklen_t)sizeof(flag) );
のような書き方をしているのですがフラグを指定するだけでNagleアルゴリズムを
抑制できるのでしょうか? TCP_NODELAY以前になんかおかしいと思う。
きっと別の理由だよ。 >>595
まずWireSharkとかでパケットがちゃんとでてるかから見てみよう >>595
20秒かかるならまずは名前解決を疑ってみろよ
resolv.confを窓から投げ捨てろ >>596
有難う、別の理由っぽいですけどまだ特定できていません
>>598
wiresharkの使い方が分からずまだよく分かっていない状態です
一応通信しようとした時にパケットは出ているような
>>601
特定の部分を通った時に起こる現象のようで、全て20秒かかるわけではないです
プログラム内部でIPとポートも取れていますので名前解決ではなさそうです
特定の部分というのも殆ど何もしていないような感じなのでよくわからない状態です selectの使い方がおかしくて、他のイベントひろうまで受信していないように
みえているんじゃないのかな。 そういや、Linuxならwireshrak使うまでもなくtcpdumpでよかろう。 >>608
自前プログラムを2つ作ってloでつなげています
Libev++を使っているのですが、その使い方が悪いのかも知れません
AとBのプログラムがあるとしてBがAに接続した時にそれぞれのプログラムで
Libev++のコールバックをev:READで仕掛けています
何か通信する時は横から開始する合図をコマンドみたいな形で送っています
お互いに送信するだけなら問題ないのですが、送受信した後短い通信をすると
20秒位反応しなくなるようです
連続して送受信しても症状が出ないし、症状が出ても待っていれば通信は完了するようです
長文失礼しました まずどこで20秒掛かってるか調べたの?straceですぐ分かるでしょ 不足してるのはどの知識でしょうか?
理論、仕様、実装、デバッグ 質問なんですが、
TCP の TIME_WAIT 状態のポートを回収する待ち時間が120秒の環境(os)で、
10秒毎に curl コマンドなどを動かす
↓
TIME_WAIT 状態のポートが増えていって最終的にはポート番号が枯渇し、
(connectで待たされて)120 秒に1度しかリクエストが実行されない、
という理解はあっていますでしょうか?
それとも足りなくなった段階で古い方から一度に沢山解放される? やってみればいいじゃない。
なんで最近の子は手を動かさないのかね。 いやそれが3秒に2回くらいcurlでファイル取ってくる処理をずっと動かしてても枯渇する様子がなくって
どうなってるのかな、と。
カーネルソース読めとか言われそうだが 実装依存をわかっていてなぜ聞くのか、めんどくせー奴 リソースの見方が分からないという質問かな、誰か教えてやれ Linuxだと枯渇するよ。
net.ipv4.ip_local_port_range
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_fin_timeout
あたりでググって解説読むといいよ。
自力でたどり着けない時点で、貴方にその仕事は向いていないけど。 処のところの 5ch が重かったり鯖落ちしたりというのは
5ch 自体の問題やネットワークの問題もあるが
実はアホの山下謹製専ブラ Jane Style 4.00版のせいだと判明した
これのTLS対応に欠陥があり、毎回フルハンドシェイクを行って鯖の負荷を増大させていた
その他にもツッコミどころ満載のクソソフトなので
使っている人を見かけたらすぐにゴミ箱に捨てるように言ってほしい TLSのハンドシェイクを鯖で行っているなら5ch運営が究極の馬鹿ということになるが。 やっぱりか、やたらメモリアクセスエラーが起きている ちょっと質問させてください
プログラムの勉強を初めて、スタンドアロンのアプリを作っていたんですが、最近ソーシャルな機能を入れてみたいと思い
ネットワークプログラムを勉強しているんですが
C#でクライアントを、PHPでサーバーといった構成で作ってみようと思っています
この場合とりあえずTCP/IPを勉強するって事でいいんですかね?
簡単なechoサーバーとクライアント作成まではできたのですが、ここから複数のクライアントの受付やどういった情報をどういった形式でやりとりしたらいいのかがさっぱりわからなくて立ち止まっています
今考えているのは、JSONでやりとりして、そこからコールバックでサーバー側の処理を行わせていこうかなくらいしか思いついていないです。 仕掛けはいろいろあるから、画面なりユーザーI/Fを決めると、シーケンスがわかって
んじゃどう作るかが見えると思う。 初心者の質問スレ辺りで聞けよ、QZと言う親切な奴がコーディングしてくれよ。
スレチ ゲームとかパフォーマンスにシビアなことしないんだっら、通常はhttpにjsonなりxmlでデータやり取りすりゃいいんじゃないかな。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
SMSAW C#のSocketを使って一度の接続で複数の特定長バイト配列を受信するプログラムを考えています。
接続はTcpListener.AcceptTcpClientAsyncで接続要求を受け取るとして、バイト配列の受信を複数回行うには
PollやSelectメソッドを使って無限ループで受信判定して監視するのが一般的でしょうか? GetStreamでストリームを取得して好きにすればいいんじゃないの
TCP自体ストリームだから特定長受信したいと思ったって一度で受信できるかは
わからんよ。ストリームとして正しく固定長受信処理をしたほうがいい。 送信側が "123456" と1回で send しても
受信側は "12" "3456" と複数回の recv に分断されることだってある
ストリームってそういうもん ありがとうございます。
NetworkStream.ReadAsyncメソッドあたりを使って受信します。 教えてください。OSはLinuxです。
ローカルホスト環境ですが、Apacheのドキュメントルートに入れたHTMLファイルを、
ソケットプログラミングから閲覧する方法が分からないです。
inet_addr("127.0.0.1");
ではダメなのでしょうか? 単に"http"というものわかっていないのか
それともvhostの関係で指定が足りないのか
それ以前に http://127.0.0.1/ やhttp://localhost/ で見れるのかどうか struct hostent *host;
っていう構造体が事前に用意されてるという理解でよろしいですか?(まだ未確認) >>652
いちおう、手元のパソコンで一般のWebブラウザ(FirefoxやChrome)を使えば、
自分のパソコンからローカルホストのページや自作htmlを
見に行ける状態には、なっています。 gethostname() と gethostbyname() の違いが分からない。
最初「gethostbyname」を使ったんだけど、
警告: implicit declaration of function ‘gethostbyname’; did you mean ‘gethostname’?
って出てしまう。 libcurl使ったら?サンプルをちょっといじるくらいでできるよ。
とても自力でソケットプログラミングできるようには。。。 getaddrinfo ってのを使わないとダメなの?
とりあえず、疑問には答えてほしいと思う。
gethostname() と gethostbyname() に名前以外に違いはあるの? RTFMなんだが,,
gethostname(3)は自分のホスト名を返す
gethostbyname(3)は引数で与えたホストの情報を返す(IPv4)
getaddrinfo(3)はIPv4,v6両方対応. >>660
了解。
gethostbyname と gethostname は違うんですね。 >>660
マニュアルを読んでも経緯が分からないから聞いています。
警告: implicit declaration of function ‘gethostbyname’; did you mean ‘gethostname’?
と表示される理由は関数の仕様を見ても書いてないですし。 それ調べるなら警告を出しているコンパイラのマニュアルの方だろうが、
gethostbynameを宣言してるヘッダをincludeしてないんじゃね? man見りゃ書いてあるだろ。
includeがその通りになってないんだよ。
そこにたどり着けない時点でやってることがスキルに対して
背伸びしすぎ。 man 3 gethostbyname すると
#include <netdb.h>
ってSYNOPSISの最初にあるでしょ.
このレベルを知らずにCでプログラム書こうと思う時点で,
コアラ大将のTCP/IP入門でも読んで出直しておいで,
とおもってしまう. >>666
それならインクルードしてある。
原因は判明して、単にプログラムにエラーがあっただけっぽい。
コンパイラが気をきかして、 gethostname の警告を出してただけっぽい。
struct hostent *host;
host = gethostbyname("localhost");
printf("正式名: %s\n", host->h_name);
printf("別名 : %s\n", host->h_aliases[0]);
で動くようになった。
ここから先が分からない。
ためしに
host = gethostbyname("localhost/dample.html");
とやってもダメだったし。 無能すぎてlibcurl使うのすら無理そうだから、
system関数でcurlを呼んで、ファイル入力から読んだほうがいいよ。
1000m走ったことない人がフルマラソンに挑むくらい無謀だよ。
お前の知能と知識レベルでは無理。 >>668
どういう開発手法がいいかは聞いていません。
apacheのローカルホストにあるhtmlにソケットプログラミングでアクセスする方法について聞いています。
もし説明が長くなるなら、原理の要点だけでもいいので、質問している事に解答してください。 IT掲示板群 ttp://x0000.net/forum.aspx?id=15
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など
simulationライブラリで純粋な関数式プログラミングをする
ttp://x0000.net/topic.aspx?id=3631-0
UIライブラリ (C#, 2D) を作ったよ
ttp://x0000.net/topic.aspx?id=3688-0
連続と離散を統一した!
ttp://x0000.net/topic.aspx?id=3709-0
4Dエンジン
ttp://x0000.net/topic.aspx?id=3677-0
matrixのライブラリ
ttp://x0000.net/topic.aspx?id=3711-0
ある強力なFor関数
ttp://x0000.net/topic.aspx?id=3630-0
SQLライブラリ
ttp://x0000.net/topic.aspx?id=3675-0 >>670
初心者の質問に解答しないなら、なんで掲示板にいるんですか?
少なくとも、私がいま質問してる事は、市販の書籍には書いてない内容ですよ?
市販の理工書の専門書を読んでも、TCP/IP一般の解説書は売ってても、それをどうソケットプログラミングするかの書籍は、
いまは絶版・休刊ですよね?(2001年頃には売ってましたが、いまは無いです)
それすらも、あらかじめネットのブログを読みあさってから質問しないといけないんですか? わからないところ一箇所二箇所質問するくらいならいいけど、この調子だと
目的を達成できるまで何十回質問することになるやら。 >>672
>それすらも、あらかじめネットのブログを読みあさってから質問しないといけないんですか?
そうだよ。わかってるじゃん。 >>672
中古本や電子書籍なら、古い本も購入できるのかもしれませんが、
その場合でもバージョン違いが生じるので、現在のOSにはそのままでは適用できないので、
結局、ネットのマニュアルに頼るか、ネットの掲示板で先人に聞くしかないと思います。
ネットの公式マニュアルでは、全体像や経緯が分かりません。すでにある程度わかっている人が、細かい仕様を確認する場合にしか、使えません。
2001年ぐらいとは状況が違い、いまは出版市場にC言語ソケットプログラミングの書籍はありません(これはアマゾンで以前に調べました)。 >>675
> 2001年ぐらいとは状況が違い、いまは出版市場にC言語ソケットプログラミングの書籍はありません(これはアマゾンで以前に調べました)。
その代わり、ネットにくさるほど情報が転がってる 2001年くらいから何も変わってないから、
200X年の本を買って読むといいよ。
アマゾンで調べたら複数の書籍が選べるから
好きなのから読めよ。
だいたいあんたの使ってるC言語もC11やC17じゃなくてC99なんだろ? >>673
何十回も質問されて、何が嫌なんですか?
よく分かりません。
「同じことを質問されたら嫌」なら分かりますが?
出版市場にソケットの解説書が無い以上、
掲示板のソケット関連のスレは質問される運命にあると思います。
(それが嫌なら、本を出版してください。) べつに質問するのは勝手だよ?答える気が無くなるというだけで。
あとはまぁ、誰にも相手にされなくなったからといって荒らし化するのは勘弁。 > (それが嫌なら、本を出版してください。)
こんなこと言い出す奴の相手するなよ… >>678
あっちのスレではWinSockなのに
環境はLinux? エラー処理も知らない度素人なんだら虐めるなよ(爆笑)RFCを調べて見る(大爆笑) 相手するから居着くんだろ
優しくしちゃいかん相手かどうかも見分けられない奴が
中途半端に書くんじゃないよ >>667
うーーーん
>ためしに
>host = gethostbyname("localhost/dample.html");
>とやってもダメだったし。
この時点でsocketプログラムの流れとか関数の意味が理解できていないことは
わかるんだけんど、みんなが言うとおり親切に説明してくれているページとか
読んでもう少し基礎知識付けた方が良いと思うよ
たとえば
https://www.geekpage.jp/programming/linux-network/
なんかは割りと親切に書いてあってサンプルも載っているし
あ、LinuxじゃなくてWindowsでVSだとか言われるとまた話がややこしくなるけど
ここにそのものズバリHTTPのクライアントサンプルとかも載っているんで
読んでみたらどうかな >>684
メアド送って二人でやってくんないかなあ 場外の人間に限って「外野が喚く事ではない」というね 相談でもなんでもないけど落とし穴に落ちたんで聞いとくれ(落とし穴というより自損事故)
ローカルサーバ(いや、ローカルでなくても起こるか)で、間違ったURLだったときにリダイレクトしてるんだ
んで、リダイレクト先のURLまちがえた…
それも301でリダイレクトしちゃってた テヘ 笑いどころはどこ?
ブラウザ側でToo many redirectsで止まるだろ? >>693
自分にリダイレクトじゃなく、誤URLに永続的リダイレクトだよ
ブラウザによるかもしれないけど、301が返るとリダイレクト先を記憶
そのアドレスへのアクセスはブラウザ内でリダイレクト先に書き換えられる
結果としてブラウザ側でのリセットが必要 ああ、chromeだな。
いきなり301を返すようにするのをやめたほうがいいぞ。
307あたりで試してから恒久対処なら301にするといい。 だから、それも含めてミスったって言ってるんだろ
アホかよ >>695
すごいな、一発でブラウザ特定されたw
ブラウザの特性って頭に叩き込まれてるのか
あ、じゃ質問
デカイサイズのチャンクでのレスポンスを返した時に、chromeとedgeがコネクションを切断するんで、書き込みがWSAECONNABORTED(10053)でエラーになるんだ
試した中ではfirefoxだけ問題ないんだけど、
レスポンスの実装を失敗していてfirefoxがザルなのかな? ちなみにvideoタグからのgetでサイズは21MBほど
動画はどのブラウザでも問題なく再生される [NGID:of4pwmcJ]>>/dev/null >>702
何様も何も、ここって本来は質疑応答スレだから>>1
であるなら、ブラウザの特性に詳しそうな人がいたら、質問を投げるのは普通じゃないかと
フレンドリーな書き方が気に障ったならご免なさい
教えろとか強要しないからセーフだと思ったんだ socketと主張するつもりかも知れないがスレチ
httpプロトコルの話ならweb板がふさわしい webクライアントの話、アプリの話、関係ない、クロームのスレへ行け >>697
コネクションを切断することが正しいかという話ならsocketの話じゃないから
ここで聞いてもダメかな
cromeとedgeがコネクションを切断すると「WSAECONNABORTED」になるのが
問題ならば、コネクションを切断しにきているのを知らせるエラーが返ってきて
いるってことなのでエラーハンドラを書きましょうって話かな >>707
そうなのですか
コネクションを切断してくるのは相手なので、レスポンスのヘッダに何か特定の指定が必要なのかと
送信データが残っているのにブラウザがチャンク受信を打ち切って切断する
というHTTPプロトコル上の問題だと思っていました
で、プロトコルならばネットワークプログラミングの範疇だとばかり
エラーハンドリングは入っているのですが、一々ログに出てしまっていて、対処できるならばしたいという理由でした 意味不明なローカールサーバのことを聞かれても分からんわw ローカル内部だとインターネット層を通さないだろ?
だからネットワークプログラミング的にはローカルと非ローカルのどちらであるのかってのは、問題を考えてもらう上で意味を持った条件だと判断したんだよ あ、いやここで最初に書いたときはリダイレクトで掘った墓穴ネタだったから無駄な情報だった! >問題を考えてもらう上で意味を持った条件
宿題は自分でやろうな? >>710
ローカル通信でも、AF_INETのソケットを使った通信ならば
きちんとソケットからプロトコルスタックに出力されて、
経路を引いた上で、ローカルの場合はループバックに出力し帰ってきて、
自分自身の別のソケットで受信する。
即ち正しくインターネット層の通信が行われる。 >>717
えっ、知らなかったありがとう
インタフェース層以前でバイパスされるんだと思い込んでた 708
710
718
並べると面白いな
自分でhttpって言いながらバイパスされるとか痴呆疑い有り >>708
プロトコルはネットワークじゃないとか原理主義者どもにはすまんが(煽り)
URLを叩いてファイルとしてダウンロードするとエラーにはならずファイルは一致
ということは送信側ではなくchromeとedgeのvideoタグの実装がどこかおかしい
ウィルス対策ソフトが何か悪さしてる可能性はダウンロードが成功することからかなり低い 三菱電機とかNECはウイルス対策ソフトが悪さをしたので
防衛情報をお漏らししちゃったのにね SMTPサーバでメールを送ろうとしています
YahooメールのSMTPサーバのホストはsmtp.mail.yahoo.co.jpですが
MXレコードで調べるとmx1.mail.yahoo.co.jpとなっています
MXレコードからSMTPサーバのホストを調べるにはどうやればいいですか? すいません、そんなこともわからない人は
SMTPなんて触らないでください。 ほんそれ
っていうかいちいちyahooのSMTPにアクセスするな
そのまま自分の所のSMTP鯖使え
自分がyahooと契約してるって話ならyahooの指示に従え MXレコードで回答されるホストではSMTP動いていないみたいだよ
昔と違ってSMTPで送りつけるとなんでも転送する仕組みではなくなっているので
メールサーバを構築して運用するならばそこら辺から調べないと出来ないよ >>728
OB25くらい理解してからレスしてほしいです。 OSCで複数のパスに複数のデータを送信するのって、処理負荷重くなりますか?
send("/aaa",111)
send("/bbb",222)
send("/ccc",333)
....
みたいなのを1秒間に3000回とか送信するより
send("/json","[111,222,333.....]")
みたいに一回に分けて送信する方が、送信側の端末での処理負荷は軽い気がするのですがどうなのでしょうか? >>731
重いからHTTP2が出てきた、と理解してる 要求順に処理される必然があるからHTTPパイプラインでいいんじゃない。 UDPでも保証されると思っているのか
TCPでも保証されないと思っているのか
そしてどこにwをつける要素があるのか
そしてそして、どこが他人を素人呼ばわり出来るほどのプロフェッショナルなのか UDPでパケットを投げた順に処理してもらうには
ペイロード中にそれなりの細工が必要なんだけど
その工夫はなされてる前提なの? …… もしかしてOSIと言いたかった?
骨董品だなぁ OSCも知らない生きている価値のない究極のごみクズ。 仕様、実装、レイヤーを区別できない素人はレスしないようにw 有識者の方、ご教示ください。Win10 64bit/cygwin64(gcc 7.4.0)環境で、C言語によるUDPポートチェックを試みています。UDPソケットでsendto()を要求した後、タイムアウト付きのselect()でICMPソケットのreadfdsを監視しています。目的のUDPポートは閉じているため、Wiresharkでは期待どおり"port unreachable"の受信を確認しています。しかし、readfdsがreadyにならずにselect()ではタイムアウトが生じ、UDPポートは空いていると判断してしまいます。どうもICMP受信をアプリケーションに返却してない(?)ようです。何か情報をお持ちではないでしょうか?以下コードの抜粋。
send = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
recv = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);
dst_addr.sin_addr.s_addr = inet_addr("192.168.1.100");
dst_addr.sin_port = htons(12345);
sendto(send, NULL, 0, 0, (struct sockaddr *)(&dst_addr), sizeof(dst_addr));
tv.tv_sec = 1;
tv.tv_usec = 0;
FD_ZERO(&readfds);
FD_SET(recv, &readfds);
if(0 > select(recv+1, &readfds, (fd_set *)NULL, (fd_set *)NULL, &tv))
{
fprintf(stderr, "select() error.??/n");
} else {
if(FD_ISSET(recv, &readfds))
{
recvfrom(recv, buf, MAXBUF, 0, NULL, NULL);
ip = (struct ip *)buf;
ihlen = ip->ip_hl << 2;
icmp = (struct icmp *) ((char *)ip + ihlen);
if ((ip->ip_src.s_addr == dst_addr.sin_addr.s_addr)
&& (icmp->icmp_type == ICMP_UNREACH)
&& (icmp->icmp_code == ICMP_UNREACH_PORT)
{
fprintf(stdout, "NOT open.??/n");
} else {
fprintf(stdout, "Unexpected ICMP response.??/n");
}
} else {
fprintf(stdout, "May be open (due to a timeout).??/n");
}
} アドバイス
LinuxかWindows winsockでやれよ wsl2やらコンテナ全盛の昨今でもsygwinやらmingwやらって需要あったんだなビックリ 仕方なくPHPかJavaScriptどっちか勉強しなければいけなくなったんだけど
今からやるならどっちがいい? javascriptでネットワークプログラミング(笑) PHPでネットワークプログラミングって方が辛そうな気がするが WindowsのTCP/IP実装に複数の重大な脆弱性、今月のセキュリティパッチはかならず適用を
ブルースクリーンが引き起こされるサービス拒否(DoS)脆弱性はすぐに攻撃が出回る可能性
2021/02/10
https://forest.watch.impress.co.jp/docs/news/1305583.html 誰か居ますか・・・質問なのですが、
winsock2を使ってwebサーバーからファイルを受信する処理があるのですが、
現状では所定時間間隔で新ファイルがあるかどうかポーリングしています
これをロングポーリングに処理を変更して各所の負荷を低減させたいのですが、
そもそもwinsock2・クライアント側のみの修正で実現可能でしょうか?
可能であれば、実現方法のヒントをお願いしたくよろしくお願いします なお、現状ではhttpレスポンスヘッダーのLast-Modifiedを利用する方法でも
負荷の低減は出来そうですが、でも結局はヘッダ分の通信は頻繁に行われるままですので
上記の質問に至りました
ファイルの有無だけを調べようにもwebサーバーからは即時404が返ってくるだけなので
ロングポーリングが可能なのか疑問ではありますが メールのPOP3でも同じようなことやってるし
サーバー側から変更毎にプッシュしてくるようなサービスでない限り
限界はあるんじゃない? HTTP の GET の代わりに HEAD でもだめって話なら
間隔あけるしかないだろ
クライアント側にソースあるなら書き換えれば済む話だし
無いならクライアント側に近いルーターで定期的に HTTP 遮断してみたら? 人が居た・・・ありがとうございます
>>783-786
この場合、HEADでやってて問題ない感じですかね
今時はWebSocketでPUSHが普通みたいですが、レガシーな環境では改造コストが高すぎて
ロングポーリングにたどり着いた次第です(クライアント側の改造だけで済みそうに思えたので)
本件は特にシビアなレスポンスは必要ではなく数秒くらいラグがあってもいい(10秒を超えるとう〜んですが)
ので、HEADで問題ないようであればこれでいきます
どうもありがとうございました >>787
サーバ側の仕様が分からんので分からんと書いたのだ、他人に説明する努力をしろ >>788
仕様と言ってもよくあるレン鯖で apache 2.4.x、nginx 位しか分かりません
鯖側に自前システムを入れることが可能かどうかということですか? ロングポーリングを、ただポーリングする間隔を伸ばしただけとか思ってそうだな
ロングポーリングするなら必要なのはむしろサーバ側の改修なんだが >>790
もちろんそのような感覚を持っていたのは確かですが、その辺の具体的なところは全く分かっていない故の質問です
頻繁すぎるポーリングでWEBサーバーに怒られたこともあるので、いい対策はないかというのが本筋ではあります だから、環境はどうでサーバ側はどこまで変更できるんだと
具体的な話がなにもないなら具体的な回答は無理だぞ >>792
AWSのようなクラウドサービスではなく、安価な共用レンタルサーバーです
多分サーバー側は何も弄れません
質問の要点は最初の>>781に書いている通り、
>そもそもwinsock2・クライアント側のみの修正で実現可能でしょうか?
と書いていますので、通常ポーリング以外はサーバー側の対応・変更が必須なので
不可能という結論でしょうか? >>793
そもそも何をしたいのか、何をしたらいいのかわからないようであればお前には無理 >>793
それ以上の説明ができないような理解度なら
その結論でOK 環境がどうと、何を聞かれてるのか自分にとっては大ざっぱすぎて分からないのですが
そのレンタルサーバーの機能一覧でいいのですか?CPUですか?OSですか?
今自分が動作確認で使っているところはこれですが、どこのレンタルサーバーを使うのか、どのプランを使うのか
それはユーザー次第の話です
https://www.xserver.ne.jp/functions/
サーバーに何が必要だと書いてもらえると話は早いと思うのですが 無理なのは分かりましたが、そちらが環境を聞いているのでしたら逆に必要な環境があるのでしょうから書けるでしょ?
書けないのですか?知らないのですか? あなたが自分で聞いておいて書けないんですから、そりゃダメでしょうね COMETならこうSSEならこうWebSocketならこう〜みたいな話になるかと思ったら環境マウンターしか居なくて草 回答最初から出て解決してるんだから終わっときゃいいんだよ
何の有効ワードも書いてない中身スカスカのお前のスレ汚しは賛同できん 適切なアドバイスが出来るんなら必要環境がある前提で○○しろって一行書くだけなのに
俺の分かるように環境書けってやりとりだけを延々と続けるのはただの寂しがり屋か暇人やな 勘違いしとった、ファイルサーバね、よくわからんがwebサーバを使うならhttpプロトコルなので
ソケット関係なし、よってスレチ ファイルサーバーをポーリングで監視してる話として延々と環境聞いてたのか?
色々ヤバすぎるやろ ■ このスレッドは過去ログ倉庫に格納されています