标签: sockets

TCP/UDP 是按顺序发送文件还是随机发送文件?

TCP/UDP 协议是否总是按顺序发送或接收文件包?是否可以使用套接字 API 选择首先发送哪些数据包?

windows tcp udp sockets

5
推荐指数
1
解决办法
1156
查看次数

桥接两个插座

我想知道是否可以桥接两个传入的 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 的聊天连接时,它会桥接它们,并且它们可以在没有服务器的情况下工作,因此服务器将不必处理两个用户共享的所有消息和文件。这就是想法/

bridge sockets

5
推荐指数
1
解决办法
2572
查看次数

Linux 本地主机套接字比 Mac 慢得多

这个问题基于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 套接字慢这么多?

networking linux sockets macos

5
推荐指数
1
解决办法
1539
查看次数

数据重传和 WSAECONNABORTED (10053) 套接字错误

假设我有两个相互连接的套接字(Socket ASocket B)。

如果已经Socket B拔掉电源的计算机,如果Socket A尝试向 发送一些数据Socket B,数据将不会得到确认,因此 TCP 会一次又一次地重新传输数据以希望得到确认,直到 TCP 放弃并决定不重新传输数据不再并告诉发生Socket A了套接字错误WSAECONNABORTED (10053)

我的问题是:

  • 是否可以保证WSAECONNABORTED (10053)在重传重试后我总是会收到套接字错误(我相信是这样,否则 TCP 将永远继续重传!)?
  • TCP 决定放弃并导致WSAECONNABORTED (10053)套接字错误需要多少次重传重试?
  • 这个重传重试次数可以配置吗?

networking windows tcp sockets

5
推荐指数
1
解决办法
5083
查看次数

听 0.0.0.0 是不好的做法吗?为什么?

假设我想部署一个充当服务器的软件,我想避免更换接口、更改 IP 地址等情况。

部署此软件的环境的性质有点动态,计算机可能会被带到不同的网络。

然后我决定部署它,配置地址 0.0.0.0 以绑定到服务配置的端口并完成工作。

网络管理员会对此不屑一顾吗?(我得到了他们会的印象)。如果是,为什么?

希望这不是基于意见的问题,并且有事实支持答案。

networking client-server sockets

5
推荐指数
1
解决办法
4823
查看次数

进程id和端口号有什么区别和关系?

进程是一个正在执行的程序。例如火狐浏览器。我不明白术语“进程”和“端口”之间的关系和区别。

当我netstat -no -p -TCP在 cmd 上运行时,我可以看到多个端口号与每个进程相关联,如下所示。但是,我不清楚端口和进程之间的关系。

屏幕截图:“netstat -no -p -TCP”的 cmd 输出

networking ip-address port sockets

4
推荐指数
3
解决办法
1万
查看次数

Unix 套接字放在哪里?

我对此很陌生,如果它很明显,我很抱歉。我正在运行 Debian 服务器并在那里安装 UWSGI、Nginx 等。配置一直在谈论指向“套接字”。

在构建选项中,我似乎能够指定每个程序的套接字的位置。默认情况下,看起来大多数都进去了/tmp/(不是全部)。

这是他们去的好地方吗?我试图让事情尽可能有条理,但只是将它们塞在我的 tmp 目录中似乎不是最好的选择。

unix debian bash sockets

3
推荐指数
1
解决办法
7303
查看次数

如何在同一主机上运行的两个 VirtualBox VM 之间进行通信

我在运行在主机 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)

networking ssh virtualbox putty sockets

3
推荐指数
1
解决办法
3万
查看次数

如何确定端口 443 已被使用的原因?

我在 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 …

windows-7 apache-http-server port sockets netstat

3
推荐指数
1
解决办法
2万
查看次数

Nginx 无法以正确的权限连接到 uWSGI 套接字

我正在尝试将 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)

nginx sockets

3
推荐指数
1
解决办法
9953
查看次数