应用程序如何通过套接字进行通信

应用程序如何通过套接字进行通信

在我的电脑上,音频有时有效,有时无效。我想解决这个问题。首先我确认我正在使用pulseaudio。我通过跟踪pulseaudio过程来做到这一点:

[pid  2289] send(28, "\0\0\0\24\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0L\0\0\0=L\377\377\377\377L\0"..., 40, MSG_NOSIGNAL) = 40

同时,应用程序扬声器测试从进程 2289、pulseaudio 接收数据。很多行都是这样的:

[pid 29146] recvmsg(7, {msg_name(0)=NULL, msg_iov(1)=[{"\0\0\0\0\377\377\377\377\0\0\0\20\0\0\0\0@\0\0\0", 20}], msg_controllen=24, {cmsg_len=24, cmsg_level=SOL_SOCKET, cmsg_type=SCM_CREDENTIALS{pid=2289, uid=0, gid=0}}, msg_flags=0}, 0) = 20

现在我可以看到套接字是邻居:

# ll /proc/29146/fd/7
lrwx------ 1 root root 64 Apr  4 16:46 /proc/29146/fd/7 -> socket:[114414]
# ll /proc/2289/fd/28
lrwx------ 1 root root 64 Apr  4 15:13 /proc/2289/fd/28 -> socket:[114415]

这让我想到两个问题:

  • 为什么pulseaudio正在发送数据而speaker-test正在接收数据?我希望情况正好相反。
  • 在哪里可以找到套接字 114414 和 114415 已连接?我可以嗅探他们的流量吗?

顺便说一句,我正在博客上记录这次冒险http://www.linuxintro.org/wiki/Sound_troubleshooting#strace.27ing_sound_II

答案1

相关内容