Python 筆記
  • Introduction
  • Installation
  • 版本管理
  • 核心模組
    • Async await
    • Socket
Powered by GitBook
On this page

Was this helpful?

  1. 核心模組

Socket

PreviousAsync await

Last updated 4 years ago

Was this helpful?

有一個模組已經將 socket 包成 server 可簡單用

但這章節講的是比較底層的

socket.socket 選項包含

socket.AF_UNIX	    IPC 用於同一台機器上的通信
socket.AF_INET	    用於服務器與服務器之間的 TCP 通信
socket.AF_INET6	    基於IPV6方式通信
socket.SOCK_STREAM	基於TCP的流式socket通信
socket.SOCK_DGRAM	  基於UDP的數據報式socket通信
socket.SOCK_RAW	    原始套接字,普通的套接字無法處理ICMP、IGMP等網絡報文,而SOCK_RAW可以;其次SOCK_RAW也可以處理特殊的IPV4報文;此外,利用原始套接字,可以通過IP_HDRINCL套接字選項由用戶構造IP頭
socket.SOCK_SEQPACKET	可靠的連續數據包服務

server

import socket

HOST = '192.168.0.1'
PORT = 8080

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5) # 5 為最大連接數

print 'Server start at: %s:%s' %(HOST, PORT)

while True:
    conn, addr = s.accept()

    while True:
        data = conn.recv(1024)
        print data

client

import socket
HOST = '192.168.0.1'
PORT = 8080

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))

while True:
    cmd = raw_input("test")
    s.send(cmd)
    data = s.recv(1024)
    print data
https://docs.python.org/3/library/socket.html
socketserver — A framework for network servers — Python 3.10.2 documentation
Logo