学习了python的socket编程,首先做个小练习,然后慢慢深入,搭建个简单的web服务器
1. socket小练习
服务端代码
import socket
HOST, PORT = "127.0.0.1", 8888
listen_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) ##创建服务端套接字
listen_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 保证服务器的监听socket,即listen_socket在
# 关闭后对应的端口能够立即释放,否则将会在数分钟后才能释放
listen_socket.bind((HOST, PORT)) # 绑定地址和端口,''为空默认为本地'127.0.0.1'
listen_socket.listen(5)
print('开始监听.........')
# while 循环的原因,服务器不能关闭
while True:
print('等待客户端链接...')
# 等待和客户端连接,成功则返回生成的对等套接字,如果没有(失败),
# 则会报错(因为是非阻塞模式,没有客户端请求连接,就会抛出异常)
client_connection, client_address = listen_socket.accept()
print('客户端{}请求来了,连接成功'.format(client_address))
# 接收客户端发送来的数据(请求),如果没有,会报错(因为是非阻塞模式,不会等待客户端发送消息)
request = client_connection.recv(1024)
print(request)
http_response = """
HTTP/1.1 200 OK
Hello, World!
"""
# 向客户端发送数据
client_connection.sendall(http_response.encode())
client_connection.close() # 关闭与客户端连接
客户端代码
import socket
client = socket.socket()
client.connect(('127.0.0.1',8888)) # 与服务端连接
client.send('welcome to socket'.encode())
data = client.recv(1024)
print('接收到的来自服务端的响应{}'.format(data.decode()))
当然我们要试试用浏览器这个客户端连接。。。。