我正在构建需要使用套接字连接与另一个应用程序通信的Web应用程序.这对我来说是一个新领域,所以要确保套接字不同于websockets.看起来它们只是在概念上相似.
问起因为我最初计划使用Django作为我的项目的基础,但是在上面链接的SO帖子中,很明显webocket是不可能的(或者至少不可靠,即使像django-websockets这样的东西也是如此)使用首选的Django设置(Apache与mod_wsgi).然而,我发现其他帖子随便导入Python的套接字模块,就像获取服务器的主机名一样简单.
所以:
这可能是一个非常基本的问题,但它让我感到困惑.
两个不同的连接插座可以共用一个端口吗?我正在编写一个应该能够处理超过10万个并发连接的应用服务器,而且我们知道系统上可用的端口数量大约为60k(16位).连接的套接字被分配给新的(专用)端口,因此这意味着并发连接的数量受端口数量的限制,除非多个套接字可以共享同一个端口.所以问题.
我在这里先向您的帮助表示感谢!
我正在学习java中的网络.我不清楚什么是端口.另外我需要知道什么是套接字?
请解释一下.
我对插座感到困惑.据我所知,socket是ip地址和端口号的组合.它只是编程抽象,允许写入或从流中读取(在TCP的情况下).现在我不能完全确定服务器在服务客户端时是否有一个或多个套接字?让我们说http在80号港口.
是否将来自不同客户端的所有数据发送到一个套接字(服务器:80),并且某些UBER服务器进程根据传入地址区分它们,或者是基于TCP层创建的客户端地址和端口号组合的更多套接字?有人可以通过逐步算法(对于同时服务的多个客户端)彻底描述这一点,而不仅仅是服务器绑定套接字到端口,服务器侦听套接字,服务器服务数据.
好的,计算机具有用于应用程序的端口,用于将数据从外界传输到防火墙,然后再传输到计算机。
那么,Firefox和Internet Explorer如何在同一台计算机上使用同一端口?
为什么我们不能使用端口80将所有位置的所有流量传递到计算机。
那么为什么我们需要特定的端口?
好的,所以当我尝试对 IP 地址、端口和套接字进行研究时,这就是我得到的结果:
IP 地址用于映射到网络上的不同设备。
端口号用于访问主机上的特定应用程序。
套接字是两者的结合。
我不明白的是,如果端口将您连接到特定应用程序,那么每个应用程序应该只有 1 个端口号,对吗?但是例如端口 80 用于 HTTP,所以如果应用程序正在使用该端口,它正在侦听 HTTP 请求,对吗?那么,如果不止一个人试图访问它会发生什么?套接字和端口让我很困惑..
我已经阅读了一些套接字教程,但我不明白它的作用。我想知道套接字的作用以及为什么使用它。这是我提到的代码。
client.php
<?php
$host = "localhost";
$port = 1024;
$message = "Hello Server";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server …Run Code Online (Sandbox Code Playgroud) 我开始阅读W. Richard Stevens撰写的UNIX网络编程,并且在端口和套接字之间感到非常困惑。当我在互联网上阅读时,它表示套接字是连接的端点,对于端口号来说,IP地址和端口不能构成唯一的对。所以现在我的问题是:
(1)两者有什么区别?
(2)如何在内部操纵套接字和端口。套接字是文件吗?
(3)使用应用程序发送数据时如何发送?
(4)如果有插座,那为什么要使用端口号?
对不起,我的英语。.在此先感谢您的答复。
我写一个多线程服务器应用程序,在C(Linux)的,必须听2个不同的端口号,说听端口号3000和4000,用于连接到它服务于不同的功能,不同的客户端(实际功能是由工人执行线程,主线程无限期运行,并在新连接时产生新工作者).我不确定select是否可以在这里工作,因为我们可以有多个套接字连接,但都与相同的端口号相关联.我尝试顺序绑定到sock_1和sock_2.当我运行client_1时,一切都按预期工作.但是,当我运行client_2时,我在客户端的connect()上收到错误.如果可以在这里使用select(),请告诉我如何操作.任何帮助非常感谢!谢谢 !
(PS sock_1指端口没有3000和sock_2指端口没有4000,的Client_1是指客户端从多数民众赞成端口3000和client_2的寻求服务指的是客户端寻求来自端口没有4000相同的服务器服务)
我刚刚读到“端口和套接字有什么区别?” 似乎套接字是用来创建连接的东西。那么一个数据包怎么样?连接之间是否正在发送某些内容?那么进度是“ip->端口->套接字->发送数据包”?
这是教科书 James F. Kurose、Keith W. Ross 的图片:计算机网络:自上而下的方法, ISBN-13:978-0-13-285620-1。ISBN-10:0-13-285620-4。
从图中可以看出,欢迎端口与实际连接端口不同。(因为不同的socket分配了不同的端口号。假设Client正在初始化一个HTTP请求,那么Web服务器上的欢迎端口为80,然后实际连接端口与80不同?
第二个问题是,TCP握手的目的是什么?我只被告知为什么 TCP 需要握手,但实际上并不知道为什么握手是必要的。如果我们摆脱 TCP 的握手,我们仍然可以使 TCP 成为可靠的数据传输协议,不是吗?