Linux网络编程
文章平均质量分 85
HelloWorld__LL
态度 思路 方法
展开
-
socket编程--socket基本概念
socket socket可以看成是用户进程与内核网络协议栈的编程接口,不仅可以用于本机的进程间通信,也可以用于网络上不同主机的进程间通信—而管道只能在同一台主机进行通信 应用层依靠socket进行数据传输,我们不必关心底层的内核,即底层数据的传输细节,只关心套接口的存在。可以把套接口看成进程间的通信,主机A上的进程通过套接口传输数据到主机B的进程。IPv4套接字地址结构struct sockad原创 2015-08-08 15:49:59 · 356 阅读 · 0 评论 -
TCP状态转移图学习总结
这是网络编程的基础,tcp的状态转移图说到底就是一个状态机的不同状态之间的转换关系以及触发这些状态需要的条件,一共存在11个状态,我们来逐一分析: 1.CLOSED:起始点,在超时或者连接关闭时候进入此状态。2.LISTEN:svr端在等待连接过来时候的状态,svr端为此要调用socket, bind,listen函数,就能进入此状态。此称为应用程序被动打开(等待客户端来连接)。3.SYN_SEN转载 2015-08-21 11:18:10 · 421 阅读 · 0 评论 -
TIME_WAIT 太多的解决办法
TIME_WAIT客户端与服务器端建立TCP/IP连接后关闭SOCKET后,服务器端连接的端口状态为TIME_WAIT.主动关闭的一方在发送最后一个 ack 后就会进入 TIME_WAIT 状态 停留2MSL(max segment lifetime)时间这个是TCP/IP必不可少的,也就是“解决”不了的,也就是TCP/IP设计者本来是这么设计的主要有两个原因1。防止上一次连接中的包,迷路后重新出现转载 2015-08-21 11:37:18 · 389 阅读 · 0 评论 -
《Unix网络编程卷1-套接字联网API》第一个例子编译
第一个例子:一个简单的时间获取客户程序,利用GCC编译会出错,需要查看源码中的README文档。下载源码 unpv13e解压,可看到README文档,打开可看到:Execute the following from the src/ directory: ./configure # try to figure out all implementation differences c原创 2015-07-24 21:32:09 · 982 阅读 · 0 评论 -
POSIX多线程--线程基本操作接口
与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的链接这些线程函数库时要使用编译器命令的”-lpthread“选项int pthread_create(pthread_t thread, const pthread_attr_t *attr, void (start_routine)(void), void *arg); 功能:创建一个新的线程 参数: t原创 2015-08-29 15:30:42 · 487 阅读 · 0 评论 -
tinyhttpd解析
tinyhttpd是一个轻量级的Http服务器,加上注释才500行,代码量较小,适合Unix网络编程的初级学者,tinyhttpd包括了基本的socket编程所用到的函数。百度即可下载源码。 下载解压后,编辑Makefile文件: httpd: httpd.c gcc -W -Wall -lpthread -g -o httpd httpd.c make编译httpd.c运行原创 2015-08-22 16:37:41 · 766 阅读 · 1 评论 -
socket编程--socket基本概念
socket socket可以看成是用户进程与内核网络协议栈的编程接口,不仅可以用于本机的进程间通信,也可以用于网络上不同主机的进程间通信—而管道只能在同一台主机进行通信 应用层依靠socket进行数据传输,我们不必关心底层的内核,即底层数据的传输细节,只关心套接口的存在。可以把套接口看成进程间的通信,主机A上的进程通过套接口传输数据到主机B的进程。 IPv4套接字地址结构struct sock原创 2015-08-22 20:12:34 · 306 阅读 · 0 评论 -
socket编程--粘包
流协议与粘包 首先说明的是发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是一条消息,原创 2015-08-22 17:32:04 · 392 阅读 · 0 评论 -
socket编程--close、shutdown
close与shutdown区别1、close终止了数据传送的两个方向 2、shutdown可以有选择的指针某个方向的数据传送或者终止数据传送的两个方向 3、shutdown how=1就可以保证对等方接受到一个EOF字符,而不管其他进程是否已经打开了套接字。而close不能保证,直到套接字引用计数减为0时才发送。也就是说直到所有的进程都关闭了套接字 例如之前的多进程:int conn =原创 2015-08-22 17:23:34 · 573 阅读 · 0 评论 -
socket编程--粘包
流协议与粘包流协议与粘包 首先说明的是发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体,或说是一个流(stream),一条消息有多少字节对应用程序是不可见的,因此TCP协议是面向流的协议,这也是容易出现粘包问题的原因。而UDP是面向消息的协议,每个UDP段都是原创 2015-08-08 16:06:46 · 352 阅读 · 0 评论 -
socket编程--TCP客户/服务器模型 (c/s)及基本函数
TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect–函数1、socket函数#include <sys/socket.h>int socket(int domain, int type, int protocol);功能:创建一个套接字用于通信 参数:domain:指定通信协议族(protocol family)原创 2015-08-22 17:27:47 · 1058 阅读 · 0 评论