我正在学习socket编程和Django web开发。正如我所知,socket用于客户端和服务器之间的通信。这意味着当在Django中使用和提交Form时,会创建一个套接字并提交给服务器吗?
答案 0 :(得分:3)
这意味着当在Django中使用和提交Form时,会创建一个套接字并提交给服务器吗?
答案简短:是。
你的术语有点过时了:套接字没有提交"到服务器。套接字用于向其他地方发送数据和从其他地方接收数据。
答案越长,答案就越复杂。 最长的答案填写了教科书。
这里有几层可以剥离。
因此,在最简单的情况下 * ,当提交表单时,浏览器会向服务器发送HTTP POST。浏览器的HTTP实现将打开与服务器的TCP连接,这是一个套接字。 通过该套接字,传输HTTP消息,并收到服务器的响应。
因此,套接字是一个比HTML表单更多的 更低级别的构造。
From Wikipedia,这里是网络堆栈各层的完整视图:
如果您发现这些内容很有趣,我建议您参加计算机网络课程。
答案 1 :(得分:1)
已创建套接字但未提交给服务器。 Django用于HTTP服务器(端口80和其他一些自定义使用的服务器)。它是一个围绕侦听/连接到所述端口的套接字构建的库,并具有Web开发所需的额外功能。
套接字编程更通用,因为它比Django更低级,它允许使用你想要的任何端口号。
在ISO OSI堆栈上,当套接字编程为4级时,Django保持在7级。
答案 2 :(得分:1)
套接字只是客户端和服务器之间通信的一种方法,但不是Django在处理表单提交时使用的方法。它很可能使用服务器侦听的参数发送HTTP POST请求。