标签: sockets

Mac OS X 是否会限制套接字创建的速率?

这似乎与编程有关,但这是一个操作系统问题。

我正在编写一个小型高性能守护进程,每秒需要数千个连接。它在 Linux 上运行良好(特别是 EC2 上的 Ubuntu 9.10)。在 Mac OS X 上,如果我在一个基准测试中抛出几千个连接(大约 16350 个),它只是打开一个连接,做它的事情并关闭连接,然后基准程序挂起几秒钟等待套接字变为可用在继续之前(或在过程中超时)。

我同时使用了 Apache Bench 和 Siege(以确保它不是基准应用程序)。

那么为什么/如何 Mac OS X 限制可以使用套接字的速率,我可以阻止它这样做吗?

还是有其他事情发生?

我知道有一个文件描述符限制,但我没有达到那个限制。接受套接字没有错误,它只是在第一个(大约)16000 之后挂起一段时间,等待 - 我假设 - 操作系统释放套接字。这不应该发生,因为此时所有先前的套接字都已关闭。它们应该以关闭的速度提供,并且可以在 Ubuntu 上使用,但是在 Mac OS X 上似乎存在某种多(5-10?)秒的延迟。

我尝试使用 ulimit 进行调整。纳达。

networking throttling sockets macos

7
推荐指数
1
解决办法
4068
查看次数

强制关闭套接字

是否可以“手动”关闭 Windows 中已建立的套接字连接(例如使用命令提示工具)?我有几个打开的套接字连接到侦听服务器,我可以看到它们使用netstat,并想手动关闭其中一个。

windows tcpip sockets

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

我的笔记本电脑上的这个插座/端口/连接器是什么?

未知套接字

我的笔记本电脑(联想 Z570)上有这个插座。

这个端口是什么,它有什么用途?这个符号是什么意思(我期待一个 LOCK 符号)?

port connector sockets

7
推荐指数
1
解决办法
2106
查看次数

由于墙上的电缆看起来相同,是否可以互换这两个插座?

我的以太网插座无法工作,我确信这与插座本身或墙后的电缆有关。这张照片我的墙上插座的图片(左边是以太网插座,右边是电话插座)显示两者似乎都连接到墙后的两根相同的电缆上。(我检查了从电缆到以太网插座的接线,从颜色编码来看似乎没问题。)是否可以尝试切换插座,以检查我的以太网插座是否与右侧的电缆兼容?

cable ethernet wiring sockets

7
推荐指数
1
解决办法
1331
查看次数

远程监听 UNIX 套接字

我希望能够远程侦听 UNIX 套接字,以便使诸如dtach仅支持侦听 UNIX 套接字的程序远程工作。我已经阅读了关于socat它如何能够将 UNIX 套接字转发到 TCP 套接字,反之亦然,但在实践中我一直无法完成这项工作。那么,通过socat或任何其他方式,如何远程监听 UNIX 套接字?

(如果你碰巧知道如何dtach远程工作,那也没关系。这个问题只是对实际问题的抽象问题。)

unix sockets

6
推荐指数
1
解决办法
3756
查看次数

socket.error: [Errno 10013] 端口禁止访问权限

尝试使用 Python 脚本时,出现此错误:

socket.error: [Errno 10013] 尝试以访问权限禁止的方式访问套接字

我把帖子放在 Stackoverflow 上,我被引导来到这里并跟进我收到错误的原因。

/sf/ask/1285916481/

正如 stackoverflow 上的帖子所暗示的那样,问题不在于 Python,而在于我的计算机。我什至可以 telnet 到 smtp.gmail.com

任何人都可以提供任何建议吗?

编辑:已解决

问题是迈克菲防病毒软件。它阻塞了套接字连接。

来自 McAfee 访问保护日志

23/08/2013 10:23:54 am 被端口阻塞规则阻塞 C:\Program Files (x86)\Python26\python.exe 反病毒标准保护:防止群发邮件蠕虫发送邮件 74.125.25.108:25

我完全禁用了迈克菲,之后它运行良好。

谢谢

port sockets

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

SSH 隧道如何在低级别工作?

我对建立 SSH 隧道时发生的确切机制感兴趣。

假设我们有 3 台计算机:本地主机、中间主机和远程主机,具有以下拓扑:

Localhost --- INTERNET --- IntermediateHost --- LAN --- RemoteHost
Run Code Online (Sandbox Code Playgroud)

并且我们想建立一个通向在 RemoteHost 上运行的 Web 服务器的隧道。

中间和远程主机接受 SSH 连接。

当我在本地机器中执行以下命令时:

$ ssh -L 2022:remote:80 user@intermediate
Run Code Online (Sandbox Code Playgroud)

如果我假设以下,我是对的吗?

  • localhost的SSH客户端打开2022端口并监听(开始充当服务器)
  • 同时,localhost的 SSH客户端在中间主机上打开一个默认端口(22)的 SSH 连接。
  • 在这个连接中,客户端通知 IntermediateHost 它想要打开一个隧道(因为 SSH 协议支持它),所以现在中间 SSH 服务器知道它必须将通过这个连接接收到的流量发送到 RemoteHost 的 80 端口。

所以现在,在 Localhost 上运行的 Web 浏览器连接到 localhost:2022 并通过套接字发送“GET /”。SO 控制并将此信息封装在 TCP 数据包中,目标端口为 2022,然后将此信息封装在 IP 数据包中,目标地址为 LOCALHOST,操作系统的路由表确定该数据包是针对同一台机器的,所以它解开TCP数据包,读取目的地,然后解开它,将“GET /”返回给SSH客户端之前打开的serverSocket(在端口2022上)

这样对吗?因为据我所知,隧道通过SSH将TCP/IP数据包包裹起来,但是在这种情况下,SSH客户端无法访问TCP/IP数据包,它只能获取“应用程序级别”信息:“GET /”。

谢谢!

networking ssh operating-systems sockets

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

如何将 mysqld 作为常规非守护程序运行?

我想运行 mysql 的本地副本,以保持软件开发环境隔离。但是,我似乎无法启动 mysqld 服务器。

我已经创建了一个数据库目录mysql_install_db。我发现我需要一个套接字文件,以及如何指定路径。然而,mysqld 不断报告它无法找到或打开该文件。

/path/to/mysqld --datadir=./db/mysql --socket=./tmp/mysqld.sock
Run Code Online (Sandbox Code Playgroud)

(剪断)

130102 9:54:28 [ERROR] Can't start server : Bind on unix socket: No such file or directory
130102 9:54:28 [ERROR] Do you already have another mysqld server running on socket: ./tmp/mysqld.sock ?
Run Code Online (Sandbox Code Playgroud)

unix mysql sockets

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

tmux 或 screen 的无套接字替代方案

我的大学在他们的 AFS 上为每个学生提供了一个可通过 SSH 访问的目录。有一个(轻量级)CLI 驱动的软件,我想在大学里持续运行。

我以为我可以通过 SSH 通过屏幕运行软件,分离,然后在需要访问 CLI 时从任何其他 SSH 会话重新连接。但是, screen 和 tmux 不起作用,因为它们的功能依赖于套接字,并且不能在 AFS 空间上创建套接字。(见https://bugzilla.redhat.com/show_bug.cgi?id=676663

我的帐户没有特权,但可以访问可用于在本地编译和运行事物的工具链。

有什么好的解决办法吗?

linux gnu-screen afs sockets tmux

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

如何列出正在运行的进程的套接字选项?

是否有一种方便的方法(例如,我可以使用标准系统调用编写的现成命令或程序)来列出 Linux 系统上某个正在运行的进程的打开 TCP 套接字的套接字选项(例如 TCP_NODELAY)?

linux tcp sockets

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