Tag: 套接字

http请求没有收到全部信息 – C.

连接到服务器后,我需要使用GET命令从中获取所有信息。 由于某种原因,我不允许在我的get命令之后输入\r\n ,因此我发送到服务器的命令类似于GET http://somethingrandom.com HTTP/1.0 。 在将请求发送到地址后,我没有收到与终端正常GET相同的输出: 更具体地说,我收到以下信息: http状态 一些奇怪的数据: 日期 服务器 最后修改 ETag的 接受-范围 内容长度 变化 连接 内容类型 我认为\r\n的作用是完全忽略这些信息。 (在此示例中,额外的标记信息)。 如果它与我的代码有关(最有可能),我会在之后提供它。

Mac OS X:内核扩展获得TCP连接的tcpcb结构如何?

我想提供一个用户空间函数,通过实现内核扩展来获取TCP连接统计信息。 从检查TCP源代码,我看到tcpcp结构包含这样的统计信息。 在给定来自用户空间的套接字句柄的情况下,如何通过内核扩展获取关联的tcpcb结构并将统计信息返回给用户空间?

链接在TCP连接中关闭时发送()函数行为

以下是场景: A B. 我在A和B(基于Linux的机器)上使用非阻塞套接字。 A和B有一个TCP连接,突然连接它们的链接断开(链接可能不是直接链接)。 现在链接断开后,当在A侧调用send()函数向B发送一些数据时,它会成功返回(即它返回要发送的字节数)。 当链接断开时,当我们知道远程端无法接收此数据时,这种行为的原因是什么?

C ++构建和发送DNS数据包

我正在使用C ++编写DNS解析器,构建DNS头文件给我带来了麻烦。 从我能够收集到的,标题可以通过结构构建。 typedef struct { unsigned short id; unsigned char qr :1; // 0 query, 1 response unsigned char opcode :4; // 0 standard query unsigned char aa :1; // authoritive answer unsigned char tc :1; // truncated message unsigned char rd :1; // recursion desired unsigned char ra :1; // recursion available unsigned […]

错误:“传输端点已连接”

我正在尝试用C开发一个小型聊天服务器。 对于简单的聊天服务器, (传输端点)===(套接字)? 我是否必须为每个客户端使用一个套接字,还是可以为多个客户端重用套接字? 如果是这样,怎么样? 有这样做的标准方法吗? 有什么好的参考资料? 我能看到一些示例实现吗? 我必须使用gcc编译器和c语言进行此分配。

如何解决这个Linux Timer

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define million 1000000L timer_t firstTimerID, secondTimerID, thirdTimerID; double Task2ms_Raster, Task10ms_Raster, Task100ms_Raster; struct sockaddr_in addr, client; int acceptSocket; char buf[256]; long rc, sentbytes; int port = 18037; void TASK1(Task2ms_Raster) { struct timespec start, stop; double startTime, stopTime; if( (startTime = […]

初学者的C语言编程

我刚刚开始学习套接字编程,我发现它非常有趣。 目前我在同一台计算机上制作服务器和客户端,因此我可以将ip地址作为环回地址,127.0.0.1,一切似乎工作正常! 但是现在我想要有两台电脑并做这件事……我有以下问题 – 1)说一台电脑是服务器而另一台是客户端。 现在,如果服务器代码驻留在服务器计算机上,客户端代码应该驻留在客户端上吗? 2)在我们为bind()提供ip地址的服务器代码中,它应该是我们可以通过ipconfig找到的系统的ip地址,还是应该仍然是环回地址? 3)在客户端代码中,我猜目的地的IP地址应该是服务器计算机的IP地址吗? 4)最后也是最重要的事情,我如何连接两台计算机? 我附加了我开始使用的简单服务器和客户端消息传递代码。 请引导我完成我需要做出的改变.. 服务器代码 #include #include #include #include #include #include #define MYPORT 3500 int main() { int sockfd; int clientfd; int bytes_read; char buf[100]; int struct_size; struct sockaddr_in my_addr; struct sockaddr_in con_addr; sockfd = socket(AF_INET, SOCK_STREAM, 0); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYPORT); my_addr.sin_addr.s_addr = inet_addr(“127.0.0.1”); my_addr.sin_zero[8]=’\0′; […]

使用Select区分套接字

我正在制作一个侦听多个端口的TCP / IP服务器。 我选择使用select来启用多个事件的处理。 所以此刻,我有两个sockets,连接到两个不同的端口(3000,3001)。 一旦我进入选择循环,我希望服务器根据它当前处理的端口做出不同的响应。 如果在选择内部,我怎么能分辨出我在哪个sockets? 我正在为我的选择循环添加代码,希望你们能指出我正确的方向。 请注意,这是在我将两个文件描述符添加到集合后开始的。 while(1) { /* Block until input arrives on one or more active sockets. */ readfds = activefds; if (select (FD_SETSIZE, &readfds, NULL, NULL, NULL) < 0) { perror ("select"); exit (EXIT_FAILURE); } /* Service all the sockets with input pending. */ for (i = 0; i […]

C socket多个本地ips

我们的服务器上有N个本地ip。 我需要使用其中一个创建套接字连接。 我怎样才能做到这一点 ? fd = socket(AF_INET, SOCK_STREAM, 0); connect(fd, (struct sockaddr*)addr, sizeof(*addr)); // …

重定向到PORT

我正在使用iptables将连接到我的路由器的客户端重定向到另一个端口(比如8080) iptables -t nat -A PREROUTING -p tcp -j REDIRECT –to-port 8080 我正在运行执行二进制文件,将客户端重定向到一个网站。 说www.google.com。 我正在使用以下代码。 #include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int listenfd = 0, connfd = 0; struct sockaddr_in serv_addr; char *reply = “HTTP/1.1 301 Moved Permanently\r\n” “Server: Apache/2.2.3/r/n” “Location: http://www.google.com\r\n” “Content-Length: 0\r\n” […]