Python网络编程 知识点

📡 网络基础概念

IP地址

  • IPv4: 32位整数,如 192.168.0.1
  • IPv6: 128位整数,如 2001:0db8:85a3:0042:1000:8a2e:0370:7334

TCP协议

  • 建立在IP协议之上
  • 通过握手建立可靠连接
  • 保证数据包按顺序到达

端口

  • 用于区分同一计算机上的不同网络程序
  • 一个Socket依赖4项:服务器地址、服务器端口、客户端地址、客户端端口

🔌 TCP编程

TCP服务器

import socket

HOST = '127.0.0.1'  # 服务器ip地址
PORT = 8888         # 服务器端口号

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)

conn, addr = s.accept()
print('Connected by', addr)
while True:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)

conn.close()

TCP客户端

import socket

HOST = '127.0.0.1'  # 服务器ip地址
PORT = 8888         # 服务器端口号

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.sendall(b'Hello, world')
data = s.recv(1024)
s.close()

print('Received', repr(data))

📨 UDP编程

UDP服务器

import socket

HOST = '127.0.0.1'
PORT = 8888

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((HOST, PORT))

while True:
    data, addr = s.recvfrom(1024)
    print('Received from', addr, ':', data)
    s.sendto(data, addr)

UDP客户端

import socket

HOST = '127.0.0.1'
PORT = 8888

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(b'Hello, world', (HOST, PORT))
data, addr = s.recvfrom(1024)
s.close()

print('Received', repr(data))

🌍 HTTP服务器

from http.server import HTTPServer, BaseHTTPRequestHandler

class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'<html><head><title>Test</title></head>')
        self.wfile.write(b'<body><p>This is a test.</p>')
        self.wfile.write(b'</body></html>')

def run(server_class=HTTPServer, handler_class=MyHandler, addr='localhost', port=8000):
    server_address = (addr, port)
    httpd = server_class(server_address, handler_class)
    print(f'Starting httpd server on {addr}:{port}...')
    httpd.serve_forever()

if __name__ == '__main__':
    run()

作者:spike

分类: Python

创作时间:2026-02-23

更新时间:2026-02-23