标签: sockets

确定哪个进程在 Windows 上绑定了端口(不监听)

如果我想找出哪个进程正在侦听哪个套接字,我可以使用 netstat/TCPview 并立即看到它。但是,可以在不侦听的情况下绑定到地址。如果这样做,它不会出现在 netstat/TCPview 中,但会阻止套接字。

蟒蛇示例:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0',12345))
Run Code Online (Sandbox Code Playgroud)

端口现在已绑定,并且在第一个实例仍在运行时尝试在第二个实例中执行相同的代码将导致错误。但是,除非您实际开始使用该端口侦听

s.listen(1)
Run Code Online (Sandbox Code Playgroud)

该端口未显示在 netstat/TCPview 中。

问题是: 是否有可能看到哪些端口被绑定(但没有监听),以及哪个进程正在绑定它们?

这样做的背景是我一个移动范围的1976端口无法绑定,我想知道是什么原因造成的。与此同时,我通过反复试验确定 Internet 连接共享阻止了这些端口,但我仍然对这个问题的答案感到好奇。

编辑:由于受欢迎的要求,这里是我用来查找这些端口的代码:

import time
import socket

for i in range(0,65536):
    try:
        print "Listening on port", i, '...', 
        serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        serversocket.bind(('0.0.0.0', i))
        serversocket.listen(5)
        #time.sleep(0.1)
        serversocket.close()
        print "ok"
    except:
        print "FAIL"
Run Code Online (Sandbox Code Playgroud)

(您可能希望将输出通过管道传递给 grep 并仅过滤 FAIL)

windows windows-7 port tcpip sockets

14
推荐指数
2
解决办法
4705
查看次数

当进程退出时,Windows 是否负责关闭套接字?

我已经阅读了关于 Linux 的这个问题,当进程终止时可以绑定端口吗?
Linux 似乎会在进程退出并留下打开的套接字后进行清理。我想知道是否有任何关于它如何在 Windows 上工作的规范。操作系统是否始终负责关闭不关闭就退出的进程的套接字?

networking windows sockets

13
推荐指数
2
解决办法
6022
查看次数

操作系统如何判断“地址是否已被使用”?

如果我的 C 程序使用套接字、绑定到localhost:9025、交换一些数据、被手动杀死并重新启动,它有时会崩溃并出现以下错误:

地址已被使用。

我试图寻找“使用端口的pid”的所有SE推荐的软件都未能返回任何进程ID,所以我假设当时没有进程使用端口 9025,应该是这种情况。

尽管如此,根据我从对主题相似问题的评论中收集到的信息,在我看来,当且仅当进程使用该特定地址时,“地址”才“已在使用”。那为什么这是假的呢?

现在我假设操作系统会跟踪哪些地址正在使用,哪些没有,但情况是这样吗?如果是这样,我很乐意您告诉我如何纠正它,因为我对这个问题的最佳解决方案是“等待不确定的时间”。

编辑:我使用 Linux 5.2.2-arch1-1-ARCH x86_64

networking linux c sockets

13
推荐指数
1
解决办法
4067
查看次数

sshfs 从 mac 挂载 linux 目录停止工作

直到今天早上,我一直很好地使用 sshfs 从我办公室的 linux 机器上挂载目录。今天,它停止了。这是我的 sshfs 命令:

sshfs -osshfs_sync,volname=linux-builder3 linux-builder3:/home/cnorum /Users/carl/linux-builder3
Run Code Online (Sandbox Code Playgroud)

我收到此错误,但 sshfs 进程似乎仍在运行(也就是说,它只是坐在那里,永远不会返回到 shell 提示符):

mount_osxfusefs: failed to mount /Users/carl/linux-builder3@/dev/osxfuse1: Socket is not connected
Run Code Online (Sandbox Code Playgroud)

Mac 上的系统日志包含以下消息:

2/20/13 12:57:27.476 PM KernelEventAgent[43]: tid 00000000 received event(s) VQ_DEAD (32)
2/20/13 12:57:27.000 PM kernel[0]: OSXFUSE: force ejecting (no response from user space 5)
2/20/13 12:57:27.000 PM kernel[0]: OSXFUSE: user-space initialization failed (57)
Run Code Online (Sandbox Code Playgroud)

这是/var/log/auth.log在 linux 机器上:

Feb 20 12:56:28 linux-builder3 adclient[1599]: INFO  <fd:22 PAMIsUserAllowedAccess> audit User 'cnorum' is authorized
Feb 20 12:56:28 …
Run Code Online (Sandbox Code Playgroud)

linux sshfs sockets macos

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

是否可以在主机之间共享 tmux 套接字?

我想知道是否可以在不同主机之间共享 tmux 服务器套接字。例如,我有一个虚拟机(来宾)在我的主机内运行,我在来宾中运行 tmux 会话,我的主机是否可以访问来宾的 tmux 会话并用它做很酷的事情?(例如,向客人的会话发送命令)?

session sockets tmux

11
推荐指数
1
解决办法
5808
查看次数

将 M.2 (B &amp; M) key SSD 连接到 B 插槽

我购买了带有 M.2 插槽 (B & M) 键的 SSD,但我的计算机只有一个 B 键插槽。我的问题是,如果我可以在这个 B 插槽中连接 SSD,它会正常工作吗?

固态硬盘插槽

ssd sockets m.2

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

告诉 GNU 屏幕在哪里保存会话?

我的 GNU 屏幕将其会话存储在/tmp目录中。

这意味着在重新启动后,所有会话都将丢失

$ screen -list 
No Sockets found in /tmp/uscreens/S-dehmann.
Run Code Online (Sandbox Code Playgroud)

我怎么能告诉它把它们存储在我的主目录中的特定目录中,它们不会那么容易丢失?

session gnu-screen sockets

10
推荐指数
1
解决办法
3608
查看次数

什么是非联网Unix域套接字?

我正在阅读《揭露不安全的 docker 守护进程》

它说

Docker daemon creates a non-networked Unix domain socket at /var/run/docker.sock 
Run Code Online (Sandbox Code Playgroud)

非联网Unix域套接字表示什么?

linux sockets

10
推荐指数
1
解决办法
2354
查看次数

鉴于 tar 忽略了我的 2 个套接字,我该如何备份然后恢复我的登录文件夹?

我对我的登录区域进行了网络备份,以准备重新格式化它所在的卷,使其可在运行最新版本Leopard 的旧 Power Mac G5启动。

虽然我不相信这个症状是实际tar调用的函数,但这里是完整的实际命令:

   bill@r2d2-2:~
   [108] (sudo tar cf - -C /Volumes/usr1 Users) | gzip -c - | ssh whmcclos@mbp \
             'cat > /Volumes/link2TMS/r2d2_usr1_Users.tar.gz'
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Commands: socket ignored
   tar: Users/bill/Library/Acrobat User Data/8.0_ppc/Synchronizer/Notification: socket ignored
Run Code Online (Sandbox Code Playgroud)

tar是忽略的两个套接字文件

bill@r2d2:~/Library/Acrobat User Data/8.0_ppc/Synchronizer
[11] ls -larhdt *
drwx------  3 bill  staff   102B Jun  4  2010 metadata
-rw-r--r--  1 bill  staff     0B Jan 20 13:05 adobesynchronizersu80
srwxr-xr-x  1 bill  staff     0B Jan 20 13:05 …
Run Code Online (Sandbox Code Playgroud)

backup restore tar sockets macos

8
推荐指数
1
解决办法
4780
查看次数

如何从 Docker 容器(MySQL、MariaDB 等)向主机公开 Linux 套接字文件

免责声明:我不是在寻找配置 MySQL/MariaDB 以使用 TCP 连接的方法。我知道这个选项,问题不在于那个方面。

我无法将容器内的套接字文件绑定到主机文件系统。我希望像这样一个简单的 docker-compose 条目可以工作:

    volumes:
      - /srv/docker/sockets/mariadb.container.sock:/var/run/mysqld/mysqld.sock
Run Code Online (Sandbox Code Playgroud)

但这没有用。相反,我遇到了以下错误消息:

its_sql_dev    | 190305 10:31:23 [ERROR] Can't start server : Bind on unix socket: Address already in use
its_sql_dev    | 190305 10:31:23 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
Run Code Online (Sandbox Code Playgroud)

主机系统中文件的状态似乎无关紧要——它是否已经存在、存在a+rwx权限、存在于正确的用户或根本不存在似乎对容器是否启动没有任何影响。

也许最令人困惑的是主机文件系统中的最终结果:

[user@server mariadb]# ls -alsh /srv/docker/shared/
total 16K
4.0K drwxrwxrwx 4 root    root     4.0K Mar  5 11:31 .
4.0K drwxr-xr-x 7 root    root     4.0K Mar  1 13:09 ..
4.0K drwxr-xr-x 2 …
Run Code Online (Sandbox Code Playgroud)

linux mysql sockets mariadb docker

8
推荐指数
1
解决办法
7247
查看次数

标签 统计

sockets ×10

linux ×4

macos ×2

networking ×2

session ×2

windows ×2

backup ×1

c ×1

docker ×1

gnu-screen ×1

m.2 ×1

mariadb ×1

mysql ×1

port ×1

restore ×1

ssd ×1

sshfs ×1

tar ×1

tcpip ×1

tmux ×1

windows-7 ×1