草庐IT

socket_handle

全部标签

sockets - Channel.isActive() 如何在 netty 中工作?

我正在使用netty4.x,我终于找到它调用publicbooleanisActive(){SocketChannelch=javaChannel();returnch.isOpen()&&ch.isConnected();}我可以用它来检查客户端和服务器之间的连接是否可读/可写吗?如果答案是肯定的,那么我相信isActiveusesth。像心跳一样检查客户端的状态。但是当我抓取tcp数据包时,我找不到任何数据包通过wireshark过滤器tcp.port==12093(这是我的服务器端口)作为心跳工作。任何建议都是有帮助的。 最佳答案

sockets - 使用 80、443 之类的 TCP 的套接字是否令人难过?

假设套接字是某个IP上端口80上的TCP欢迎套接字。它在听。这意味着,TCP套接字已创建,但TCP套接字还必须具有目标IP和端口。当有人尝试连接并且欢迎套接字接受连接时,将返回一个新的TCP套接字,它具有不同的源端口号(不是80)并用于发送数据。我说的对吗?众所周知的套接字是否因为它们从不发送实际信息而“令人难过”?如果没有目标IP和端口,如何欢迎套接字TCP?提前感谢您的精彩回答 最佳答案 套接字由五部分信息标识:客户端地址和端口、服务器地址和端口以及协议(protocol)。如果你在监听端口80的套接字上接受一个连接,你将得到一

python - python 中的 socket 方法 recv(bufsize) 和 c 中的 recv(char *buf) 中的真正缓冲区是什么?

在python中,方法是:socket.recv(bufsize[,flags])在C中,方法是:intrecv(_In_SOCKETs,_Out_char*buf,_In_intlen,_In_intflags)这两个方法这里的buffer是什么?如果我创建一个TCP套接字,我认为它是receivewindowsize或receivebuffer。但是当我捕获测试tcp消息时,我发现我错了。我猜缓冲区是套接字缓冲区。当tcp消息到达并首先进入tcp的缓冲区(在传输层中)时。然后tcp的接收窗口开始滑动接收数据,如果消息正确,则将它们传递到socketbuffer(上面两种方法中的真实

sockets - 发现 TCP/IP 套接字?

我为此使用了Objective-C和Java,但我认为这个问题与语言无关。我有一个iOS客户端,它通过TCP/IP与Java服务器通信。现在我需要至少告诉其中一方另一方的IP地址。有没有一种标准方法可以让我“发现”IP地址(从一侧或另一侧)?此外,切换到UDP将如何影响答案? 最佳答案 有许多协议(protocol)可用于发现网络上的其他设备/服务器。iOS领域中最常用的一种是“Bonjour”。查看Apple的示例应用程序。 关于sockets-发现TCP/IP套接字?,我们在Stac

unix 和 windows 上的 c++ socket udp 和 tcp

你能为udp套接字(多播)和tcp推荐一个好的c++库(或实现)吗在unix/windows系统上工作?发送 最佳答案 Boost.Asio描述可移植网络和其他低级I/O,包括套接字、计时器、主机名解析、套接字iostream、串行端口、文件描述符和WindowsHANDLE。 关于unix和windows上的c++socketudp和tcp,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/quest

sockets - TCP 套接字中的 IP 地址

我有一个根节点(服务器)通过TCP套接字连接到许多其他节点(客户端)。我想从服务器向客户端发送一些数据,但每个节点的数据都不同,并且取决于该节点的ip地址。因此我应该有连接到服务器的每个节点的IP地址。我怎样才能得到这些信息? 最佳答案 当您调用accept(2)时您可以选择检索客户端的地址。intaccept(intsocket,structsockaddr*restrictaddress,socklen_t*restrictaddress_len);您需要存储这些地址,然后发送(2)给每个您需要发送的地址。所以工作流程应该是这样

sockets - 如何将套接字中的数据读取到现有缓冲区的偏移量中?

根据我对TCP的理解,如果我将X个字节发送到一个套接字,它几乎可以保证它会到达那里,尽管有效负载可能会split并分成两个单独的部分到达(所以如果我等待一个25字节的数据包,我可能会得到20个字节,然后在下一次读取时再得到5个字节)。我从未见过这种情况发生,但我希望在发生这种情况时得到保护。在过去,我通常设计我的套接字读取来解决这个问题——将传入的字节读入缓冲区,然后不断地检查缓冲区的大小。如果整个数据包有足够的数据,则处理该数据包,从缓冲区前面移除字节,然后继续。我现在正尝试在Rust中编写一个类似的系统,使用mio作为TCP套接字。我的缓冲区只是一个数组:[u8;MAX_BUFFE

sockets - 接收 tcp/ip 套接字的缓冲区大小

接收操作中预期的最大数据大小是多少?必须发送的数据非常大,但我猜在某些时候会出现数据包碎片? 最佳答案 您始终可以限制recv()将填充(参数)的缓冲区的大小您的应用程序设计不应对recv()愿意在一次调用中提供的字节数敏感。与MTU关系不大。在某些TCP堆栈设计中,对recv()的一次调用不会返回多于一个底层数据包协议(protocol)的数据报。在其他情况下,它可能与套接字的接收缓冲区一样大。 关于sockets-接收tcp/ip套接字的缓冲区大小,我们在StackOverflow上

java - 断线后恢复文件上传/下载(Socket编程)

我正在编写一个程序,使用套接字编程在客户端和服务器之间下载/上传文件。我到目前为止编写的代码在我可以成功传输文件的意义上有效。但是,如果在下载/上传过程中由于网络/客户端/服务器问题导致连接失败。我需要从原始点恢复下载/上传(不希望重新发送最初发送的数据)。我不知道该怎么做。我正在将文件读入字节数组并通过网络发送。我最初的想法是每次我下载..我应该检查文件是否已经存在并将数据读入字节数组->将数据发送到服务器进行比较然后从服务器文件返回剩余数据比较两个字节数组。但这似乎效率低下并且消除了恢复下载的意义(因为我再次发送数据)。注意:文件名是唯一标识符。如果有人可以就我应该如何实现文件恢复

sockets - 节省带宽 GPRS 和 TCP

您好,出于实验原因,我为我的旧Windows手机制作了一个程序,每5秒发送一次GPS数据、温度等,以创建一个车队管理系统。我注意到在一小时内消耗了350kb,尽管我只发送了20kb的数据...由于我对网络知识不深,一个tcp连接的字节数是多少?也许我应该让套接字保持事件状态,因为我每5秒关闭并打开它一次。这样会节省字节数吗?MTU在这里也很重要吗?还有其他减少开销的想法吗?谢谢 最佳答案 让我们在这里做一些数学运算。每5秒是每小时720个连接加上数据。20K/720是每个连接的大约28字节有效载荷(您的GPS数据)。IPandTCP