一道编程题《如何发送TCP数据包》
#include "stdafx.h" #include #include #include #pragma comment(lib,"wsock32.lib") //引进sock32库using namespace std;int _tmain(int argc, _TCHAR* argv[]) //主函数入口{WORD wVersion; //Socket版本WSADATA wsaData;int err;wVersion = MAKEWORD(2,2);//生成版本err = WSAStartup(wVersion,&wsaData); //初始化socketif(err != 0)return 0;SOCKET listenSocket = socket(AF_INET,SOCK_STREAM,0);//创建一个监听的socketsockaddr_in addr; //SOCKET结构int nSockErr;addr.sin_family = AF_INET;//使用IP协议addr.sin_addr.s_addr = htonl(INADDR_ANY); //本机IP地址addr.sin_port = htons(5001); //使用端口5001if(bind(listenSocket,(struct sockaddr *)&addr,sizeof(addr)) == SOCKET_ERROR)nSockErr = WSAGetLastError(); //绑定if(listen(listenSocket,5) == SOCKET_ERROR)//监听nSockErr = WSAGetLastError();cout << "正在监听。。。。。。" << endl;SOCKET connectSocket = accept(listenSocket,NULL,NULL);//接收客户端连接,阻塞,直到有连接到来if(connectSocket == INVALID_SOCKET){cout << "接受客户端连接出错" << connectSocket << endl;nSockErr = WSAGetLastError();}else{char buf[4096];cout << "一个客户端已经连接上" << endl;//提示有客户端连接成功while(1){memset(buf,0,sizeof(char) * 1024);int n = recv(connectSocket,buf,1024,0); //从客户端接收数据,阻塞if(n > 0)cout << "接收数据:" << buf << endl << "发送数据:";else{cout << "客户端已经断开连接。。。。。" << endl;break;}gets(buf);if(strlen(buf)<2)break;send(connectSocket,buf,strlen(buf),MSG_DONTROUTE);//向客户端发送数据,阻塞}}closesocket(listenSocket);//会话结束,关闭套接字WSACleanup();return 0;} 这是我做的一个服务器端代码,你再自己写个客户端的就可以了。
你要攻击别人的话,最好把源IP和目标IP设为你要攻击的对象,这样会使他的系统无法处理这种情况而崩溃
楼主有客户端的吗?求共享啊

Java怎样实现发送tcp reset 包切断连接?
JDK 1.6 可以发送 类似这样try {socket.sendUrgentData(0xff);//这个是判断连接是否还活动} catch (IOException e) {e.printStackTrace();return false; }

面向连接、无连接、TCP、UDP四个概念之间有什么关系
TCP是面向连接的 UDP是面向无连接的就是这种关系了TCP(Transmission Control Protocol,传输控制协议)UDP(User Datagram Protocol,用户数据包协议)当IP包通过路由将数据传输到目的地时,会根据TCP或UDP包头中的源端口和目的端口信息,请求和获取不同的应用。也就是说,不管TCP还是UDP,都含有网络服务必须的源端口和目的端口信息,以建立和实现网络传输服务。这时,你的疑问就来了:既然都用于传输,为何要搞两个不同的协议呢?这就需要从网络中不同服务的需求来谈起。在网络中,有些服务,如HTTP、FTP等,对数据的可靠性要求较高,在使用这些服务时,必须保证数据包能够完整无误的送达;而另外一些服务,如DNS、即时聊天工具等,并不需要这么高的可靠性,高效率和实时性才是它们所关心的。根据这两种服务不同的需求,也就诞生了面向连接的TCP协议,以及面向无连接的UDP协议。这里的连接(Connection)和无连接(Connectionless)是网络传输中常用的术语,它们的关系可以用一个形象地比喻来说明,就是打电话和写信。打电话时,一个人首先必须拨号(发出连接请求),等待对方响应,接听电话(建立了连接)后,才能够相互传递信息。通话完成后,还需要挂断电话(断开连接),才算完成了整个通话过程。写信则不同,你只需填写好收信人的地址信息,然后将信投入邮局,就算完成了任务。此时,邮局会根据收信人的地址信息,将信件送达指定目的地。我们可以看到,这两者之间有很大不同。打电话时,通话双方必须建立一个连接,才能够传递信息。连接也保证了信息传递的可靠性,因此,面向连接的协议必然是可靠的。无连接就没有这么多讲究,它不管对方是否有响应,是否有回馈,只管将信息发送出去。就像信件一旦进了邮箱,在它到达目的地之前,你没法追踪这封信的下落;接收者即使收到了信件,也不会通知你信件何时到达。在整个通讯过程中,没有任何保障。因此我们常说,面向无连接的协议也是不可靠的。当然,邮局会尽力将右键送到目的地,99%的情况信件会安全到达,但在少数情况下也有例外。 面向连接的协议比面向无连接的协议在可靠性上有着显著的优势,但建立连接前必须等待接收方响应,传输信息过程中必须确认信息是否传到,断开连接时需要发出响应信号等,无形中加大了面向连接协议的资源开销。具体到TCP和UDP协议来说,除了源端口和目的端口,TCP还包括序号、确认信号、数据偏移、控制标志(通常说的URG、ACK、PSH、RST、SYN、FIN)、窗口、校验和、紧急指针、选项等信息,UDP则只包含长度和校验和信息。UDP数据报比TCP小许多,这意味着更小的负载和更有效的使用带宽。许多即时聊天软件采用UDP协议,与此有莫大的关系。

C# Tcp ip 不需要发送数据包判断连接状态
对端程序挂掉的话(但是系统没有),会有异常抛出,处理就可以了 如果是线路异常或对端连系统都挂掉,参考http://www.csharpwin.com/csharpspace/12716r7442.shtml
断开的时候回传状态啊
1)在理想情况下,tcp server 与 tcp client双方都能“感知”到之间的连接断开。之所以能感知到,全依赖icmp协议的功劳。 2)在实际情况下,tcp server 与 tcp client利用icmp来维护长时间连接的可靠性的做法并不现实。因为,当tcp server 与 tcp client之间跨越多个网络时,很可能其中的某个网络基于安全型关闭了icmp,这往往回答导致tcp server 与 tcp client之间“虚假连接”——即实际连接早就断开而程序却以为连接仍然存在。 3)所以,要想维护一个长时间tcp连接,最可靠和可行的方法是通过发送并检验用户数据来确定连接是否断开。
你应该会一直有Reveive吧,不管是同步还是异步。客户端断开时,这个函数会立即返回。

能接受UDP,不能接受TCP包??
UDP面向的是无连接,仅仅发送过去,不管是否接受到,并对接收无响应,而TCP面向的是连接,先保证连接状态,发送,并确保接收到,响应接收。可能此系统开发时就是基于UDP(非连接状态),
我的也不行,share下命令,求助:Server端:iperf.exe -s -f m -i 1 -p 5130 -P 0Clint端:iperf.exe -c 172.170.254.130 -t 3600 -B 10.69.70.245 -f m -i 1 -p 5130 -P 20
服务器或客户端的防火墙没有关闭,关闭后再试应该就可以了

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/46676.html。