草庐IT

tcp_client

全部标签

tcp - 如何确定原始数据包中 IP header 和 TCP header 的起始字节

我想用libpcap抓包但由于以太网header或802.11header的长度可能会有所不同并且IPheader的长度也可能会有所不同,如何确定IPheader和TCPheader的起始字节(指针)另外,如何区分一个包是纯IP包、TCP包还是UDP包?是否有任何API或方法可以做到这一点?谢谢! 最佳答案 当您使用libpcap时,您可以通过直接查看pcap文件头(用于离线捕获)pcap_file_header.linktype或(用于实时和离线)来确定链路层头的大小捕获)来自对pcap_datalink()的调用。大多数情况下,

Java TCP 监听器循环

我已经在谷歌上搜索了几个小时,因为我知道这是我面临的一个非常简单的问题,但我找不到解决我的问题的简单方法。我正在编写一个非常基本的IRC客户端,只是为了重新学习Java,因为我已经有很长时间没有编写任何代码了,而且我有一个我想稍后做的项目。虽然我卡在套接字监听器上,但如果需要我可以提供代码,但我真正需要的只是一个关于如何创建一个循环来监听和已经创建的套接字并在它完成后立即执行操作的简单教程接收任何数据。这个循环应该一直持续到套接字关闭(用户与服务器断开连接)我当前代码的问题是监听器似乎挂起整个程序,直到它接收到数据。我什至在一个单独的线程中放置了一个while循环,这样它可以挂起该线程

tcp - 哪些 header 字段将数据包描述为唯一的?

我正在处理可能包含UDP或TCP有效负载的IP数据包。如果我们只考虑IP级别和传输级别的header,一个数据包的一组代表性字段可能是什么?也就是说,从整体上看,哪些报头字段会使该数据包独一无二?(当然,在没有重复的情况下)如果我们不考虑IP和TCP或UDPchksum字段,其他字段的子集是否足够? 最佳答案 IP和UDP没有“唯一性”的概念。TCP确实如此,由序列号字段暗示。没有足够的字段来明确数据包在传输过程中何时被复制或丢弃。根据评论更新:如果您同时编写发送和接收代码,您可以包含一个IP选项来唯一标识数据包。我建议使用SATN

java - tcp多线程服务器java

我试图创建多线程服务器,它将接收来自不同客户端的消息,然后发回消息。我正在使用执行服务器来管理的创建线程。但是我不确定我做的是否正确,我以前没有使用过执行者服务吗?我对这条线有疑问executor.execute(newHandler(client));处理程序是抽象的,无法初始化?如何解决?执行服务会解决绑定(bind)端口的问题吗?它会使smth像客户的请求队列一样吗?提前谢谢packageserverx;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;importjava.ut

c - 存在状态为 `TIME_WAIT` 的 tcp 连接时无法建立 tcp 连接

我写了一个简单的tcp客户端和服务器并运行它们我注意到当我使用ctrl+c结束程序时tcp连接被关闭但是tcp连接状态就像TIME_WAIT然后如果我再次运行tcp客户端和服务器无法再次建立tcp连接RST数据包总是由tcp服务器发送我必须等待一段时间才能建立下一个tcp连接这是什么原因,如何处理这个问题?此外,我注意到在一台主机上,当tcp连接处于FIN_WAIT_2状态时即使它没有收到FIN,tcp连接也会在一段时间后关闭,为什么?谢谢 最佳答案 这个问题的解决方案是设置SO_REUSEADDR套接字选项。这告诉堆栈允许绑定(b

tcp - 为什么 HAProxy 建议将超时设置为 3 秒的倍数?

来自HAProxydocumentationonclienttimeouts:ItisagoodpracticetocoveroneorseveralTCPpacketlossesbyspecifyingtimeoutsthatareslightlyabovemultiplesof3seconds(eg:4or5seconds).这似乎是一个任意数字。3秒数字的意义是什么? 最佳答案 这似乎是默认的TCP重传超时。来自thisMicrosoftKBarticle:TCPstartsare-transmissiontimerwhene

delphi - 使用 tcp 是否保证它会被发送/接收?

我一直在为一个friend和我做一个简单的winsock文件传输来共享文件,而不需要每次都上传到mediafire。但是我遇到的一个问题是/是(取决于你如何看待我当前的解决方案)我无法在不损坏文件的情况下发送文件。目前我发送/接收的解决方案是:procedureSenBuf(varbuf;count:dword);vara,c:pointer;cousend,tmp,left:dword;begina:=@buf;cousend:=0;left:=count;repeatc:=ptr(dword(a)+cousend);tmp:=Send(hSocket,c^,left,0);inc(

c# - 使用 TCP 发送和接收纯文本

我想通过TCP连接发送这个字符串:TR220,2,A10000XX,3545.1743,5119.5794,001.0,1503,52:56:16,2012/09/13,0,0,0,0,0,V,000,0,0,0,,+989123456789,*我正在使用此代码发送文本:stringuri="http://localhost:1414";Stringrecord="TR220,2,A10000XX,3545.1743,5119.5794,001.0,1503,52:56:16,2012/09/13,0,0,0,0,0,V,000,0,0,0,,+989123456789,*";Http

android - 在android和pc之间通过tcp发送文件

我想在2个android设备之间建立通信。使用服务器到客户端(通过服务器)的方法。所以通常我在考虑将文件发送到服务器(pc),然后在服务器上获取文件并发送到其他设备。所以我在做第二部分,试图将文件从pc发送到android。但由于某种原因,客户端无法连接到服务器。这是我的代码;publicclassTCPServerextendsThread{publicstaticfinalintSERVERPORT=8901;publicstaticvoidmain(){try{System.out.println("S:Connecting...");ServerSocketserverSock

c# - 为什么这个多线程多连接的TCP服务器只接受一个连接?

这一切背后的故事我正在尝试编写一个开源RPG库存服务器,一次可用于1个以上的RPG,稍后将为其制作游戏。我的第一个版本不支持很多安全或加密。但我想有一个坚实的开始。问题它确实接受一个连接,dropindropout。但是我的线程实现似乎只接受一个连接。有人可以给我一个如何正确执行此操作的指南吗?为了方便您阅读,我已经评论了我将提供的代码。设置我使用启用了SP1的visualstudio2010。我只在我的家庭网络中尝试过,因此不需要IP转发。它分别接受两台PC。非常感谢那些提供帮助的人,如果您提供帮助并希望在最终结果中得到认可,请告诉我。如果有人有一般性意见,我很乐意听到他们;)编辑: