套接字编程和Django表单提交之间的区别

时间:2013-11-18 00:48:42

标签: python django sockets django-forms

我正在学习socket编程和Django web开发。正如我所知,socket用于客户端和服务器之间的通信。这意味着当在Django中使用和提交Form时,会创建一个套接字并提交给服务器吗?

3 个答案:

答案 0 :(得分:3)

  

这意味着当在Django中使用和提交Form时,会创建一个套接字并提交给服务器吗?

答案简短:是。

你的术语有点过时了:套接字没有提交"到服务器。套接字用于向其他地方发送数据和从其他地方接收数据。


答案越长,答案就越复杂。 最长的答案填写了教科书。

这里有几层可以剥离。

  • 使用HTTP将HTML表单传输到服务器。
  • HTTP是应用程序层协议,它建立在TCP之上。
  • TCP是一种传输层协议(当然是建立在其他方面)。

因此,在最简单的情况下 * ,当提交表单时,浏览器会向服务器发送HTTP POST。浏览器的HTTP实现将打开与服务器的TCP连接,这是一个套接字。 通过该套接字,传输HTTP消息,并收到服务器的响应。

因此,套接字是一个比HTML表单更多的 更低级别的构造。

From Wikipedia,这里是网络堆栈各层的完整视图:

enter image description here

如果您发现这些内容很有趣,我建议您参加计算机网络课程。


例如,

* Connection: Keep-alive

答案 1 :(得分:1)

已创建套接字但未提交给服务器。 Django用于HTTP服务器(端口80和其他一些自定义使用的服务器)。它是一个围绕侦听/连接到所述端口的套接字构建的库,并具有Web开发所需的额外功能。

套接字编程更通用,因为它比Django更低级,它允许使用你想要的任何端口号。

ISO OSI堆栈上,当套接字编程为4级时,Django保持在7级。

答案 2 :(得分:1)

套接字只是客户端和服务器之间通信的一种方法,但不是Django在处理表单提交时使用的方法。它很可能使用服务器侦听的参数发送HTTP POST请求。