Articles of 套接字

在Linux中指定运行时的UDP接收缓冲区大小

在Linux中,可以使用以下命令为networking数据包指定系统的默认接收缓冲区大小,比如UDP: sysctl -w net.core.rmem_max=<value> sysctl -w net.core.rmem_default=<value> 但是我想知道,是否有可能通过在运行时指定每个UDP套接字的接收缓冲区大小来使应用程序(比如说c )覆盖系统的默认值?

java中套接字的最大数量

在Windows下的java套接字的最大数量是多less? 我怎样才能改变它?

.NET / Windows Server中的最大传出套接字连接

我有一个稍微不寻常的情况,我需要维护客户端tcp连接到另一台服务器上的数千移动用户在我的服务器上(基本上移动设备连接到我的中间层服务器,当他们能够,这保持了一个更稳定的连接到移动设备的第三方服务器)。 无论如何,我已经开发了我的服务器应用程序使用asynchronous套接字(包装在SslStream中),并有1000个客户端会话现在全时运行。 我对结果非常满意,因为我看到单个核心处理器的平均CPU利用率为0-10%,随着时间的推移,大约有60mb的ram被使用。 我的问题是,如何扩展这个范围,以便我的服务器上可以运行100,000或20万个或更多的客户端会话? 再一次,这是有点不传统的,因为我的服务器不是真的像服务器,因为我担心传出连接,而不是传入。 我知道有一个registry设置MaxUserPort需要改变,以超越默认值,似乎是5000.但是,似乎有另一个65535的硬性限制,我不太清楚该限制所在的位置。 这是每个networking接口的限制吗? 这是全球Windows的限制吗? 这是每个进程的限制吗? 如果是每个networking接口的限制,我可以添加多个networking接口并将客户端会话套接字绑定到每个接口(例如:接口1上的65k,接口2上的65k等)? 我也不太确定,如果有套接字选项或属性,我应该设置帮助的东西了。 现在我没有使用任何套接字选项。 我真的很感激这个问题的任何想法,因为在这个问题上很难得到明确的build议。 谢谢!

VB.net服务编程和使用TCP套接字

我有一个问题,我很好奇,如果有人可以帮我解决它。 我为VB.NET编写了客户端 – 服务器套接字编程教程。 然后我尝试使用服务而不是程序来实现它。 我了解它是如何作为一个程序工作,但是当我尝试将它移植到一个服务,它不起作用。 当我运行服务时,它立即启动并停止。 它从来没有build立连接。 不幸的是,我并不是那么棒的VB.net程序员,但到目前为止我对程序的快速开发非常喜欢。 这项服务的想法是: 电脑启动时运行 抓住电脑的名字 将PC的名称发送到服务器 一个。 服务器然后取名称并在数据库中查找它 湾 返回客户端机器的备份时间 然后,客户端机器进行当前时间的math计算,以及假设备份并将所有内容都放入ms中的时间。 然后在指定的时间通过运行dos命令启动程序来备份机器。 现在回答我在论坛中发现的一个常见问题。 为什么我不使用任务调度程序。 那么我确实使用任务计划,并有服务器控制时间机器的方式。 但是,有些电脑会进入hibernate状态,我认为这个hibernate状态影响了20%的机器。 没有这个hibernate状态不是睡眠模式,也不是hibernate状态。 电脑开着,他们对鼠标移动的反应非常快。 我创build了一个将时间写入C:\上的文件的服务,并且一直有效。 所以现在我决定在客户端机器上有一个服务,并与服务器通信。 我收集了很less关于创build服务和networking套接字编程的信息。 不幸的是,我还没有发现任何将两者联系在一起的东西。 我发现一个vb.net客户端服务器程序,做我想要的,但我想它作为一个服务,而不是一个程序。 我发现了一个使用PSEXEC从服务器上创build文件的临时解决scheme,但这个过程简直就是这么简单。 我做了下一个最好的事情,我去了微软的套接字库,并试图build立自己的服务基于什么是有道理的。 还是没有用。 如果你知道任何书籍,资源,有任何意见,等任何帮助,你可以给我将不胜感激。 谢谢您的帮助。 下面你会发现我的代码。 在这一点上,我所关心的是在客户端和服务器之间build立连接。 我可以重新找出其余的东西,并从那里撬动代码。 麦克风 这里是我一直在玩的服务器代码: Imports System.Net.Sockets Imports System.Net Imports System.Text Public Class BackupService Private Mythread As Threading.Thread Private clientThread […]

调整Windows CE套接字连接的超时时间

我正在testing我们的软件如何处理连接失败。 我们使用socket.BeginConnect和一个callback函数集。 端点IP地址和/或端口号故意无效。 callback函数每次调用〜21s后都会调用(当然有超时和连接失败)。 我希望能够调整超时或停止testing或最终部署。 根据此MSDN文章的Windows CE 5.0 ,关键HKLM\Comm\Tcpip\Parms\TcpInitialRTT看起来很有帮助。 但我已经尝试了值1,2,3和22,超时不会从〜21s改变。 计算机在每次更改后都会重新启动。 可以在操作系统级别调整TCP / IP套接字连接的超时时间吗? 使用C#和.NET Compact Framework。

如何使用SuperWebSocket创build一个WebSocket服务器

我正在创build一个需要WebSocket通信的应用程序。 我所需要的只是一个带有线程可能性的简单的WebSocketServer。 我发现SuperWebSocket可以满足我的需求。 但是,我对C#的不熟悉使得我们无法理解代码。 任何人都可以告诉我如何创build一个简单的服务器应该回应从浏览器/网页发送的消息。 我将非常感谢那些performance出一些好的方向的人。 我无法弄清楚他们的示例代码的用法。 编辑:这是我想要实现的东西。 如果有人说一个确切的解决scheme,我会采用那一个。 编辑: “Robar”已经给出了直接的答案。 这是我如何使用它。 this.NewSessionConnected += new SessionEventHandler<WebSocketSession>(this.WebSocketServer_NewSessionConnected); this.NewDataReceived += new SessionEventHandler<WebSocketSession, byte[]>(this.WebSocketServer_NewDataReceived); this.NewMessageReceived += new SessionEventHandler<WebSocketSession, string>(this.WebSocketServer_NewMessageReceived); this.SessionClosed += new SessionEventHandler<WebSocketSession, SuperSocket.SocketBase.CloseReason>(this.WebSocketServer_SessionClosed);

Socket.Close不真正closuresTCP套接字? (C#)

看来,使用socket.Close()为一个TCP套接字,并没有完全closures套接字。 在下面的例子中,我试图连接到端口9999的example.com,它不是打开的,在短暂的超时之后,我试图closures套接字。 for (int i = 0; i < 200; i++) { Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); sock.LingerState = new LingerOption(false, 0); sock.BeginConnect("www.example.com", 9999, OnSocketConnected, sock); System.Threading.Thread.Sleep(50); sock.Close(); } 但是当我在循环完成后看看netstat时,我发现有很多半打开的套接字: TCP israel-xp:6506 www.example.com:9999 SYN_SENT TCP israel-xp:6507 www.example.com:9999 SYN_SENT TCP israel-xp:6508 www.example.com:9999 SYN_SENT TCP israel-xp:6509 www.example.com:9999 SYN_SENT 编辑 。 好吧,一些情况下失踪了。 我正在使用beginconnect,因为我期望套接字连接失败(9999未打开),在我的真实代码中,一旦定时器被设置,我就调用socket.Close()。 OnSocketConnected我调用EndConnect,它引发exception(试图调用一个处置对象的方法)。 我的目标是有一个短暂的套接字连接阶段。 任何线索我做错了什么? […]

recv()没有时间从Win 7上的套接字接收所有的UDP数据包?

我正在为Windows XP和Seven开发一个networking应用程序。 应用程序通过UDP接收数据并使用阻塞套接字,select(不是WSAPoll)和recv函数。 为了testing,我使用了两个相同的笔记本电脑安装了不同的操作系统:戴尔Latitude D630,酷睿2双核2.2GHz,4Gb内存,Broadcom NetXtreme 57xx千兆控制器。 我有以下结果: Windows XP Professional 32bit:networking监视器应用程序显示networking接口从LAN接收平均速度为35 MBytes / s的数据。 应用程序从平均速度为30 MBytes / s的套接字接收数据,检测到13%的损失。 Windows 7 Enterprise 32bit:networking监视器应用程序显示networking接口从LAN接收平均速度为35 MBytes / s的数据。 应用程序从平均速度为10 MBytes / s的套接字接收数据,并检测到65%的损失。 看起来应用程序没有足够的时间在Windows 7上接收来自套接字的所有数据包。但为什么结果与Win XP不同呢?

Windows套接字通知接收器

什么是Windows套接字通知接收器? 我目前正在使用MFC套接字,我想我做了一些错误,因为我在Windows关机时收到此消息。 什么可能导致这个? 谢谢。 编辑:我目前正在与需要通过套接字沟通的应用程序。 当我closures我的电脑时,我收到一个带有“windows socket notification sink”名称的进度条的消息框。 这是我能说的很多。

抓取程序的控制台输出

我正在为一家公司创build一个networkingpipe理程序,我正在做一些合同工作(与我无关) 作为该计划的一部分,我想有一个控制台/ telnet(types)克隆。 我有一个工作目录系统,我可以从根本上读取目录中的所有文件,并更改目录。 我也有一个简单的FTP协议设置。 不过,我想以编程方式随意使用标准input/输出程序对不同的程序进行说话。 我不反对DLL注入技术和其他方法,因为这是一个良性的程序。 如果可能的话,如果我可以直接轻松地使用控制台,那将是非常棒的。 (系统()可能会工作,但是这不允许继续通信或回读输出) 我想到目前为止抓住PATH环境variables,并利用它的标准命令(IPCONFIG,NETSTAT等)我的networking库使通信容易,但我不知道如何与程序的控制台接口… TL; DR: 程序之间是否有预定义的标准控制台通信方式?