TCP/UDP 协议是否总是按顺序发送或接收文件包?是否可以使用套接字 API 选择首先发送哪些数据包?
我想知道是否可以桥接两个传入的 tcp套接字。
例如:
Client A -----> Server <----- Client B
Run Code Online (Sandbox Code Playgroud)
服务器将它的魔法发送给两个客户端,然后它们绕过服务器相互连接
Server
Client A ----------><---------- Client B
Run Code Online (Sandbox Code Playgroud)
更新:
这个想法是当这些客户端无法绑定到端口进行侦听时,仍然能够在服务器的帮助下在彼此之间创建连接。
例如客户端 A 和客户端 B 与服务器有 tcp 套接字。用户 A 决定与用户 B 聊天并创建与服务器的新 tcp 连接,并请求将其与用户 B 进行桥接。服务器将该请求发送给客户端 B,并且它还为该聊天打开了与服务器的新 tcp 连接线。
现在,当服务器同时拥有来自 A 和 B 的聊天连接时,它会桥接它们,并且它们可以在没有服务器的情况下工作,因此服务器将不必处理两个用户共享的所有消息和文件。这就是想法/
这个问题基于OpenOffice上的这个线程。
我正在使用 Python 和Office UNO 桥来分析文档。大多数情况下,我在 Mac 上运行并启动一个办公室实例以在本地主机上收听:
soffice --accept=socket,host=localhost,port=2002;urp;StarOffice.ServiceManager"
Run Code Online (Sandbox Code Playgroud)
使用它,在我的 Mac 上运行测试文档大约需要 2 秒钟。然而,在 Linux 上,完全相同的场景运行了大约 45 秒,这是一个严重的性能差异。这是在 Mint、Gentoo 和 Ubuntu 上的。
有趣的是,使用 office 并通过命名管道连接到它:
soffice --accept="pipe,name=abraxas;urp;StarOffice.ServiceManager"
Run Code Online (Sandbox Code Playgroud)
在所有测试平台上以几乎相同的速度运行:大约 1.5 秒。
问题:Mac 和 Linux 套接字连接有什么不同,为什么 Linux 套接字慢这么多?
假设我有两个相互连接的套接字(Socket A和Socket B)。
如果已经Socket B拔掉电源的计算机,如果Socket A尝试向 发送一些数据Socket B,数据将不会得到确认,因此 TCP 会一次又一次地重新传输数据以希望得到确认,直到 TCP 放弃并决定不重新传输数据不再并告诉发生Socket A了套接字错误WSAECONNABORTED (10053)。
我的问题是:
WSAECONNABORTED (10053)在重传重试后我总是会收到套接字错误(我相信是这样,否则 TCP 将永远继续重传!)?WSAECONNABORTED (10053)套接字错误需要多少次重传重试?假设我想部署一个充当服务器的软件,我想避免更换接口、更改 IP 地址等情况。
部署此软件的环境的性质有点动态,计算机可能会被带到不同的网络。
然后我决定部署它,配置地址 0.0.0.0 以绑定到服务配置的端口并完成工作。
网络管理员会对此不屑一顾吗?(我得到了他们会的印象)。如果是,为什么?
希望这不是基于意见的问题,并且有事实支持答案。
进程是一个正在执行的程序。例如火狐浏览器。我不明白术语“进程”和“端口”之间的关系和区别。
当我netstat -no -p -TCP在 cmd 上运行时,我可以看到多个端口号与每个进程相关联,如下所示。但是,我不清楚端口和进程之间的关系。
我对此很陌生,如果它很明显,我很抱歉。我正在运行 Debian 服务器并在那里安装 UWSGI、Nginx 等。配置一直在谈论指向“套接字”。
在构建选项中,我似乎能够指定每个程序的套接字的位置。默认情况下,看起来大多数都进去了/tmp/(不是全部)。
这是他们去的好地方吗?我试图让事情尽可能有条理,但只是将它们塞在我的 tmp 目录中似乎不是最好的选择。
我在运行在主机 Windows 7 上的 VirtualBox 实例上运行了两个 RHEL/CentOS 的 VM 实例。问题是当我执行VBoxManage list vms -l | more然后sunsequently 时VBoxManage guestproperty get <uuid> "/VirtualBox/GuestInfo/Net/0/V4/IP",我可以看到两个 VM 的相同 IP。我已经intnet使用 Networks --> Adapter 2 --> PCnet-FAST III(内部网络,'intnet')为两个 VM设置了内部网络,我的理解是 eth0 可能是 VM 的专用网络接口。但是他们的 IP 都显示为 10.0.2.15。有没有办法可以访问两个 VM 的专用 VM 网络中的不同 IP?
注意:通过 Putty SSH 客户端访问时,我也只能访问单个 VM 实例。它始终连接到代理 127.0.0.1:2222。因此我无法区分虚拟机。我需要单独的实例访问以在客户端-服务器架构中的单独实例上运行服务器和客户端代码。请参阅我的另一个线程如何使用同一主机将 putty 配置为 ssh 到多个虚拟机,其中详细解释了该问题。

我正在附加在主机上执行的 VBoxManage 命令行输出。我正在运行 1.3_2 和 1.3_3 沙箱,但两者都具有相同的 IP,如下粗体所示:
C:\Program Files\Oracle\VirtualBox>VBoxManage list vms
"Hortonworks Sandbox 1.3" {4914b5c7-1395-47f5-80ef-8fbec8cadbd4}
"Hortonworks …Run Code Online (Sandbox Code Playgroud) 我在 Windows 7 机器上运行 Apache 2.4.10 并尝试添加 SSL 连接。端口 80 连接工作正常,我正在尝试添加端口 443。添加 httpd.conf 后,Listen 443它无法启动:
c:\Apache24\bin> httpd.exe -k start
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address [::]:443
(OS 10048)Only one usage of each socket address (protocol/network address/port) is normally permitted. : AH00072: make_sock: could not bind to address 0.0.0.0:443
AH00451: no listening sockets available, shutting down
AH00015: Unable to open logs
Run Code Online (Sandbox Code Playgroud)
netstat最初使用检查显示 Chrome …
我正在尝试将 Nginx 连接到 uWSGI,以便我可以运行用 Ruby 编写的应用程序(我无法使用乘客)。这是我的虚拟主机配置:
server {
listen unix:/var/run/nginx/redmine.sock;
root /var/www/redmine/public;
location / {
try_files $uri @uwsgi;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:/var/run/uwsgi/redmine.sock;
}
}
Run Code Online (Sandbox Code Playgroud)
很简单,我试着找一个静态文件,否则我传递给 uwsgi 监听 unix socket。这对我来说是“坏网关”的 502 错误。我去阅读错误日志,我有以下内容:
2014/09/09 20:08:56 [crit] 20922#0: *29484 connect() to unix:/var/run/uwsgi/redmine.sock failed (13: Permission denied) while connecting to upstream, client: unix:, server: , request: "GET /redmine HTTP/1.0", upstream: "uwsgi://unix:/var/run/uwsgi/redmine.sock:", host: "localhost"
Run Code Online (Sandbox Code Playgroud)
但是我很确定我已经将 uWSGI 配置为使用 Nginx 所做的相同用户:
user nginx;
Run Code Online (Sandbox Code Playgroud)
和
[uwsgi]
socket = /var/run/uwsgi/redmine.sock
chdir = /var/www/redmine
rails = …Run Code Online (Sandbox Code Playgroud)