草庐IT

socket_handle

全部标签

sockets - TCP:两个不同的套接字可以共享一个端口吗?

这可能是一个非常基本的问题,但它让我感到困惑。两个不同连接的套接字可以共享一个端口吗?我正在编写一个应用程序服务器,它应该能够处理超过100k的并发连接,并且我们知道系统上可用的端口数约为60k(16位)。连接的套接字被分配给一个新的(专用)端口,因此这意味着并发连接数受端口数的限制,除非多个套接字可以共享同一个端口。所以问题。 最佳答案 TCP/HTTP监听端口:多个用户如何共享同一个端口那么,当服务器监听TCP端口上的传入连接时会发生什么?例如,假设您在端口80上有一个Web服务器。假设您的计算机的公共(public)IP地址为

sockets - 套接字的替代品

这个问题在这里已经有了答案:WhatarethealternativestoSocketProgramming?(3个答案)关闭2年前。我读到了套接字的定义,“UDP/TCP连接最常用的API”(学校资料)。这让我很想知道是否有其他选择,但一直找不到。我不是说添加抽象层(例如RPC或RMI),或使用不同网络堆栈的东西,而是使用其他东西来完成相同的角色一种不同的方式。我可能也误解了套接字的作用,我认为它适合sessionOSI层,或者可能是传输层?我不太确定。我不打算使用这些替代方案,我知道套接字有多方便,我只是想知道。感谢您的关注

sockets - 通讯协议(protocol)

我正在开发由主服务器和工作服务器组成的分布式系统。应该有两种消息:心跳Master获取worker的状态并立即响应适当的命令。例如:从Worker到Master的消息:“嘿,我有数据a、b、c”Master对Worker的响应:“没问题,但是扔掉c-我们不再需要它了”参与者以间隔T交换此消息。直接master命令假设客户要求master终止作业#123。这是对话:Master给Worker的消息:“警报!我们需要终止作业#123”从Worker到Master的消息:“没问题!完成。”很明显,我们无法预测此消息何时出现。最简单的解决方案是master是这两个消息的所有通信的发起者(在心跳

sockets - Modbus TCP :Is there any better way for reading registers randomly one or more?

我们正在编写一个Windows服务,通过C#中的Socket编程,使用ModbusTCP协议(protocol)以1秒的轮询间隔从PLC读取数据。WindowsService会接收PLC的随机寄存器来读取寄存器值。预期随机注册,如40150、40250、40270、40320。从上面的案例如何创建ModbusTCP请求头?我们可以找到两种可能的方法:使用功能代码3,我们可以读取特定范围内的寄存器的值,例如从40150到40320,这样我们就可以读取这40150,40250,40270,40320寄存器值。另一种方式是逐个请求40150、40250、40270、40320这几个寄存器(这

node.js - 如何在 Node.js 中结合使用 express 和 tcp-socket

我用node.js和express实现了我的第一个网络应用程序。它工作正常。结构如下。app.get('/',(request,response)=>{response.render('home',{orders,actualPosition,path});});app.post('/',function(req,res){//dosomethingres.redirect('/')})app.listen(8080,()=>{console.log(`Listeningonhttp://127.0.0.1:${port}/!`);})现在我想与matlab程序通信,最好通过tcp/i

PHP socket_write 在非阻塞套接字循环中只有最后一次写入成功

我希望通过套接字将数据发送到2个不同的端点。这是为了通过WebSockets和Push-Services发送消息(一个单独的工作实例)。由于我的应用程序不需要端点的响应,我将套接字设置为非阻塞,以便我的应用程序快速完成请求。问题是,只有最后一个socket_write完成了。第一个端点不接收数据。代码如下:foreach($workerInstancesas$workerInstance){//$workerInstancecontainsahostname$sock=socket_create(AF_INET,SOCK_STREAM,SOL_TCP);socket_set_nonbl

.net - 由 C# sockets CONNECTIONS

我正在尝试打开一个用于无线连接的套接字,据我所知,我需要打开端口8888。这个端口是什么?见链接:http://csharp.net-informations.com/communications/csharp-multi-threaded-server-socket.htm 最佳答案 如果你想问这个端口是什么意思,它没有注册,也没有被任何重要的人使用。IANA表示它曾在某个时候被一个"NewsEDGEserver"使用过,我什至无法通过谷歌搜索找到。这只是编写教程的人选择用作示例的随机端口。

sockets - 从 NodeJS 在 TCP 服务器上实现简单的身份验证

我几乎可以肯定我不了解TCP服务器的基本概念并且我没有将数据视为流,更糟糕的是,我可能没有很好地使用事件。我希望tcp服务器写入套接字“用户名:”,这样您就可以输入您的用户名(在netcat或telnet等tcp客户端上),然后tcp服务器必须将下一个数据视为用户名。到目前为止它确实有效(虽然我几乎可以肯定有更好的方法来做到这一点),接下来它应该写“密码:”这样你就可以输入你的密码,如果它是正确的,它应该然后验证凭据并做更多的事情......但是当你输入密码时,它会再次写入'password:'因为socket.write('password:');本身在另一个里面socket.on(

sockets - TCP_CORK 的影响

我有一个用例,我在一个方向上通过TCP/IP发送数据。我通过多个send()调用来执行此操作,这些调用具有非常小的(相对于以太网帧的大小)有效负载(没有任何send()标志-称呼)。为了防止我的小负载数据包膨胀到一个完整的以太网帧的大小,我认为使用TCP_CORK套接字选项会很好。这行得通,但是当实际比较使用TCP_CORK前后的情况时,我注意到这种聚合已经完成了。为什么会这样?正如我所说,我没有为send()(如MSG_MORE)或其他套接字选项使用任何标志,所以我原以为我的原始解决方案是浪费的。 最佳答案 如果您发送消息的速度非

java - Socket客户端/服务器的java程序中如何设置ECN(explicit congestion notification)位

我已经为服务器和客户端编写了基本的套接字程序。我想知道如何使用java将数据从服务器传输到客户端,以及当服务器发送数据时如果客户端缓冲区溢出,服务器应该减少它发送速率(拥塞应由tcp/ip中的ECN位指示)......感谢您的帮助。 最佳答案 ECN字段是IP的属性和Transportlayer.因此,我认为您不能从普通应用程序中设置它。一种方法是创建RAWSocket并在TCP/IPheader中使用适当的字段集(在您的情况下为ECN)自行制作数据包。您还应该注意,所有路由器和参与的终端主机都必须具有ECN支持。否则,路由器可能会