一.概述 tcp报文封装在ip报文中,创建tcp的原始套接字如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_TCP); 此时只能构造tcp报文,如果想进一步构造ip首部,那么就要开启sockfd的IP_HDRINCL选项: 1 int on = 1;
分类:
系统相关 时间:
2016-01-29 21:16:06
阅读次数:
424
一.概述 上一篇arp请求使用的是链路层的原始套接字。icmp封装在ip数据报里面,所以icmp请求可以直接使用网络层的原始套接字,即socket()第一个参数是PF_INET。如下: 1 sockfd = socket(PF_INET, SOCK_RAW, IPPROTO_ICMP); icmp报
分类:
系统相关 时间:
2016-01-28 23:57:09
阅读次数:
415
套接字机制提供两个套接字选项来控制套接字行为。一个接口用来控制选项,另一个接口允许查询一个选项的状态。1 #include 2 #include 3 4 int getsockopt(int sockfd, int level, int optname, void *optval, socklen....
分类:
系统相关 时间:
2015-12-07 14:18:10
阅读次数:
375
send发送数据时,发送失败,进行如下重连处理:if(send(sockfd, serbuf, readlen, 0) 另外在函数中send之前添加如下语句:signal(SIGPIPE, SIG_IGN); // prevent exiting when we send data to cl...
分类:
其他好文 时间:
2015-11-30 23:42:50
阅读次数:
173
UDP programUDP常用函数:recvfrom和sendtorecvfromssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr * from, socklen_t *addrlen);s...
分类:
其他好文 时间:
2015-11-29 13:31:58
阅读次数:
184
#include?<stdio.h>
#include?<winsock2.h>
#include?<string.h>
#pragma?comment(lib,?"ws2_32.lib")
void?geturl(char?*url)
{
????WSADATA?WSAData={0};
????SOCKET?sockfd;
????struc...
分类:
Web程序 时间:
2015-11-16 06:14:01
阅读次数:
184
#include #include #include #include #include #include #include #include int main( int argc, char* argv[] ){ if( argc = 0 ); if ( connect( sockfd...
分类:
其他好文 时间:
2015-10-14 00:17:11
阅读次数:
203
【shutdown和close的区别】 当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd); 你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个...
分类:
其他好文 时间:
2015-09-30 18:05:48
阅读次数:
123
poll函数和select函数差不多。以下是一个简单的回显服务器#include using namespace std;#include #include #define OPEN_MAX 64int main(){ int i, maxi, listenfd, connfd, sockfd...
分类:
其他好文 时间:
2015-09-22 16:38:23
阅读次数:
149
步骤1: 设置非阻塞,启动连接实现非阻塞 connect ,首先把 sockfd 设置成非阻塞的。这样调用connect 可以立刻返回,根据返回值和 errno 处理三种情况:(1) 如果返回 0,表示 connect 成功。(2) 如果返回值小于 0, errno 为 EINPROGRESS, ....
分类:
其他好文 时间:
2015-08-25 23:27:16
阅读次数:
144