tcp相关内容

boost :: asio干净地断开连接

有时boost :: asio似乎在我想要它之前断开连接,即在服务器正确处理断开连接之前。我不知道如何这是可能的,因为客户端似乎认为其完全发送的消息,但当服务器发出错误,甚至没有读取消息头...在测试期间,这只发生可能1 5次, 错误:“现有连接被远程主机强制关闭” 客户端断开连接: void disconnect() { boost :: system :: error_ ..
发布时间:2016-10-22 18:09:59 C/C++开发

将C ++ TCP / IP应用程序从IPv4转换为IPv6。难?值得麻烦?

多年来,我使用WinSock(路由器,Web /邮件/ FTP服务器等等...)为Windows开发了一小部分C ++服务器/客户端应用程序。 我开始考虑越来越多地创建这些应用程序的IPv6版本(当然也保留原来的IPv4版本)。 问题: 我可能遇到什么陷阱? 移植/转换是否困难? 转换是否值得? 对于参考(或乐趣),您可以查看 IPv4代码的峰值, a>在我的应用程序的 ..
发布时间:2016-10-22 17:16:56 C/C++开发

在Boost ASIO中如何设置源IP地址以模拟另一个服务器的IP地址?

我有一个基于Boost ASIO的C ++服务器程序,我想能够将TCP使用的源IP地址设置为另一个服务器的源IP地址。我知道一个人可以读取源和目的IP地址,但是可以设置它们吗? 假设如果我在C ++代码中设置“错误”源IP地址会有一些与网络堆栈的交互。即使C ++代码是正确的,网络堆栈是否会重新设置源IP地址的出口?是正确的方法来做这个写C ++ ASIO代码选择一个特定的虚拟网络接口?一个 ..
发布时间:2016-10-21 00:08:10 C/C++开发

如何提取消息的长度信息,并从TCP字节流中只提取那么多消息?

我想在c ++中通过Socket发送消息。我已经阅读了很多关于堆栈溢出相关的问题,但仍然不能弄清楚它是如何工作的。让我们说我将以下字符(M,a,r,t,i,n)发送到本地主机服务器,人们建议你可以使用4个字节作为长度(即32位,以便它可以处理一个消息到4GB长度)。 我在客户端做了同样的事情,但仍然不知道我怎么能在服务器端找出这个东西,无论我想只接收开始3个字节(M, a,r)或我的数据的最 ..
发布时间:2016-10-20 22:25:02 C/C++开发

将端口号绑定到TCP套接字(outgoin)以发送数据包

我知道将端口号绑定到 TCP套接字并不容易,您可以使用发送数据(因为系统通常将随机端口绑定到套接字)。 但我阅读了一篇文章,通过使用一些低级网络方法,您可以将端口号绑定到TCP套接字,发送数据? 有没有人知道如何做? $ b code> s = socket(AF_INET,SOCK_STREAM,0); / * ... * / memset(& client_addr, ..
发布时间:2016-10-20 22:11:42 C/C++开发

多客户端/服务器tcp应用程序使用qt

我正在开发一个需要在“主”应用程序和多个“服务对象”之间进行tcp通信的项目。 (项目是在c + +,我也使用qt) “servants”将做一些处理,并将结果发送到“master”。 到目前为止,它是一个简单的多客户端 - 服务器应用程序。 事情是随机的,主人将要求一些额外的信息,甚至发送他们的信息来改变他们处理的方式。 如果我的项目在财富客户端/服务器的例子,我将能够发送 ..
发布时间:2016-10-20 08:59:08 C/C++开发

Socket keepalive不工作

我有一个客户端connect()到服务器,并且当空闲时,它在几个小时后超时。 我添加了 setsockopt(socket,SOL_SOCKET,SO_KEEPALIVE ...)与1秒 但它没有改变。 任何线索为什么keepalive不工作? 如果我使用SOL_TCP而不是SOL_SOCKET,它会有所不同吗? 这是在Linux上。 解决方案 int val = 1; ..
发布时间:2016-10-17 09:47:03 服务器开发

如何检测网络电缆已在TCP连接中拔出?

我有一个C ++网络应用程序接受来自客户端的TCP连接,然后等待套接字,直到客户端决定发送数据(有时他们不会发送任何东西很长时间,这是OK)。 当客户端崩溃或机器关闭时,它主要检测错误情况,但是当客户端的网络电缆被拔下时,需要很多分钟才能注意到,我希望它注意到这种情况 我无法控制客户端,我不能让他们发送类似“ping”的消息。我的服务器发送一个“ping”数据包到客户端(但他们不会发送 ..
发布时间:2016-10-14 22:10:02 C/C++开发

C ++应用程序:是否可以将接受的TCP连接从一个进程传递到另一个进程?

所以我不知道 - 是否可以通过接受TCP连接(在Windows或Unix如操作系统)从一个进程到另一个进程? 解决方案 在Windows上,使用 WSADuplicateSocket ,将填写在 WSAPROTOCOL_INFO 到其他进程,请使用 在类Unix的操作系统上使用”rel =“nofollow”> WSPSocket 这可以使用 sendmsg()系统调用。 liban ..
发布时间:2016-10-14 21:54:30 C/C++开发

增加TCP窗口大小

我对在应用程序中增加TCP窗口大小有一些疑问。在我的C + +软件应用程序,我们使用TCP / IP阻塞套接字发送大小约1k的数据包从客户端到服务器。最近我遇到了这个概念TCP窗口大小。所以我尝试使用 setsockopt()为 SO_SNDBUF 和 SO_RCVBUF 。 根据我在TCP窗口大小中的理解, 客户端将数据包发送到服务器。在达到此TCP窗口大小时,它将等待确保从服务器接 ..
发布时间:2016-10-14 19:50:05 C/C++开发

TCP同时打开和自连接防止

TCP标准具有“同步打开”功能。 这个功能的暗示,客户端尝试连接到本地端口时,端口来自临时范围,可以偶尔连接到自身(请参阅这里)。 所以客户端认为它连接到服务器,到自身。 我使用的是RHEL 5.3,我的客户端不断尝试连接到本地服务器。 最终客户端连接到自身。 我想防止这种情况。我看到两个可能的解决方案的问题: 不要使用临时端口的服务器端口。 同意临时端口范围并在 ..
发布时间:2016-10-14 12:54:46 C/C++开发

如何使用QTcpSocket实例多次与几秒的间隔?

我必须重复相同的请求与QTcpSocket多次,几秒钟间隔。 简单的任务,但我不能让它只使用一个对象的实例。如何使用相同的QTcpSocket实例再次连接到服务器? 我尝试了reset(),resume(),flush(),open()在许多不同的组合,它什么也没做。我不能第二次connectToHost()... 解决方案 所有你需要做的是 connectToHost(),使用连接, ..
发布时间:2016-10-14 11:34:30 C/C++开发

套接字监听backlog参数,如何确定这个值?

如何确定要用于侦听套接字的backlog参数的内容?是否只是指定一个非常大的数字是一个问题? 解决方案 从 docs : SOMAXCONN的积压值是一个特殊的常量,它指示负责套接字的底层服务提供程序将挂起连接的队列的长度设置为最大合理值。 ..
发布时间:2016-10-14 10:14:59 C/C++开发

TCP Winsock:接受多个连接/客户端

我试着可以乘客户,并发送给每一个。 但是它只能工作一个,一个客户端连接后,服务器只是无用的连接。 while ) { if(Sub = accept(Socket,(sockaddr *)& IncomingAddress,& AddressLen)) { for(int i = 0; i { if(!ClientAddress [i] .sin_family) { Cl ..
发布时间:2016-10-13 11:48:00 C/C++开发

Boost :: Asio:io_service.run()vs poll()或如何在mainloop中集成boost :: asio

我目前正试图使用​​boost :: asio的一些简单的tcp网络的第一次,我已经遇到了一些我不知道如何处理的东西。据我所知io_service.run()方法基本上是一个循环,直到没有更多的事情要做,这意味着它将运行,直到我释放我的小服务器对象。由于我已经有一些mainloop设置,我宁愿更新网络环路手动从那里只是为了简单,我认为io_service.poll()将做我想要的,这样: / p> ..
发布时间:2016-10-11 23:04:32 C/C++开发

检测TCP客户端断开连接

假设我正在运行一个简单的服务器,并且从客户端连接 accept()。 当客户端断开连接时,最好的方式是什么?通常,客户端应该发送关闭命令,但如果手动断开连接或完全失去网络连接怎么办?服务器如何检测或处理这个? 解决方案 select当您使用ioctl *来检查等待被读取的字节数时,它将为零。这是一个标志,套接字已断开。 这是一个伟大的讨论,检查客户端已断开连接的各种方法: St ..
发布时间:2016-10-11 20:32:28 C/C++开发