草庐IT

interface-design

全部标签

windows - 环回接口(interface)上的 TIME_WAIT

为什么到环回接口(interface)的TCP连接以TIME_WAIT结束(套接字关闭并设置了SO_DONTLINGER),但到不同主机的相同连接不会结束在TIME_WAIT中(它们立即被重置/销毁)?这里有一些场景来说明:(A)两个应用程序,一个客户端和一个服务器,都在同一台Windows机器上运行。客户端通过服务器的环回接口(interface)(127.0.0.1,端口xxxx)连接到服务器,发送数据,接收数据,关闭套接字(设置SO_DONTLINGER)。假设连接非常短暂,因此客户端应用程序每秒建立和销毁大量连接。最终结果是套接字在TIME_WAIT中结束,客户端最终耗尽了它的

linux - Linux 中多个接口(interface)的自定义 TCP 参数

我的问题是关于Linux中的TCP参数。到目前为止,我想更改以下默认值:初始超时ACK延迟空闲连接超时我有一个带有2.6.x内核和2个以太网接口(interface)的LinuxBox。我知道TCP是一个与以太网设备没有任何关系的堆栈。话虽如此,问题是:有没有办法为每个接口(interface)设置自定义值?例如,在eth0中监听连接的服务器将为IdleConnectionTimeout使用一个值,而在eth1中监听连接的另一台服务器可以使用一个值该参数的不同值。如有任何注意事项,我们将不胜感激。最好的问候,蒂亚戈 最佳答案 看起来

tcp - 给定 TCP,当 IO 是非阻塞时,State Design Pattern 是否用处不大?

在我的TCP应用程序中,只要IO处于阻塞状态,状态设计模式似乎就很有用。我的SwingWorker的doInBackground()可以通过引用一个对象循环访问TCP连接中的读取、写入和接受状态。请参阅维基百科讨论页上的示例:http://en.wikipedia.org/wiki/Talk%3AState_pattern.然而,当我将服务器重构为非阻塞IO时,它似乎不再有用了。Select()返回一组准备好进行IO的channel,这些channel通过引用一系列if语句中的SelectionKey状态来处理。任何人都可以根据经验或理解来确认当IO是非阻塞时状态设计模式是否仍然有用?

networking - 将网络接口(interface)卡接收到的所有数据包推送到 TCP/IP 堆栈

是否可以将NIC接收到的所有数据包推送到TCP/IP堆栈,即使它们的以太网地址与我的以太网地址不匹配?换句话说,我想在我的NIC上处理所有传入的数据包。谁能提到更改网络接口(interface)驱动程序代码的可能场景?我如何检查驱动程序代码的操作? 最佳答案 在典型的系统中,这已经发生了。也就是说,您所要做的就是将接口(interface)置于混杂模式。然后驱动程序将它接收到的所有数据包发送到TCP/IP堆栈。检查任何普通的网络驱动程序,您会发现在处理接收到的数据包时,不会将MAC(或以太网)地址与设备的MAC地址进行比较。大大简化

c - 当::1 在接口(interface) 1 上时,为什么我可以将此套接字绑定(bind)到::1%2?

我试图了解sin6_scope_id在UNIXC套接字编程中如何用于IPv6地址。具体来说,我编写了这个试图绑定(bind)到::1%2的程序(所以接口(interface)2上的环回地址,如果我没看错的话)即使我的环回地址实际上在接口(interface)1上。我预计这会失败。但是绑定(bind)成功。为什么?这是ifconfig-a返回的前3个接口(interface):$ifconfig-alo0:flags=8049mtu16384options=3inet6::1prefixlen128inet127.0.0.1netmask0xff000000inet6fe80::1%lo

linux - 围绕疯狂的设备接口(interface)进行路由

我继承了一大段与内部开发的设备对话的代码。所述设备具有一个网络接口(interface),该接口(interface)非常慷慨,而且是临时的:它始终将其IP地址设置为172.16.0.50,并假定它直接连接到172.16.0.250(通过物理电缆)它向.250:2000发送UDP心跳,无论.250是否已绑定(bind)到该端口它可以通过.250:9016将UDP流量发送到.250:9001它在.50:7734处通过TCP公开基于文本的管理界面它作为UDP绑定(bind)到.50:7734并接受该端口上的任何传入流量作为时间戳以同步自身遗憾的是,修改设备的代码是绝对不可能的。源是可用的,

tcp - 到环回接口(interface)的 TCP 连接有多少开销?

我正在构建一个Web应用程序,其中所有数据库连接都是通过在同一台机器上运行的代理完成的(具体来说,CouchbaseMoxi)。我听说建立到外部服务器的TCP连接会产生开销(时间和内存),这是连接池背后的基本原理(Moxi为其外部连接处理)。但是,这种开销是否也存在于到本地主机/环回的TCP连接中?具体来说,我是否需要在我的应用程序和本地代理之间建立连接池,或者我是否可以为每个请求在那里建立一个新连接?更一般地说(我想是为了我自己的教育),如果建立与本地主机的TCP连接有任何开销,它是如何引入的? 最佳答案 对于本地主机,与远程tc

Java程序通过socket接口(interface)与邮件服务器建立TCP连接并发送邮件

我正在编写一个Java程序,它通过套接字接口(interface)与邮件服务器建立TCP连接,并发送一封电子邮件。我遇到的问题是,当我在命令行上运行它时,它会在写入“MAILFROM:”后停止。我没有收到任何错误,它只是在那时停止了。我不知道我做错了什么所以任何帮助将不胜感激importjava.io.*;importjava.net.*;publicclassEmailSender{publicstaticvoidmain(String[]args)throwsException{//EstablishaTCPconnectionwiththemailserver.Socketsoc

windows - Socket.Bind 和 IP 源路由,具有多个本地网络接口(interface)

我编写了一个在具有两个网络接口(interface)的系统(Win7)上运行的工具,每个接口(interface)都链接到不同的子网,每个子网都有自己的网关,然后链接到两个独立的远程网络(每个网关后都有传出防火墙)。我通过使用Socket.Bind(在执行Connect之前)到每个相关NIC的IP地址,通过两个NIC启动传出TCP连接。第一个NIC工作正常,但对于第二个NIC,我收到SocketException:“Asocketoperationwasattemptedtoanunreachablenetwork”。我最初的理解是,由于套接字绑定(bind)到具体NIC的本地端点,该

c#-4.0 - 使用在 C# 中执行的带有 TCP/IP 接口(interface)的 ESC/POS 命令直接打印到热敏打印机

我正致力于在厨房打印机(AclasKP71M)上实现ESC/POS(爱普生销售点标准代码)。我有一个用户界面,POS用户将其字符串输入到用户界面,用户输入的字符串将被发送到打印机,打印机打印数据。打印机与主机的接口(interface)使用以太网(100M),使用TCP/IP连接。我已经设法将每个必要的命令嵌入到C#方法中,我还在服务器上获取了一些示例代码/客户端C#连接并尝试将其包含在我的连接中。我现在面临的问题是我的代码似乎开始连接但它立即卡住什么都不做就停止了连接。如果有人能纠正我,或者告诉我问题出在哪里,或者给我一些关于如何进行的想法,我将不胜感激?这是代码。usingSyst