网络编程TCP/IP协议与Socket编程大家好我是欧阳瑞Rich Own。今天想和大家聊聊网络编程这个重要话题。作为一个全栈开发者网络编程是构建分布式系统的基础。今天就来分享一下TCP/IP协议和Socket编程的实战经验。TCP/IP协议概述OSI七层模型层级名称功能7应用层HTTP、FTP、DNS6表示层数据加密、压缩5会话层建立和管理会话4传输层TCP、UDP3网络层IP、路由2数据链路层MAC、以太网1物理层物理介质TCP vs UDP特性TCPUDP可靠性可靠不可靠连接面向连接无连接传输速度较慢较快适用场景文件传输、HTTP视频流、游戏TCP Socket编程服务端import socket server socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((localhost, 8080)) server.listen(5) print(服务器启动监听端口8080...) while True: client_socket, addr server.accept() print(f客户端连接: {addr}) data client_socket.recv(1024) if data: print(f收到数据: {data.decode()}) client_socket.sendall(bHello from server) client_socket.close()客户端import socket client socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((localhost, 8080)) client.sendall(bHello from client) data client.recv(1024) print(f收到响应: {data.decode()}) client.close()UDP Socket编程服务端import socket server socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind((localhost, 8080)) print(UDP服务器启动监听端口8080...) while True: data, addr server.recvfrom(1024) print(f收到来自 {addr} 的数据: {data.decode()}) server.sendto(bHello from UDP server, addr)客户端import socket client socket.socket(socket.AF_INET, socket.SOCK_DGRAM) client.sendto(bHello from UDP client, (localhost, 8080)) data, addr client.recvfrom(1024) print(f收到响应: {data.decode()}) client.close()实战案例简单HTTP服务器import socket def handle_request(client_socket): request client_socket.recv(1024).decode() print(f请求:\n{request}) response HTTP/1.1 200 OK Content-Type: text/html !DOCTYPE html html headtitleSimple HTTP Server/title/head bodyh1Hello from Python HTTP Server/h1/body /html client_socket.sendall(response.encode()) client_socket.close() server socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server.bind((localhost, 8000)) server.listen(5) print(HTTP服务器启动监听端口8000...) while True: client_socket, addr server.accept() handle_request(client_socket)WebSocket编程服务端from websockets import serve async def handle_websocket(websocket, path): async for message in websocket: print(f收到消息: {message}) await websocket.send(f收到: {message}) async def main(): async with serve(handle_websocket, localhost, 8765): await asyncio.Future() asyncio.run(main())客户端const ws new WebSocket(ws://localhost:8765); ws.onopen () { ws.send(Hello WebSocket); }; ws.onmessage (event) { console.log(收到:, event.data); };最佳实践1. 错误处理try: server socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((localhost, 8080)) server.listen(5) except socket.error as e: print(f套接字错误: {e})2. 超时设置server.settimeout(5) # 设置超时时间总结网络编程是构建分布式系统的基础。通过理解TCP/IP协议和Socket编程可以构建高效、可靠的网络应用。我的鬃狮蜥Hash对网络编程也有自己的理解——它总是通过感官感知周围环境这也许就是自然界的网络通信吧如果你对网络编程有任何问题欢迎留言交流我是欧阳瑞极客之路永无止境技术栈网络编程 · TCP/IP · Socket