ネットワークプログラミング相談室 Port30 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2014/10/31(金) 07:57:16.24ID:2NZQQB6u
主にソケットに関しての質疑応答スレッドです。

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/
566デフォルトの名無しさん
垢版 |
2017/08/25(金) 14:34:17.71ID:0nrK3Ckt
ネット障害 国内各地で発生 総務省など情報収集
https://mainichi.jp/articles/20170825/k00/00e/040/278000c
567デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:43:16.35ID:HOqv4vPr
単純にsocketを使ってTCP/lPでクライアントとサーバーで通信するプログラムをLinuxのC言語で作っています。
ただsocketはノンブロッキングに設定しています。
クライアントはconnectを呼んだ後に正常にサーバーと繋がったか知りたくてselectを呼んでいますが、待ち状態からリターンしてきません。
サーバー側はacceptしており、その後に試しにクライアントへデータを送るとselectがリターンしてくるので、確実にsyn ackはクライアントへ返っていると思います。
selectはサーバーからのsyn ackでは待ち状態は解除されないのでしょうか。
やりたいことはconnectではサーバー応答を待たないで即リターンし、コネクションが確立できたかの結果は別途知りたい。
ググるといくつかのサイトでsocketをノンブロッキングに設定して、connectをコールした後にselectで待つサンプルがありました。
それを真似たのですが、サーバー側はconnec待ちの状態で、クライアントがconnectコール後にselectをコールしてもselectはリターンしてこない。
こうすれば出来る、あるいはそんなこと出来ないなどありましたらご教授お願いします。
2018/02/03(土) 09:49:25.96ID:pP2dxBQr
まずパケットをダンプして見たら
569デフォルトの名無しさん
垢版 |
2018/02/03(土) 09:49:30.43ID:qWVkS+Es
select呼んでるのに待ちが発生とか
なんかやらかしてる
2018/02/03(土) 10:21:23.77ID:5+N/4dbU
connectがEINPROGRESSになった後、本当にエラーになってるんじゃないか?
selectに回す前にMSG_PEEKでrecvするといいよ。エラーならrecvのエラーで
取得できる。
2018/02/03(土) 10:32:27.09ID:bM1piKWo
select(2)  第3引数を NULL でやってたり?
2018/02/03(土) 11:29:21.54ID:diDsLtky
質問者は???状態か
2018/02/03(土) 12:00:34.03ID:R5rU++Gd
>>572
動くコードを寄越せや
と思ってそう
2018/02/03(土) 12:28:18.58ID:Zh144c7Y
まず動かないソフト晒せや
575デフォルトの名無しさん
垢版 |
2018/02/03(土) 12:30:38.79ID:jcEuZ+bz
先ずは自分のコード晒せと思ってそう
2018/02/03(土) 20:46:46.39ID:jVO3D5B/
>>567
投げ捨てか
2018/02/04(日) 11:40:23.51ID:hychyaav
>>567は逃亡確定、解散
2018/02/04(日) 14:23:55.13ID:cGhYp1tS
>>577
え、今まで待ってたの?
2018/02/06(火) 13:04:08.73ID:7vEMaXgn
>>570
何言ってるかわからん。きちんと説明できない馬鹿なの?
2018/02/06(火) 23:14:36.77ID:mkSBl8xw
>>579
おまえのお母さんじゃないんだけど?
581デフォルトの名無しさん
垢版 |
2018/02/07(水) 05:21:28.74ID:d07AIdFv
>>579
横からだけど>>570ってかなり分かりやすいと思うんだけど
とりあえずクライアント側でメッセージの取りこぼしが無いかどうか見直してみたら
2018/02/07(水) 10:00:13.45ID:2/HDdqqu
横からだけど「パケットをダンプ」が出来ないんだろう
2018/02/07(水) 12:22:28.37ID:TouhVGwr
>>570はそんなこと言ってないのにね
584デフォルトの名無しさん
垢版 |
2018/02/07(水) 16:00:04.81ID:bLqJ09hb
文盲なのさ
2018/02/07(水) 16:00:50.43ID:2YT0rYkL
>>570さん自演はやめてください。みっともないですよ。
586デフォルトの名無しさん
垢版 |
2018/02/07(水) 22:28:35.16ID:MTpdY7NJ
"!"!"!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

{
2018/02/07(水) 22:47:48.45ID:TouhVGwr
本当におかしくなったようだ。
>>570程度のことが理解できなくて、悔しいんだろうなあ。
2018/02/16(金) 06:06:35.28ID:W1XJdyx1
☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
2018/03/24(土) 17:41:30.83ID:fT1SCAXE
>>587
>>585
590デフォルトの名無しさん
垢版 |
2018/04/02(月) 21:26:10.59ID:Pnq6v0Lh
諸先輩型、お知恵拝借したく…。
IE11で動かすJavaScriptから、同じPC上のQt5アプリケーションのQlocalServerにメッセージを送りたいのです。
JavaScriptにはどのような実装をすればよいでしょうか?
制限として、Node.jsはインストールできません。それ以外のJavaScriptのライブラリであれば可です。(ただし、HTMLのheadで読み込めるライブラリに限ります。)
2018/04/03(火) 09:36:51.96ID:9o9ogUOH
知恵ありません
592デフォルトの名無しさん
垢版 |
2018/04/03(火) 20:33:05.00ID:21NZQbQq
>>590
590です。
自己解決しました。
IE11上ではJavaScriptのWebsocketは使用できないと思い込んでいたのですが、使用できることに気付き、解決できました。
※IE9互換を強制していたのが原因でした(汗

大変お騒がせしました。
593デフォルトの名無しさん
垢版 |
2018/04/04(水) 01:59:20.83ID:h2UR4/YM
意味もなくバージョン強制する糞アプリってあるよね
2018/04/04(水) 09:35:58.69ID:Wk9X/T76
(javaのクライアントを使えば万能)
2018/04/14(土) 10:16:22.80ID:xbLOPvem
8バイトしかデータを送らない時に着信するまでに20秒くらいかかるのは
Nagleアルゴリズムのせいだと思ってTCP_NODELAYを設定したのだけど
改善しませんでした。OSはLinux4.15.15です

int flag = 1;
::setsockopt( sd, IPPROTO_TCP, TCP_NODELAY, &flag, (socklen_t)sizeof(flag) );

のような書き方をしているのですがフラグを指定するだけでNagleアルゴリズムを
抑制できるのでしょうか?
2018/04/14(土) 10:51:40.53ID:HWfDX8oO
TCP_NODELAY以前になんかおかしいと思う。
きっと別の理由だよ。
2018/04/14(土) 12:47:40.04ID:f4KKMXqG
頭が悪いんだろう
2018/04/14(土) 13:05:59.74ID:aYmqXLA5
>>595
まずWireSharkとかでパケットがちゃんとでてるかから見てみよう
599デフォルトの名無しさん
垢版 |
2018/04/14(土) 15:52:31.59ID:1T8oabCl
タイムアウトしてるな
2018/04/14(土) 16:11:23.89ID:m1ARv4OD
何が出るかな、何が出るかな、後出し
601デフォルトの名無しさん
垢版 |
2018/04/14(土) 17:57:24.99ID:3+pJLfBU
>>595
20秒かかるならまずは名前解決を疑ってみろよ
resolv.confを窓から投げ捨てろ
602デフォルトの名無しさん
垢版 |
2018/04/14(土) 18:05:10.78ID:U01UEKcX
Happy Eyeballs ?
603595
垢版 |
2018/04/14(土) 19:00:22.12ID:xbLOPvem
>>596
有難う、別の理由っぽいですけどまだ特定できていません

>>598
wiresharkの使い方が分からずまだよく分かっていない状態です
一応通信しようとした時にパケットは出ているような

>>601
特定の部分を通った時に起こる現象のようで、全て20秒かかるわけではないです
プログラム内部でIPとポートも取れていますので名前解決ではなさそうです

特定の部分というのも殆ど何もしていないような感じなのでよくわからない状態です
2018/04/14(土) 21:42:54.27ID:ENYDOYLp
意味不明
2018/04/15(日) 09:33:58.52ID:jf3zvGbL
selectの使い方がおかしくて、他のイベントひろうまで受信していないように
みえているんじゃないのかな。
2018/04/15(日) 09:35:28.12ID:JPDzHIQl
エスパーお疲れ
2018/04/15(日) 09:39:15.32ID:tp2QT14K
そういや、Linuxならwireshrak使うまでもなくtcpdumpでよかろう。
2018/04/15(日) 11:23:03.92ID:CQSd9Wz5
ところで相手、ネットワークはどうなってるの?
609595
垢版 |
2018/04/15(日) 17:36:20.40ID:hw4ypno6
>>608
自前プログラムを2つ作ってloでつなげています

Libev++を使っているのですが、その使い方が悪いのかも知れません
AとBのプログラムがあるとしてBがAに接続した時にそれぞれのプログラムで
Libev++のコールバックをev:READで仕掛けています
何か通信する時は横から開始する合図をコマンドみたいな形で送っています
お互いに送信するだけなら問題ないのですが、送受信した後短い通信をすると
20秒位反応しなくなるようです
連続して送受信しても症状が出ないし、症状が出ても待っていれば通信は完了するようです

長文失礼しました
2018/04/16(月) 13:02:30.35ID:oApVoahS
まずどこで20秒掛かってるか調べたの?straceですぐ分かるでしょ
2018/04/16(月) 14:00:10.96ID:DUyR1W4O
質問は「デバッグの方法がわかりません」でした
2018/04/17(火) 10:54:35.04ID:YZqFj8BZ
不足してるのはどの知識でしょうか?
理論、仕様、実装、デバッグ
613デフォルトの名無しさん
垢版 |
2018/04/17(火) 13:09:56.95ID:QO/6Yzum
カニンガムの法則を覚えろ
2018/04/17(火) 13:40:50.01ID:UaggxLFX
揚げ足を取られる 掲示板の法則
2018/04/17(火) 15:40:59.32ID:6Z/0s27P
「賢い質問の仕方」を見ろよ、だろ
616デフォルトの名無しさん
垢版 |
2018/04/17(火) 15:43:43.29ID:CCYPJkgd
スレチ
2018/04/17(火) 16:36:27.63ID:1WSDtgRH
イタチ
2018/04/17(火) 20:52:58.70ID:EgRHZf0r
次のアホどうぞ
2018/04/18(水) 08:33:35.50ID:EU/tZBmZ
俺が全員分のアホ吸収したるから落ち着けよ
2018/04/18(水) 17:54:43.21ID:iZpDQ/7n
質問なんですが、
TCP の TIME_WAIT 状態のポートを回収する待ち時間が120秒の環境(os)で、
10秒毎に curl コマンドなどを動かす

TIME_WAIT 状態のポートが増えていって最終的にはポート番号が枯渇し、
(connectで待たされて)120 秒に1度しかリクエストが実行されない、
という理解はあっていますでしょうか?

それとも足りなくなった段階で古い方から一度に沢山解放される?
2018/04/19(木) 03:43:39.16ID:s5A0Y+Tw
やってみればいいじゃない。
なんで最近の子は手を動かさないのかね。
2018/04/19(木) 06:04:34.14ID:c48O4SX1
いやそれが3秒に2回くらいcurlでファイル取ってくる処理をずっと動かしてても枯渇する様子がなくって
どうなってるのかな、と。

カーネルソース読めとか言われそうだが
2018/04/19(木) 09:12:49.59ID:kuj4iymt
実装依存をわかっていてなぜ聞くのか、めんどくせー奴
2018/04/19(木) 09:59:49.88ID:GDnzBlki
リソースの見方が分からないという質問かな、誰か教えてやれ
2018/04/19(木) 10:13:56.30ID:vUDsscfK
Linuxだと枯渇するよ。
net.ipv4.ip_local_port_range
net.ipv4.tcp_tw_recycle
net.ipv4.tcp_fin_timeout
あたりでググって解説読むといいよ。
自力でたどり着けない時点で、貴方にその仕事は向いていないけど。
626デフォルトの名無しさん
垢版 |
2018/04/20(金) 09:48:58.11ID:WJk0jxxj
BSD最強
2018/04/20(金) 11:37:39.86ID:eUHWyBcr
スレチ
628デフォルトの名無しさん
垢版 |
2018/05/01(火) 09:18:36.69ID:pcuPqOhI
処のところの 5ch が重かったり鯖落ちしたりというのは
5ch 自体の問題やネットワークの問題もあるが
実はアホの山下謹製専ブラ Jane Style 4.00版のせいだと判明した
これのTLS対応に欠陥があり、毎回フルハンドシェイクを行って鯖の負荷を増大させていた
その他にもツッコミどころ満載のクソソフトなので
使っている人を見かけたらすぐにゴミ箱に捨てるように言ってほしい
2018/05/01(火) 09:32:23.61ID:ht9dkIpJ
TLSのハンドシェイクを鯖で行っているなら5ch運営が究極の馬鹿ということになるが。
2018/05/01(火) 09:36:05.28ID:t/Lqs5tD
やっぱりか、やたらメモリアクセスエラーが起きている
2018/05/01(火) 09:36:47.53ID:t/Lqs5tD
したらばがメニューにない
2018/05/01(火) 10:40:17.57ID:fh3t+8jD
したらばがメニューに?
ツリービューじゃなく?
2018/05/01(火) 11:06:24.88ID:4hJYf7n+
板一覧にないということ、追加できていない
2018/05/01(火) 13:58:46.15ID:YWPo/pc8
ヘルプ--->ジェーンBBSを開く、でいけた
2018/05/06(日) 13:46:42.65ID:25QL8AqQ
ちょっと質問させてください
プログラムの勉強を初めて、スタンドアロンのアプリを作っていたんですが、最近ソーシャルな機能を入れてみたいと思い
ネットワークプログラムを勉強しているんですが
C#でクライアントを、PHPでサーバーといった構成で作ってみようと思っています
この場合とりあえずTCP/IPを勉強するって事でいいんですかね?
簡単なechoサーバーとクライアント作成まではできたのですが、ここから複数のクライアントの受付やどういった情報をどういった形式でやりとりしたらいいのかがさっぱりわからなくて立ち止まっています
今考えているのは、JSONでやりとりして、そこからコールバックでサーバー側の処理を行わせていこうかなくらいしか思いついていないです。
2018/05/06(日) 14:34:12.00ID:U+XbgTRD
仕掛けはいろいろあるから、画面なりユーザーI/Fを決めると、シーケンスがわかって
んじゃどう作るかが見えると思う。
2018/05/06(日) 14:52:44.48ID:v6ma3fie
初心者の質問スレ辺りで聞けよ、QZと言う親切な奴がコーディングしてくれよ。
スレチ
2018/05/06(日) 19:25:17.96ID:994JP5I0
ゲームとかパフォーマンスにシビアなことしないんだっら、通常はhttpにjsonなりxmlでデータやり取りすりゃいいんじゃないかな。
2018/05/07(月) 22:49:32.53ID:54OZZ3xl
やっぱsocketでしこしこアプリを作るとか
2018/05/08(火) 09:33:26.33ID:U36lvFac
迷える子羊に無理言うなよw
2018/05/12(土) 10:58:43.12ID:pDgCeBjY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/
642デフォルトの名無しさん
垢版 |
2018/05/23(水) 19:37:09.99ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

SMSAW
2018/05/24(木) 10:50:42.21ID:cPlRxlDn
SMSAW
2018/06/23(土) 15:19:53.50ID:eBOr3riY
C#のSocketを使って一度の接続で複数の特定長バイト配列を受信するプログラムを考えています。
接続はTcpListener.AcceptTcpClientAsyncで接続要求を受け取るとして、バイト配列の受信を複数回行うには
PollやSelectメソッドを使って無限ループで受信判定して監視するのが一般的でしょうか?
2018/06/23(土) 16:20:48.41ID:FmW0OpQq
GetStreamでストリームを取得して好きにすればいいんじゃないの
TCP自体ストリームだから特定長受信したいと思ったって一度で受信できるかは
わからんよ。ストリームとして正しく固定長受信処理をしたほうがいい。
2018/06/23(土) 16:27:49.08ID:EyvIrgyz
送信側が "123456" と1回で send しても
受信側は "12" "3456" と複数回の recv に分断されることだってある
ストリームってそういうもん
2018/06/23(土) 16:37:59.82ID:eBOr3riY
ありがとうございます。
NetworkStream.ReadAsyncメソッドあたりを使って受信します。
648デフォルトの名無しさん
垢版 |
2018/07/04(水) 22:53:14.27ID:gFgZc5FG
6UA
2018/07/06(金) 12:27:51.30ID:uTPDH9XV
6UA
650デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:30:13.26ID:Fp1kS4OT
教えてください。OSはLinuxです。
ローカルホスト環境ですが、Apacheのドキュメントルートに入れたHTMLファイルを、
ソケットプログラミングから閲覧する方法が分からないです。

inet_addr("127.0.0.1");
ではダメなのでしょうか?
651デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:38:04.58ID:hDQHcieg
Apache 側が Host: 要求してたりしないか
https://www.geekpage.jp/programming/winsock/gethostbyname.php
2020/05/10(日) 11:43:20.65ID:Uq+pnea3
単に"http"というものわかっていないのか
それともvhostの関係で指定が足りないのか

それ以前に http://127.0.0.1/http://localhost/ で見れるのかどうか
653デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:51:27.72ID:Fp1kS4OT
struct hostent *host;
っていう構造体が事前に用意されてるという理解でよろしいですか?(まだ未確認)
654デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:53:20.35ID:Fp1kS4OT
>>652
いちおう、手元のパソコンで一般のWebブラウザ(FirefoxやChrome)を使えば、
自分のパソコンからローカルホストのページや自作htmlを
見に行ける状態には、なっています。
655デフォルトの名無しさん
垢版 |
2020/05/10(日) 11:55:26.74ID:hDQHcieg
ここの人かω
https://mevius.5ch.net/test/read.cgi/tech/1588339011/
86

背伸びしすぎωω
とめないけどωωω
がんがれ
656デフォルトの名無しさん
垢版 |
2020/05/10(日) 12:19:16.47ID:Fp1kS4OT
gethostname() と gethostbyname() の違いが分からない。

最初「gethostbyname」を使ったんだけど、

警告: implicit declaration of function ‘gethostbyname’; did you mean ‘gethostname’?

って出てしまう。
2020/05/10(日) 12:20:30.89ID:y6mlpwhN
libcurl使ったら?サンプルをちょっといじるくらいでできるよ。
とても自力でソケットプログラミングできるようには。。。
658デフォルトの名無しさん
垢版 |
2020/05/10(日) 12:44:11.05ID:Fp1kS4OT
getaddrinfo ってのを使わないとダメなの?

とりあえず、疑問には答えてほしいと思う。
gethostname() と gethostbyname() に名前以外に違いはあるの?
2020/05/10(日) 13:02:48.61ID:Wk6A8uL+
とりあえず
getaddrinfoが推奨されているのは
IPv6に対応出来るようにするため

gethostnameは、今使っているPCのホスト名を取得/設定するためのもの
https://linuxjm.osdn.jp/html/LDP_man-pages/man2/gethostname.2.html

gethostbyname
https://linuxjm.osdn.jp/html/LDP_man-pages/man3/gethostbyname.3.html
660デフォルトの名無しさん
垢版 |
2020/05/10(日) 13:03:41.41ID:zd9TuUMZ
RTFMなんだが,,
gethostname(3)は自分のホスト名を返す
gethostbyname(3)は引数で与えたホストの情報を返す(IPv4)
getaddrinfo(3)はIPv4,v6両方対応.
661デフォルトの名無しさん
垢版 |
2020/05/10(日) 14:01:26.89ID:Fp1kS4OT
>>660
了解。
gethostbyname と gethostname は違うんですね。
662デフォルトの名無しさん
垢版 |
2020/05/10(日) 14:17:06.41ID:Fp1kS4OT
>>660
マニュアルを読んでも経緯が分からないから聞いています。

警告: implicit declaration of function ‘gethostbyname’; did you mean ‘gethostname’?

と表示される理由は関数の仕様を見ても書いてないですし。
2020/05/10(日) 14:30:47.63ID:3vR9EHIm
それ調べるなら警告を出しているコンパイラのマニュアルの方だろうが、
gethostbynameを宣言してるヘッダをincludeしてないんじゃね?
2020/05/10(日) 14:40:00.16ID:y6mlpwhN
man見りゃ書いてあるだろ。
includeがその通りになってないんだよ。
そこにたどり着けない時点でやってることがスキルに対して
背伸びしすぎ。
2020/05/10(日) 14:40:39.36ID:7lvCzCJV
スレが伸びてると思ったらアホの厨房であった
666デフォルトの名無しさん
垢版 |
2020/05/10(日) 15:37:13.69ID:zd9TuUMZ
man 3 gethostbyname すると

#include <netdb.h>
ってSYNOPSISの最初にあるでしょ.

このレベルを知らずにCでプログラム書こうと思う時点で,
コアラ大将のTCP/IP入門でも読んで出直しておいで,
とおもってしまう.
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況