Python TCP Socket Server 遇到 socket 沒有 AF_INET 問題

Python 要建立 TCP 的 Socket server 臨時存取用,但是卻遇到下述錯誤:

  • AttributeError: partially initialized module 'socket' has no attribute 'AF_INET' (most likely due to a circular import)

閱讀全文〈Python TCP Socket Server 遇到 socket 沒有 AF_INET 問題〉

Linux 查看 TCP、UDP、Unix Domain Socket 的連線

Linux 要查看系統的 TCP、UDP、Unix Domain Socket 的連線有哪些,可以使用 netstat 或 ss 來達成。

此篇來紀錄 netstat、ss 查看這些連線的參數

閱讀全文〈Linux 查看 TCP、UDP、Unix Domain Socket 的連線〉

Beej's Guide to Network Programming 正體中文版 免費電子書

Beej's Guide to Network Programming 這本書是寫 網路基礎 + 網路程式設計, 由淺入深的教學 (從 TCP、UDP、網路七層... 講到 IPv4、IPv6、Server-Client、blocking、non-blocking、MTU... 等等)

看這本書時, 發現網路七層已經背不起來了, 順便做點筆記:

  1. Application (應用層)
  2. Presentation (表現層)
  3. Session (會談層)
  4. Transport (傳輸層)
  5. Network (網路層)
  6. Data Link (資料鏈結層)
  7. Physical (實體層)
  8. 註: 以上七層的順序和編號是倒過來的~
  9. TCP: Stream Sockets (串流式 Sockets) - SOCK_STREAM
  10. UDP: Datagram Sockets (訊息式 Sockets) - SOCK_DGRAM

註1: 此書範例是以 Linux socket 為主.

註2: 感謝 Aaron Liao 的翻譯 + 推薦, 翻譯非常棒~

閱讀全文〈Beej's Guide to Network Programming 正體中文版 免費電子書〉

Bash shell 連接 Socket 寫法

想要於 Bash shell 連接 Socket (tcp、udp), 要如何寫?

語法:

  • tcp: /dev/tcp/<hostname>/<port>
  • udp: /dev/udp/<hostname>/<port>
  • 註1: /dev/tcp, /dev/udp 都是不存在的檔案, 需要 Bash 透過 exec 才可執行, 若於其他程式執行, 需要確定他是跑在 Bash shell 才可以用.
  • 註2: PHP 可以參考此篇: PHP shell_exec() 使用 Bash shell 執行

閱讀全文〈Bash shell 連接 Socket 寫法〉