我有一个使用Linux系统调用的基本TCP服务器(setsockopt,bind,listen,accept和recv)。 recv命令返回的请求消息不过是完整的URL。 有什么方法可以从recv系统调用中的接收数据中检索http标头? 基本上,我想从http请求中提取用户代理。 我的代码是cpp cpde-谢谢Rahul

===============>>#1 票数:0

HTTP本身不包含完整的URL。 您需要自己通过Host标头和请求URI将其放在一起。

  ask by Rahul translate from so

未解决问题?本站智能推荐:

3回复

阻止不接收任何数据的recv()(TCP)

我试图使用C系统调用编写一个简单的服务器,该服务器从未知客户端获取未知字节流,并根据客户端输入执行特定操作。 例如,客户端将发送命令“ 2 2相乘”,服务器将数字相乘并返回结果。 为了避免在写入客户端之前服务器读取错误,我使用了阻塞的recv()调用来等待使用MSG_PEEK的任何数据。
1回复

python tcp socket-为什么sendall消息仅在close()之后发送

我正在尝试编写perl TCP服务器/ python TCP客户端,我现在有这样的代码: 而且我注意到,我的TCP服务器(用perl编写)不是在sendall(message)之后而是在close()之后获取消息。 服务器像回声服务器一样工作,并在收到消息后将数据发送到客户端。 这会
5回复

客户端计算机的IP更改时,TCP recv行为是什么?

客户端计算机IP地址的更改或任何其他修改是否会影响客户端计算机中的recv()调用? 在服务器端未进行任何更改。 在客户端,TCP recv()将超时[120秒]。 这是为什么? 如果在创建套接字后客户端的IP中断,则recv()超时? 操作系统:客户端和服务器均为so
4回复

处理多个recv()调用和所有可能的场景

我是C的新手并编写TCP服务器,并且想知道如何从发送服务器将响应的命令的客户端处理recv()。 为了这个问题,我们只说头是第1个字节,命令标识符是第2个字节,有效载荷长度是第3个字节,然后是有效载荷(如果有的话)。 recv()这些数据的最佳方法是什么? 我想调用recv()来读入缓
5回复

TCP消息帧+ recv()[linux]:好的约定?

我正在尝试在Linux上创建一个p2p应用程序,我想尽可能高效地运行它。 我遇到的问题是管理数据包。 我们知道,recv()缓冲区中可能随时有多个数据包,因此需要使用某种消息成帧系统来确保多个数据包不被视为一个大数据包。 所以目前我的数据包结构是: 这需要两次调用recv(
1回复

带有MSG_TRUNC的Linux TCP recv()-写入缓冲区吗?

在尝试在TCP套接字的recv中使用标志MSG_TRUNC时,我刚刚遇到了令人惊讶的缓冲区溢出。 它似乎仅在gcc(不是clang)中发生,并且仅在通过优化进行编译时发生。 根据此链接: http : //man7.org/linux/man-pages/man7/tcp.7.htm
1回复

Linux:Recv随机返回零

我用epoll为Linux编写了一个简单的TCP网络库。 在我的测试之一中,我想测试库的吞吐量。 我发送了500万字节的2000000 msgs。 收到800000或更多的消息后,绑定的套接字在recv上随机返回零。 其他时间,接收所有消息。 什么会导致这种情况发生?
1回复

当recv buf已经有数据时,tcp socket recv将返回“资源暂时不可用”

我使用epoll监视所有客户端事件来实现TCP套接字通信,只有一个线程在for循环中处理所有客户端。 每个套接字都是非阻塞的。 现在我只是遇到一个问题,当客户端发送的数据超过MTU时,意味着有多个片段数据包,服务器始终无法完全读取所有数据。 像下面一样,我先读头,从头获得pdu len
2回复

如何跟踪Linux内核中的写入系统调用?

我正在尝试这样做:我正在通过iperf-一种开源工具将数据包从一台计算机发送到另一台计算机,并且我想跟踪写入系统或发送呼叫。 如果有人可以引导您通过Ftrace框架来跟踪系统调用,那么通过其他任何跟踪工具,该系统调用将非常有用,请帮助我做到这一点。
1回复

Go软件包syscall conn.Read()是非阻塞的,并导致较高的CPU使用率

奇怪的是,在我的情况下, Read()是非阻塞的,并导致较高的CPU使用率。 我的代码: 在功能main : 功能TCPHandler : 问题是conn.Read()是非阻塞的,因此每次进入LOG("Nothing read")然后继续执行时,这会导致CPU使用率很