Questions tagged «socket»

是用于在同一主机操作系统内执行的进程之间交换数据的数据通信端点。

4
如何通过Debian Squeeze上的Shell与Unix域套接字通信?
我正在运行Debian Squeeze Web服务器。我已经在上面安装了memcached,并配置了memcached以监听Unix域套接字(位于/tmp/memcached.sock),因为它只需要从位于同一服务器上的网站接收消息即可。 似乎工作正常,但我也想通过外壳与memcached通信,以检查它是否在执行我认为正在执行的操作。 memcached通过简单的ASCII协议接受消息(如果我理解正确的话)。如果它正在侦听TCP / IP,则可以通过以下方式向其发送消息nc: $ echo "stats settings" | nc localhost 11211 但是我不知道如何将文本发送到域套接字。 在我的笔记本电脑(运行OS X Lion)上,同时具有nc和telnet(-U并-u分别具有)选项以使用域套接字。但是,在我的Debian Squeeze Web服务器上,这些选项不存在。
99 shell  debian  socket  telnet 

7
谁有这个unix套接字对的另一端?
我想确定哪个进程具有UNIX套接字的另一端。 具体来说,我要问的是使用创建的一个socketpair(),尽管问题对于任何UNIX套接字都是相同的。 我有一个程序parent创建一个socketpair(AF_UNIX, SOCK_STREAM, 0, fds)和fork()。父进程关闭fds[1]并保持fds[0]通信。孩子做相反的事情close(fds[0]); s=fds[1]。然后孩子exec()的另一个程序child1。两者可以通过此套接字对来回通信。 现在,假设我知道谁parent是谁,但我想弄清楚谁child1是谁。我该怎么做呢? 我可以使用几种工具,但是没有一个可以告诉我哪个过程在套接字的另一端。我努力了: lsof -c progname lsof -c parent -c child1 ls -l /proc/$(pidof server)/fd cat /proc/net/unix 基本上,我可以看到两个插座以及有关它们的所有内容,但无法确定它们已连接。我正在尝试确定父级中的哪个FD与哪个子进程进行通信。

6
什么是插座?
有人可以告诉我什么是插座吗?我在SSL等的许多缩写词中看到了它。 另外,为什么叫插座?仅仅是因为这是他们发明的名字吗?还是他们想出的名字?

2
UNIX套接字与TCP端口的性能
例如在php-fpm上: #listen = 127.0.0.1:9000 listen = /var/run/php-fpm/php-fpm.sock 在TCP端口上使用基于unix套接字的侦听器之间在性能上有什么主要区别吗?(不仅对于PHP,而且一般而言。每个服务是否有所不同?)

2
/ proc / PID / fd / X链接号
在Linux中,在中/proc/PID/fd/X,管道或套接字的文件描述符的链接具有数字,例如: l-wx------ 1 user user 64 Mar 24 00:05 1 -> pipe:[6839] l-wx------ 1 user user 64 Mar 24 00:05 2 -> pipe:[6839] lrwx------ 1 user user 64 Mar 24 00:05 3 -> socket:[3142925] lrwx------ 1 user user 64 Mar 24 00:05 4 -> socket:[3142926] lr-x------ 1 user user 64 …



3
如何为应用程序保留端口?
如何为自定义应用程序保留端口列表? 具体来说,我正在创建的产品具有很多流程,并且它们之间有很多相互联系。 我遇到的问题是-操作系统偶尔会窃取我的端口。很少见,但确实如此。 这可能是因为其他应用程序使用了“ :: bind”,但未指定端口。 有时,当我使用未绑定的套接字调用“ :: connect”时,我自己的应用程序会盗用该端口。从手册页可以看出: 如果套接字尚未绑定到本地地址,则connect()应将其绑定到一个地址,除非该套接字的地址族为AF_UNIX,否则为未使用的本地地址。 所以我的问题是,我可以保留我需要的端口以便操作系统不使用它们吗?可以用/ etc / services完成吗?还是有其他方法?
29 tcp  udp  socket 

3
为什么将TCP / IP套接字视为“打开文件”?
我需要一些帮助,以确保我确定这是Linux中的一个基本概念:打开文件的限制。具体来说,我对为何打开的套接字可以计入系统中“打开文件”总数的情况感到困惑。 有人可以详细说明原因吗?我知道,这很可能可以追溯到Linux中的全部“一切都是文件”原则,但是任何其他细节都将不胜感激。

4
服务器如何确定要发送到哪个客户端端口?
据我了解,这是客户端发出连接请求时发生的情况: 服务器将绑定到特定的端口号。端口号始终绑定到侦听进程。由于只有服务器正在侦听传入的连接,因此我们不需要在客户端进行绑定 服务器将在该端口号上继续执行listeninig。 客户端将发送一个connect()请求。 服务器将使用接受请求accept()。一旦服务器接受客户端的请求,内核分配服务器进一步随机端口号send()和receive(),因为不能用于发送和监听服务器上的相同的端口号,和先前端口仍然是聆听新的联系 考虑到所有这些,服务器如何找出客户端接收的端口?我知道客户端将发送带有源端口和目标端口的TCP段,因此服务器将使用该段的源端口作为其目标端口,但是服务器调用什么功能来查找该端口?是accept()吗
26 tcp  socket 

4
Unix Internet套接字文件吗?
我知道“一切都是文件”是Unix的主要概念之一,但是套接字使用内核提供的不同API(例如套接字,sendto,recv等),而不是普通的文件系统接口。 这个“一切都是文件”在这里如何应用?

3
每个套接字都有文件吗?
UNIX世界中的“一切都是文件”。 以上一句很有名。运行时echo "hello programmer" >> /dev/tty1,我可以在TeleType 1 ... 上观看给定的字符串。 每个文件是什么?在哪里socket?假设我的朋友连接到我的PC,其IP为h.h.h.h,我如何访问相应的文件?可能吗?
21 files  kernel  socket 

2
如何使TCP套接字超时
对于服务器环境的网络灾难模拟,我们正在寻找一种故意使TCP套接字超时的方法。现有插座有没有简单的方法?另外,很少的C测试用例程序将是一个加号。 我们已经尝试在TCP缓冲区读取期间关闭网络接口,并从断开连接的已装载资源(samba)中读取。 测试服务器是Ubuntu 12.04.4。
20 socket  timeout 

2
为什么套接字路径长度限制为一百个字符?
在Unix系统上,路径名通常几乎没有长度限制(在Linux上是4096个字符)...除了套接字文件路径最多只能有100个字符(在Linux上为 107个字符)外)之外。 第一个问题: 为什么限制这么低? 我检查了,它似乎有可能通过改变当前的工作目录,并在不同的目录中创建所有使用相同的路径几个套接字文件来解决此限制./myfile.sock:客户端应用程序似乎正确地连接到预期的服务器进程偶数虽然lsof显示所有他们中的一个在同一套接字文件路径上侦听。 这种解决方法可靠吗?还是我很幸运? 此行为是特定于Linux的,还是该解决方法也适用于其他Unix?

3
内核套接字结构和TCP_DIAG
我正在开发一种连接到实时数据服务器(使用TCP)的软件,但有些连接掉线了。我的猜测是客户端无法足够快地读取来自服务器的数据。因此,我想监视我的TCP套接字。为此,我找到了“ ss”工具。 这个工具可以查看每个套接字的状态-这是命令输出的示例行 ss -inm 'src *:50000' ESTAB 0 0 184.7.60.2:50000 184.92.35.104:1105 mem:(r0,w0,f0,t0) sack rto:204 rtt:1.875/0.75 ato:40 我的问题是:记忆部分是什么意思?查看该工具的源代码,我发现数据来自内核结构(sock中的sock.h)。更确切地说,它来自以下领域: r = sk->sk_rmem_alloc w = sk->sk_wmem_queued; f = sk->sk_forward_alloc; t = sk->sk_wmem_alloc; 有人知道他们的意思吗?我的猜测是: rmem_alloc :入站缓冲区的大小 wmem_alloc :出站缓冲区的大小 sk_forward_alloc :??? sk->sk_wmem_queued :??? 这是我的缓冲区大小: net.ipv4.tcp_rmem = 4096 87380 174760 net.ipv4.tcp_wmem = 4096 16384 131072 …
18 linux  tcp  socket 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.