什么是Socket编程
你用手机刷网页、发消息,背后其实都在和远程服务器“对话”。这种对话靠的是网络通信,而Socket就是实现这种通信的最基本工具。简单说,Socket就像是一个插口,让两个设备可以通过网络发送和接收数据。
比如你在浏览器输入网址,你的电脑就通过Socket连接到网站服务器,请求页面内容。服务器也用Socket把数据传回来。这个过程,就是Socket编程的核心。
Socket怎么工作
想象你要打电话给朋友。先拨号建立连接,等对方接听,然后才能说话。Socket通信也类似。一般分两方:服务端(接电话的)和客户端(打电话的)。
服务端先启动,监听某个“号码”——也就是端口。客户端知道这个地址和端口后,发起连接。一旦接通,双方就能收发数据了。
写个简单的例子
用Python写一个最基础的服务端:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('localhost', 8080))
s.listen(1)
print("等待连接...")
conn, addr = s.accept()
print(f"来自 {addr} 的连接")
data = conn.recv(1024)
print(f"收到:{data.decode()}")
conn.send(b'Hello from server')
conn.close()再写个对应的客户端:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 8080))
s.send(b'Hello server')
data = s.recv(1024)
print(f"收到回复:{data.decode()}")
s.close()先运行服务端,再运行客户端。你会看到两边都打印出了对方的消息。这就是一次完整的Socket通信。
常见应用场景
即时聊天软件、在线游戏、远程控制工具,底层基本都用了Socket。哪怕你现在用的网页,HTTP协议也是基于TCP Socket建立的连接。
刚学的时候不用想太复杂。先把“连上去、发消息、收回应”这个流程跑通,后面再学处理多用户、心跳机制、数据封包这些进阶内容。
动手试试看,写个小脚本和自己电脑“对话”,你会发现网络编程没那么神秘。