草庐IT

tcp-accept

全部标签

java - 在 Java 中处理多个 TCP 连接(服务器端)

我正在编写一个消息传递程序,我遇到了一个问题,我无法理解如何将套接字传递给新线程以通过TCP处理出站消息。我目前正在将UDP数据包用于从客户端到服务器的消息,它是UDP,不需要太多处理,因为它只是在反序列化对象并处理它们之前监听传入的数据包根据需要在单独的线程中。我现在的问题是,我正在为从服务器到连接的各种客户端的反向流量设置客户端启动的TCP套接字。我做了一些研究,我已经明白每个客户端都应该有自己的线程来处理传出消息,以及另一个线程来简单地接受传入连接。我不确定如何真正实现这一目标,并且我已经对该主题进行了一些研究。我找到了这个:http://docs.oracle.com/java

.net - 如何设计不同设计模式的tcp通信?

我实际上正在计划一个小型的tcp客户端/服务器。在架构中,我想尽可能多地实现设计模式。目前我有这样的架构:客户端向服务器发送一个数据包。在这个数据包中,有一个header,其中包含用户名、密码、数据包类型、标识符和其他类似信息。它们也是一个主体(它只是一个字节数组)如果服务器从客户端检索数据包,它将被解析。对于每种包类型,只存在一个解析器。每个解析器处理不同的正文/内容。例如,客户端向服务器发送一个数据包类型注册的数据包。服务器选择“注册解析器”并处理正文中的信息。例如,这里有用户名、密码、电子邮件和其他一些用于注册的字符串……每个数据包都可以有一个响应。例如,如果客户端发送一个注册数

c - 如何从 TCP header 打印序列号和确认号

我正在做一个项目,需要从TCPheader中打印出TCP序列号和TCP确认号。以下是我所做的ip=(structiphdr*)buffer;//bufferisusedtostorethepacketthatIreceivedtcp=(structtcphdr*)(buffer+(4*ip->ihl));printf("TCPsequencenumber=%d\n",ntohl(tcp->seq));printf("TCPacknumber=%d\n",ntohl(tcp->ack_seq));为了确保我正确收到数据包,我还打印了其他信息,例如ip->saddr,tcp->source

java - 如何在 Java 中更改 source-ip(tcp)

是否可以在Java中更改TCPheader?如果可以的话,有没有【ChangeHeader】的方法? 最佳答案 从您的问题标题(“如何在Java中更改源ip”)回答更狭窄的问题,您可以在连接之前将您的套接字绑定(bind)到本地IP地址和/或端口它到目的地。您绑定(bind)的IP地址必须是您的机器拥有的IP地址(否则,数据包如何返回您的机器?)。您还可以使用任何未使用的、非保留的端口号来连接。Socketsocket=newSocket();socket.bind(newInetSocketAddress(9999));//or:

tcp - 192,168,1,2,7,138如何转换为IP地址192.168.1.2上的1930端口

我如何从FTP抛出的数字中推断出端口和IP?例如192,168,1,2,7,138在IP地址192.168.1.2上转换为1930?背后的逻辑是什么? 最佳答案 前四个数字表示客户端IP,后两个数字表示客户端端口号。这是十六进制到十进制的转换。16^2*7+138=1930第一个数字代表十六进制数(端口号)的第3位和第4位,第二个数字代表十六进制数的第1位和第2位。所以我们有7=07inhex和138=8Ainhex总的来说078Ainhexwhichis1930或者您可以跳过它并仅将第一个数字转换为dec,因为该“移位”,它用于第

networking - 处理实时游戏中的网络丢包 - TCP 和 UDP

为我的第一个网络游戏阅读了很多这方面的资料,我了解了TCP与UDP的保证交付与交付时间的核心区别。我也读过截然相反的观点,实时游戏应该使用UDP还是TCP!;)没有人很好地介绍如何处理丢包问题。TCP:阅读一篇使用TCP获得FPS的文章,该文章建议仅使用TCP。使用TCP客户端输入的权威服务器将如何处理丢包和突然的史诗般的滞后峰值?游戏是否只​​是暂停片刻然后从停止的地方继续?TCP数据包丢失是否非常罕见,以至于这并不是什么大问题,TCP上的FPS实际上运行良好?UDP:另一篇文章建议只使用UDP。显然,像“throw手榴弹”这样的一次性UDP事件不够可靠,因为它们有时不会触发。您是否

c - 原始套接字中的 TCP 数据包 - Centos 6.6

我尝试执行TCP流量并在另一端使用RAW套接字捕获该数据包。我将窗口大小设置为50000字节。同时以最大速率发送TCP流量。我在wireshark中观察到每12个数据包(1512字节数据包)发送一个ACK​​。在原始套接字中接收数据包时。我预计会有12个数据包,就像我进入wireshark一样(我相信wireshark也使用原始套接字)。但是我很惊讶地看到一个数据包有发送数据流。据我所知,RAW套接字应该以有线传输的数据包形式接收,而不是TCP流。我在下面使用原始套接字在端口接收数据包rawsd=socket(PF_PACKET,SOCK_RAW,ETH_P_ALL);这是否与tcp_

networking - 为什么 TCP/IP header 的大小必须是 32 位的倍数?

我已经搜索过,但大多数书籍只是说有填充可以使header成为32位的倍数。为什么必须是32位的倍数? 最佳答案 原因是memoryalignment.我将从一个类比开始-想象一个有1000个文件抽屉的巨大文件室。这个房间由100个单独的橱柜组成,每个橱柜有10个抽屉。每个抽屉可以放一张纸,而您的秘书(负责处理抽屉中的数据)一次可以处理10张数据。尽管处理的数据量相同,但告诉秘书“去处理机柜#83”比“去处理机柜12中的抽屉5-10和机柜13中的抽屉1-5”更简单、更有效.CPU大致相同。CPU(秘书)通常不会一次处理一个字节(抽屉)

android - 通过 tcp 发送 Parcelable 对象

我正在开发一个包含一些服务的应用程序,这些服务使用AIDL进行通信。为了与他们共享数据,我使用了一个Parcelable对象。现在,我遇到了一个问题,我必须将parcelable对象中包含的信息转发到远程tcp服务器。既然parcelable不等同于java中的serializable对象,那么可以通过tcp将它发送到远程服务器吗?由于Parcelable对象具有创建者,因此可以在不获取ClassNotFoundException的情况下编码发送结果byte[]的对象并在远程服务器上解码信息?最好的问候, 最佳答案 很难确定问题出在

java - 在java中获取远程tcp连接的ip地址?

我用过著名的优秀KnockKnockservertutorial作为学习java网络的一种方式。我试图使用socket.getInetAddress()找出已连接客户端的ip地址,但它总是返回我的路由器的ip,192.168.1.254,大概是因为连接在那里弹跳。有什么方法可以获取连接到tcp套接字的远程客户端的正确ip? 最佳答案 试试这个:ServerSocketsSock;SocketcSock;sSock=newServerSocket(port_number);cSock=sSock.accept();System.out