网络编程
春文秋武
路延续着崎岖,静静地走着
展开
-
Linux网络编程系列-TCP编程实例
实例: client #include #include #include #include const int MAXLINE = 100; void str_cli(int sockfd) { char recvline[MAXLINE]; string str; getline(cin, str); while (!str.empty()) { sen原创 2013-10-18 15:10:32 · 980 阅读 · 0 评论 -
Linux网络编程系列-TCP传输控制
滑动窗口(sliding window)滑动窗口是用于流量控制的,发送端根据接收端的处理能力发送数据,不至于造成过多的丢包。 在TCP头中有一个字段window,这个字段就是接收端告诉发送端自己还有多少缓冲区可以接收数据。发送端根据这个字段的值来发送数据,当值为0时就停止发送。 发送端和接收端各自维护着一个窗口,发送的滑动窗口控制可以发送的数据大小,接收端的窗口控制可以接收数据的大小。 发原创 2015-05-22 20:33:27 · 839 阅读 · 0 评论 -
Linux网络编程系列-TCP状态分析
TCP是有状态的,通讯双方需要维护一个状态记录连接情况。本文记录TCP的连接、关闭中的各状态,及其转换情况。原创 2013-05-09 10:17:49 · 943 阅读 · 0 评论 -
很好的设计-服务端网络请求处理模型
几个月前学习了公司内部的网络编程框架,结果zuij原创 2014-06-27 16:10:49 · 1515 阅读 · 0 评论 -
Linux网络编程系列-常见疑惑
1.并发TCP最大连接数 一个TCP连接you原创 2014-11-20 14:49:39 · 813 阅读 · 0 评论 -
Linux网路编程系列-网络I/O模型
总体上讲,应用程序从网络中拿数据,要经历两个阶段:1、数据分组到达网络,并被拷贝到内核的某个缓冲区中,数据报准备好;2、数据从内核缓冲区拷贝至用户态应用程序的缓冲区。基于这两个过程,下面先给出各种IO模式的调用图,最后给出异步、同步IO等区分等。原创 2014-05-14 09:49:50 · 985 阅读 · 0 评论 -
linux网络编程系列-TCP及常用接口分析
TCP编程示例图: 头文件: 常用头文件"arpa/inet.h", "sys/socket.h","netinet/in.h" 函数原型: int socket(int family, int type, int protocol) family:通信协议族,IP protocol family为AF_INET(PF_INET),值是2; type:套接字类型(连接类型原创 2013-05-09 11:04:39 · 1106 阅读 · 0 评论 -
Linux网络编程系列-获取机器名和ip
#include #include using namespace std; int main() { int result = 0; char hostName[100]; struct hostent* host = NULL; result = gethostname(hostName, 100); host = gethostbyname(hostName);原创 2012-12-19 17:56:14 · 2748 阅读 · 0 评论 -
linux网络编程系列-网络连接的建立
一个比较实用的连接函数,支持host为域名。#include #include #include #include #include #include #include #include using namespace std; int my_connect(const char *host, int port) { char buf[1024]; struct原创 2013-11-21 14:39:57 · 1214 阅读 · 0 评论 -
Linux网络编程系列-套接口选项控制
获取和设置套接口选项的方法有: getsockopt/setsockopt fcntl ioctl getsockopt/setsockopt 这两个函数仅用于套接口(socket)的设置,另外两个函数可以对任意的文件描述符进行设置。 #include int getsockopt(int sockfd, int level, int optname, void* optval, sock原创 2013-07-09 13:46:51 · 1261 阅读 · 0 评论 -
linux网络编程系列-select和epoll的区别
select和epoll都用于监听套接口描述字上是否有事件发生,实现I/O复用 select(轮询) #include #include int select (int maxfdpl, fd_set* readset, fd_set* writeset, fd_set* exceptset, const struct timeval* timeout)调用时轮询一次所有描述字,超时时原创 2013-05-09 21:07:53 · 1078 阅读 · 0 评论