
linux网络编程
我鲁班无敌
一点寒芒先到, 随后枪出如龙.
展开
-
linux网络编程入门
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是转载 2014-02-14 15:01:42 · 797 阅读 · 0 评论 -
Linux线程同步:互斥量、条件变量的区别
互斥量:本质就是一把锁,所有锁类型都可能会产生死锁,所以在使用互斥量时程序员必须在逻辑上附加避免死锁的措施,这个典型避免死锁的措施就是:通过元素排序预防死锁,即多线程在互斥资源上必须按相同顺序加锁和解锁。条件变量:必须与互斥量配合使用,它可以以无竞争的方式访问资源,即,条件变量本身会预防死锁的产生。转载 2015-10-15 22:47:31 · 613 阅读 · 0 评论 -
socket select函数的详细讲解
原型int select(int nfds,fd_set* readfds,fd_set* writefds,fd_set* exceptfds,const struct timeval* timeout);nfds:本参数忽略,仅起到兼容作用。 readfds:(可选)指针,指向一组等待可读性检查的套接口。 writefds:(可选)指针,转载 2015-10-27 16:02:39 · 566 阅读 · 0 评论 -
(Socket编程中)getaddrinfo函数使用详解
getaddrinfo是在gethostbyname系列函数不支持Ipv6的情况下逐渐催生的,其能够处理名字到地址以及服务到端口这两种转换,返回一个sockaddr结构的链表,这些sockaddr地址结构随后可有套接口函数(socket、bind、connect、listen等)直接调用,将协议相关性隐藏在该函数内部。应该尽量选择使用getaddrinfo函数代替之前的getxx函数族,就像应该使转载 2015-10-28 00:54:28 · 6133 阅读 · 0 评论 -
socket通信简介
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的转载 2015-10-26 14:34:51 · 341 阅读 · 0 评论 -
Select函数在Socket编程中的使用
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式转载 2015-10-26 14:42:51 · 477 阅读 · 0 评论 -
Unix系统的三种缓冲区行缓冲、全缓冲、无缓冲(以及如何调整缓冲区的类型)
from unix系统编程 p91 练习4-22下面的程序会产生什么样的输出呢?#include #include int main(){ printf("This is my output.") ; fork() ; return 0 ;}输出如下所示:This is my output.T转载 2014-11-17 01:51:51 · 1883 阅读 · 0 评论 -
linux 多线程信号总结
linux 多线程信号总结(一)1. 在多线程环境下,产生的信号是传递给整个进程的,一般而言,所有线程都有机会收到这个信号,进程在收到信号的的线程上下文执行信号处理函数,具体是哪个线程执行的难以获知。也就是说,信号会随机发个该进程的一个线程。2 signal函数BSD/Linux的实现并不在信号处理函数调用时,恢复信号的处理为默认,而是在信号处理时阻塞此信号,直到信号处理函数返回。转载 2014-05-16 13:48:29 · 728 阅读 · 0 评论 -
Linux多线程中使用信号-2
Linux 多线程应用中如何编写安全的信号处理函数转自:http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/index.html?ca=drs-cn-0618周 婷 (zhouting@cn.ibm.com), 软件工程师, IBM 中国软件开发技术实验室刘 坚 (liujsh@cn.i转载 2014-05-08 16:06:59 · 617 阅读 · 0 评论 -
Linux多线程中使用信号-1
在Linux的多线程中使用信号机制,与在进程中使用信号机制有着根本的区别,可以说是完全不同。在进程环境中,对信号的处理是,先注册信号处理函数,当信号异步发生时,调用处理函数来处理信号。它完全是异步的(我们完全不知到信号会在进程的那个执行点到来!)。然而信号处理函数的实现,有着许多的限制;比如有一些函数不能在信号处理函数中调用;再比如一些函数read、recv等调用时会被异步的信号给中断(inter转载 2014-05-08 15:45:02 · 572 阅读 · 0 评论 -
可重入和不可重入函数
重入一般可以理解为一个函数在同时多次调用,例如操作系统在进程调度过程中,或者单片机、处理器等的中断的时候会发生重入的现象。一般浮点运算都是由专门的硬件来完成,举个例子假设有个硬件寄存器名字叫做FLOAT,用来计算和存放浮点数的中间运算结果假设有这么个函数void fun(){//...这个函数对FLOAT寄存器进行操作}假如第一次执行,有个对浮点数操作运算的结果临时存在FLOAT寄存转载 2014-05-03 19:51:09 · 731 阅读 · 0 评论 -
Linux 网络编程之ioctl函数
1.介绍Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口.并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现.2.相关结构体与相关函数#include int ioctl(int d,int request,....);转载 2014-04-30 13:33:08 · 844 阅读 · 0 评论 -
信号量 互斥锁 条件变量的区别(讲的很好,值得收藏)
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不转载 2015-10-15 23:12:48 · 499 阅读 · 0 评论