随笔分类 -  网络编程

摘要:http://blog.csdn.net/arcoolgg/article/details/1472969 阅读全文
posted @ 2014-01-15 14:57 静之深 阅读(278) 评论(0) 推荐(0) 编辑
摘要:Socket的地址查询函数http://blog.sina.com.cn/s/blog_988c054b010139e3.htmlhttp://www.cnblogs.com/cxz2009/archive/2010/11/19/1881693.html包含头文件#include函数原型int getaddrinfo( const char *hostname, const char *service, const struct addrinfo *hints, struct addrinfo **result );参数说明hostname:一个主机名或者地址串(IPv4的点分十进制串或者IP 阅读全文
posted @ 2014-01-04 19:04 静之深 阅读(4336) 评论(0) 推荐(0) 编辑
摘要:我写了一个服务器程序, 在Linux下测试时, 总是莫名退出. 最后跟踪到是write调用导致退出. 用gdb执行程序, 退出时提示"Broken pipe".最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该信号默认结束进程.具体的分析可以结合TCP的"四次握手"关闭. TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协议的语义, 表示对端只是关闭了其所负责的那一条 阅读全文
posted @ 2013-12-02 12:49 静之深 阅读(38335) 评论(0) 推荐(0) 编辑
摘要:struct sockaddr_in inet_address; socklen_t name_length = sizeof(inet_address); if (getsockname(m_SocketFdReference->m_SocketFd, (struct sockaddr*)&inet_address, &name_length) == 0) { m_Info.local_address.SetIpAddress(ntohl(inet_address.sin_addr.s_addr)); m_Info.local_address.SetPort(ntohs 阅读全文
posted @ 2013-12-02 12:47 静之深 阅读(312) 评论(0) 推荐(0) 编辑
摘要:NPT_ResultNPT_BsdUdpMulticastSocket::JoinGroup(const NPT_IpAddress& group, const NPT_IpAddress& iface){ struct ip_mreq mreq; // set the interface address mreq.imr_interface.s_addr = htonl(iface.AsLong()); // set the group address mreq.imr_multiaddr.s_addr = htonl(group.AsLong()); // set sock 阅读全文
posted @ 2013-11-29 16:49 静之深 阅读(358) 评论(0) 推荐(0) 编辑
摘要:http://blog.csdn.net/jasenwan88/article/details/7763689用ioctl获得本地ip地址时要用到两个结构体ifconf和ifreq,它们对于大多数人来说都是比较陌生的,这里给一种比较简单的理解方法, 仅供参考.首先先认识一下ifconf和ifreq://ifconf通常是用来保存所有接口信息的 //ifreq用来保存某个接口的信息//if.hstructifreq {charifr_name[IFNAMSIZ];union{structsockaddr ifru_addr;structsockaddr ifru_dstaddr;structso 阅读全文
posted @ 2013-11-29 13:46 静之深 阅读(843) 评论(0) 推荐(0) 编辑
摘要:讨论Setsockopt选项http://c.chinaitlab.com/cc/ccjq/200806/752042_3.html总而言之,如果你肯定能一起发送多个数据集合(例如HTTP响应的头和正文),那么我们建议你设置TCP_CORK选项,这样在这些数据之间不存在延迟。能极大地有益于WWW、FTP以及文件服务器的性能,同时也简化了你的工作。示例代码如下: intfd, on = 1; … /* 此处是创建套接字等操作,出于篇幅的考虑省略*/ … setsockopt (fd, SOL_TCP, TCP_CORK, &on, sizeof (on)); /* cork */ wri 阅读全文
posted @ 2013-11-19 10:54 静之深 阅读(526) 评论(0) 推荐(0) 编辑
摘要:listen函数的监听队列长度参数http://blog.chinaunix.net/uid-20806345-id-3199231.htmllisten函数将主动套接字转换为被动监控套接字,其第二个参数backlog决定了内核的连接缓存队列长度。对于一个给定的监听套接字,内核维护两个队列:① 未就... 阅读全文
posted @ 2013-10-12 20:32 静之深 阅读(429) 评论(0) 推荐(0) 编辑
摘要:#include #include #include #include #include #include #include #include #include #include #include typedef long LONG;typedef char CHAR;#define CONST const#ifndef SUCCESS#define SUCCESS 0#endif#ifndef FAIL#define FAIL -1#endifLONG GetMac(CONST CHAR *pcIfName, CHAR *pcMac... 阅读全文
posted @ 2013-04-17 14:32 静之深 阅读(7717) 评论(2) 推荐(0) 编辑