Python 網路程式設計(Socket)

2021-09-01 23:43:38 字數 3317 閱讀 2859

socket 標識:

作業系統/程序管理套接字的標識:套接字描述符(socket descriptor),小整數

socket 建立:

訪問**:http 協議

# 匯入socket庫

import socket

# 建立乙個socket,af_inet 表示採用 ipv4 網路協議,sock_stream 表示 tcp 連線

s = socket.socket(socket.af_inet, socket.sock_stream)

# 建立連線,需指明埠號,web 服務埠預設為 80

# 傳送資料

# 接收資料

buffer =

while true:

# 每次最多接收1k位元組

d = s.recv(1024)

if d:

else:

break

data = b''.join(buffer)

# 關閉連線

s.close()

# 解析伺服器響應資料

header, html = data.split(b'\r\n\r\n', 1)

print(header.decode('utf-8'))

# 把接收的資料寫入檔案

f.write(html)

自定義連線:

# 匯入socket庫

import socket

# 建立乙個socket

s = socket.socket(socket.af_inet, socket.sock_stream)

# 建立連線

s.connect(('127.0.0.1', 5000))

# 接收歡迎訊息

print(s.recv(1024).decode('utf-8'))

for data in [b'python', b'c++', b'ai']:

# 傳送資料

s.send(data)

# 接受資料

print(s.recv(1024).decode('utf-8'))

# 傳送結束連線訊號

s.send(b'exit')

# 關閉連線

s.close()

# 匯入 socket 庫,threading 庫

import socket

import threading

import time

# 處理請求函式

def tcp_link(sock, addr):

print('accept new connection from %s:%s...' % addr)

sock.send(b'welcome!')

# 接收、傳送資料

while true:

data = sock.recv(1024)

time.sleep(1)

if not data or data.decode('utf-8') == 'exit':

break

sock.send(('hello, %s!' % data.decode('utf-8')).encode('utf-8'))

# 關閉連線

sock.close()

print('connection from %s:%s closed.' % addr)

# 建立乙個socket

s = socket.socket(socket.af_inet, socket.sock_stream)

# 繫結埠

s.bind(('127.0.0.1', 5000))

# 監聽埠,5表示最多同時監聽5個

s.listen(5)

print('waiting for connection...')

# 等待連線,處理連線

while true:

# 接受乙個新連線

sock, addr = s.accept()

# 建立新執行緒來處理tcp連線

t = threading.thread(target=tcp_link, args=(sock, addr))

t.start()

# 匯入socket庫:

import socket

# 建立乙個socket,sock_dgram 表示 udp 連線

s = socket.socket(socket.af_inet, socket.sock_dgram)

# 資料傳送與接收

for data in [b'python', b'c++', b'ai']:

# 傳送資料:

s.sendto(data, ('127.0.0.1', 5000))

# 接收資料:

print(s.recv(1024).decode('utf-8'))

# 關閉連線

s.close()

# 匯入socket庫:

import socket

import threading

# 處理請求函式

def udp_link(data, addr):

print('received from %s:%s.' % addr)

s.sendto(b'hello, %s!' % data, addr)

# 建立乙個socket

s = socket.socket(socket.af_inet, socket.sock_dgram)

# 繫結埠:

s.bind(('127.0.0.1', 5000))

print('bind udp on 5000...')

# 等待接收資料並處理

while true:

# 接收資料:

data, addr = s.recvfrom(1024)

t = threading.thread(target=udp_link, args=(data, addr))

t.start()

good luck!

python 網路程式設計學習 套接字socket

以前也學過套接字程式設計,這次想系統全面的學習下python網路程式設計的使用。做這個,為檢測進度,也為後續留下筆記和足跡。socket 常用函式 socket.gethostname socket.gethostbyname import socket host socket.gethostnam...

Python網路程式設計學習筆記一 socket模組

coding utf 8 主要測試python網路程式設計中socket模組的使用 涉及到的技術點 套接字 面向連線的還有非面向連線套接字 tcp面向連線 udp非面向連線 1 匯入socket 2 建立socket socket三要素 1 socket family,2 socket type 3...

python網路程式設計 TCP網路程式設計

tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...