草庐IT

RAW_SOCKET

全部标签

Java Socket 客户端向设备发送额外的字节

目前我正在开发一个将二进制数据命令发送到设备面板的Java客户端。我有一个奇怪的问题,如果我为每个套接字连接(一个TCPsession)发送一个命令,所有命令都可以正常工作。但是当我在一个连接(同一个TCPsession)中发送多个命令时,第一个命令在设备面板上完美执行,但在第二个命令中它获得两个额外的字节,值为0x01和0x00。很奇怪,这几天我一直在尝试,但找不到答案。我的代码:SSLSocketFactorysslsocketfactory=(SSLSocketFactory)SSLSocketFactory.getDefault();sslsocket=(SSLSocket)s

Linux/Unix Socket自连接

当客户端尝试连接到服务器时,如果客户端和服务器都是本地主机,则可能会发生自连接(源端口和目标端口恰好相同。)。但我的问题是,客户端没有监听那个端口,怎么可能自连接? 最佳答案 遇到同样的现象后,我发现了你的问题。我找到的最好的解释是EverythingAboutNothing:TCPClientSelfConnect.您可以通过getsockname()请求分配给您的端口,并将其与远程端口进行比较以检测这些自连接:sockaddr_inaddr_client;socklet_tlen=sizeof(saddr_in);if(gets

windows - 为什么在 Windows 上尝试 Socket.connect 失败需要 1 秒?

使用.net时,我注意到尝试连接到未监听的端口总是需要1秒。为了检查这是.net抽象中的问题还是较低级别的问题,并将其与linux进行比较(不成功的telnet需要大约3ms),我使用了一个节点。连接端口的js脚本12345,没有进程监听的端口80,正在监听的端口Windows的结果:Connectingto127.0.0.1:12345#3:errorelapsed:1000ms,Error:connectECONNREFUSED#2:errorelapsed:1002ms,Error:connectECONNREFUSED#4:errorelapsed:1003ms,Error:c

java - 为什么我的 Socket 没有在服务器端关闭?

我正在尝试制作一个可以同时在多个终端之间共享的简单文本编辑器。我有一个等待新用户的服务器,当用户进入共享编辑器时,它就开始等待输入字符。publicclassServer{publicstaticfinalintPORT=8080;publicstaticvoidmain(String[]args)throwsIOException{ServerSocketss=newServerSocket(PORT);while(true){Socketsocket=ss.accept();System.out.println("Anewuserenteredthesever");newThrea

linux - TCP/IP : set socket option for keep-alive after connection has been established

是否可以在一些假设的应用程序级握手后设置套接字的SO_KEEPALIVE选项(TCP保持事件间隔和TCP保持事件值)?还是必须在调用accept之前设置?我关心Linux、Windows和eCoslwIP堆栈之间的互操作性,因此非常感谢有关这两个平台的信息。 最佳答案 正如EJP所说,你可以随时设置。manpage说:setsockopt()manipulateoptionsforthesocketreferredtobythefiledescriptorsockfd.你可以像这样设置或取消设置SO_KEEPALIVEintiOpt

Java/安卓 : Socket closed when offloading work to a thread pool

我在Android上编写线程池TCP服务器时遇到了一个非常令人费解的错误。基本上,我的代码结构如下:标准服务器循环(在其自身线程内的循环中阻止调用socket.accept()),在传入连接时调用处理程序:socket=mServerSocket.accept();myHandler.onIncomingConnection(socket);处理程序将传入连接的所有进一步处理卸载到线程池:publicclassX{privatefinalExecutorServicereceiveThreadPool=Executors.newSingleThreadExecutor();[...]p

c++ - boost::asio::ip::tcp::socket 不读取任何内容

这实际上是我在套接字编程方面的第一个程序,而不是复制粘贴教程代码并从中获得乐趣。无论如何它不起作用。我想我已经仔细阅读了文档,但也许还不够。我怀疑我在read_message()中使用了socket::read_some(),因为我有问题的程序在读取部分停止了。我认为我使用它的方式应该没问题,因为socket::read_some()的文档指出“函数调用将阻塞,直到一个或多个字节的数据被成功读取,或者直到一个发生错误。”下面是我的代码。任何帮助表示赞赏。voidread_message(std::string&message,boost::asio::ip::tcp::socket&s

python - python socket.sendall 成功返回是什么意思?

在我的代码中我写了这样的东西:try:s.sendall(data)exceptExceptionase:printe现在,我可以假设如果sendall没有抛出任何异常,套接字的另一端(它的内核)确实收到了“数据”吗?如果不是,那意味着我需要发送一个对我来说似乎不合理的应用程序确认。如果我可以假设另一方的内核确实收到了“数据”,那么这意味着“sendall”仅在它看到我放入“数据”的所有字节的tcpack时返回,但我看不到任何文档为此,相反,通过搜索网络,我觉得我不能假设收到了ack。 最佳答案 canIassumethatifth

http - 使用 HTTP keep-alive 和 websockets (socket.io) 时的 TCP 连接数

我已经使用数据库驱动的session管理实现了一个成熟的节点http服务器,并且能够在顶部使用socket.io来实现文件上传进度条和聊天应用程序。我还使用了node-http-proxy并且能够代理w​​ebsockets。在这种背景下,我有以下问题,我认为我需要知道这些问题才能成为一名有效的socket.io开发人员。我没有被困在任何特定的代码中,但下面要求的信息是成为有效的套接字开发人员所必须的,但似乎没有任何解释。我的理解:一个。HTTP使用TCP套接字作为底层传输。在旧的HTTP实现中,每个请求使用一个套接字。在较新的版本中,“Keep-alive”header用于使套接字保

api - 如何让docker在centos下用systemd监听unix和TCP socket

我已经使用systemd在CentOS下安装了docker(v17.06.2-ce)。Docker工作正常并监听unix套接字。现在我想让docker监听Unix套接字和TCP套接字2375。因为这是一个内部开发机器,安全性没有问题。我浏览了互联网,找到了几篇文章,但仍然有一些问题。我的理解是我有systemd文件(docker.service),它在没有任何参数的情况下启动dockerd。ExecStart=/usr/bin/dockerd然后这里有文件demon.json我可以列出我要听的内容。我的问题是在这里输入什么。可能是。{"hosts":["unix:///var/run/