タグ

2022年8月3日のブックマーク (7件)

  • WindowsではCtrl-cでPythonのスクリプトを即時中断できないことがある - 新・日々録 by TRASH BOX@Eel

    CPythonの既知の不具合に遭遇した。処理系体ではなく、標準ライブラリの問題のようだ。 界隈では有名な話かもしれないが、忘れないように個人的なメモを残しておく。 具体的には、標準ライブラリのsocketを使用して自前でUDPパケットを受信する、以下のようなスクリプトで遭遇した。 #!/usr/bin/env python3 import socket BIND_ADDR = '127.0.0.1' BIND_PORT = 41214 try: for ai in socket.getaddrinfo(BIND_ADDR, BIND_PORT, socket.AF_UNSPEC, socket.SOCK_DGRAM): family, socktype, protocol, _, sockaddr = ai with socket.socket(family, socktype, pro

    WindowsではCtrl-cでPythonのスクリプトを即時中断できないことがある - 新・日々録 by TRASH BOX@Eel
  • Pythonでネットワークプログラミング / fujimisakari blog

    この記事はPythonのAdventCalandar2016の15日目の記事です。 Goでネットワークプログラミングの投稿に引き続き、Pythonでネットワークプログラミングの いくつかのパターンを実装してみましたのでサンプルコードと簡単な解説をしたいと思ってます。 以前、このLinuxネットワークプログラミングバイブルを読んで 第5章のIOの多重化の部分が非常に興味深くハンズオンしてきちんと理解したいと思ってたので C言語で書かれていたロジックをPython3.5.2で書き直してみました。 まず、投稿タイトルのネットワークプログラミングについては、 TCPプロトコルを利用したサーバ側のSocket通信の実装を指してます。 Socket通信にて、シンプルな通信からI/O多重化、非同期I/O、ノンブロッキングI/Oを利用したパターンを紹介し、 これらの実装を実現するための技術として、sele

  • Socketを使ったHTTPサーバーとHTTPクライアント(+Webブラウザー) - Python3 - Qiita

    Socketモジュールを使ったHTTP通信 python3のsocketモジュールを使った、HTTP通信の簡単な例 HTTPは簡単に言うと、HTMLファイルをTCP通信(TCPとは限らない)で送ったりするために、来はどんなデータでも良いTCPのデータの部分(TCPペイロードとか言う)に対してルール(データはこのフォーマットに従ってくださいという)を作ったわけだから、recv,sendでそのフォーマットに従ったデータを送れば良い。 ここでは、RFC7230,RFC7230日語訳を読みながら進める。 ※HTTP通信とは「HTTP」と呼ばれるお約束事に従って行われる通信のこと。だそうです。 スタートライン(start-line)とヘッダ節(header-section) スタートラインについて start-line HTTPメッセージはクライアントからサーバーへのリクエストとサーバーからクラ

    Socketを使ったHTTPサーバーとHTTPクライアント(+Webブラウザー) - Python3 - Qiita
    makaya2
    makaya2 2022/08/03
  • Socket通信勉強(2) - Pythonでの書き方/HTTPサーバーもどき作成

    PythonでのSocket通信やってることはCでやったときと同じである。サーバーとクライアントの通信手順は同じだし、関数名も同じである。しかしCで書いた場合に比べてシンプルに書ける。エラーは例外として投げられるため、自分で書く必要がない。またsockaddr_inなどの構造体が登場することはなく、Pythonでのbind関数とconnect関数の引数に直接アドレス・ポートを指定する。 server.py前回と同じく、以下の手順で通信を行う。 listen(待ち受け)用のソケット作成 - socket「どこからの接続を待つのか」「どのポートにて待ち受けするのか」を決める - bind関数の引数ソケットにその情報を紐つける - bind実際に待ち受けする - listen接続要求が来たら受け入れる - accept4によって通信用のソケットが得られるので、それを用いてデータのやりとりをする-

  • 今更ながらソケット通信に入門する(Pythonによる実装例付き) - Qiita

    1. はじめに Webサーバなどをはじめ様々なツールがオープンソースで公開されています。 便利なツールが簡単に手に入るようになったことで、ネットワークなど低レイヤの技術に直接触れる機会がほとんどないという方も多いのではないでしょうか。 私自身、ネットワーク技術にあまり触れた経験が無いので、 アプリケーション間の具体的な通信方法などは理解できていません。 ということで、唐突ですがネットワークの基礎技術であるソケット通信について調べてみました。 また、記事ではPythonを用いて実際にソケット通信を実装してみます。 2. ソケット通信概要 2.1 ソケットとは? ソケットとは、通信を行う際のインターフェース、エンドポイント、接続ポイント、受け口などと説明されます。 以下は概念図ですが、例えば、IPアドレスとポート番号などアプリケーション間の通信の出入り口となるものがソケットになります。 上記

    今更ながらソケット通信に入門する(Pythonによる実装例付き) - Qiita
  • ソケットプログラミングのTips

    概要 ソケットプログラミングに関するTipsをメモレベルで記載する。 切断検知と経路切断 TCPコネクションの切断検出 対向がclose()、shuttdown()、プログラム終了等をしたときの切断検出について。 OSをシャットダウンさせた場合も通常はアプリケーションの終了処理が走り、正常な切断が動く。 受信側の切断検出は、recv()がlength==0で返ってきたとき、または、errno==ECONNRESETとなる。(ECONNRESETはRSTによって切断された場合) 送信側の切断検出は、切断された後2回目のsend()がエラーとなる。 ※相手がclose()→こちらがsend()→相手にパケットが飛ぶが待ち受けプログラムがいないためRST応答が来る→もう1度send()→エラー ※send()自体はカーネルの送信バッファにデータコピーするだけなので、TCPレベルの応答(送信完了)

    ソケットプログラミングのTips
  • TCPとタイムアウトと私 - Cybozu Inside Out | サイボウズエンジニアのブログ

    部長や副部長もプログラミングを(たまに)することで有名なサイボウズの運用部長、山泰宇です。 有名じゃないかもしれませんが、ブログに書いたので有名になるということでご了承ください。 今回は、先日発生した yrmcds に起因する障害の原因と対策を解説します。 yrmcds というのは、サイボウズが開発している memcached 互換のキーバリューストレージです。 問題の理解のため、まず TCP 通信で、通信先の相手の障害にどう対応するか解説します。 データの送信中に相手が落ちるケース このケースはさらに二つに分かれます。 相手の OS は生きているが、通信しているプログラムが落ちるケース 相手の OS ごと(あるいはネットワークごと)落ちるケース 1 と 2 の違いは、前者の場合 RST パケットが返ってくるのに対して、後者ではなにも返ってこない点です。後者の場合、ack されない

    TCPとタイムアウトと私 - Cybozu Inside Out | サイボウズエンジニアのブログ