C语言服务器编程必备常识

本文详细介绍了C语言服务器编程的基础知识,包括头文件、库的链接、子进程创建、信号处理、多进程与多线程同步等内容。讲解了TCP/IP协议、socket编程、TCP连接的三次握手以及服务器端的socket生命周期。还涉及了高级主题,如文件管理、系统调用、网络协议细节以及线程同步机制,如互斥量和条件变量的使用。
摘要由CSDN通过智能技术生成

入门

  • 包含了正确的头文件只能编译通过,没链接正确的库链接会报错。

  • 一些常用的库gcc会自动链接。

  • 库的缺省路径/lib /usr/lib /usr/local/lib

  • 不知道某个函数在那个库可以nm -o /lib *.so | grep 函数名

  • man sin 会列出包含的头文件和链接的库名。man 2 sin 2表示系统调用,3表示c库函数

  • 一旦子进程被创建,父子进程一起从fork处被创建。创建子进程为了争夺资源。

  • 重定向用dup2函数

  • kill -l查看信号种类

  • pthread_mutex不跨进程,ipc中的信号量跨进程,但linux不支持无名信号量。信号灯的主要用途是保护临界资源。多进程访问共享内存,用信号量同步。

  • alarm(5)5秒后向自己发送SIGALARM信号,缺省处理是结束进程,不自定义就会结束进程。通过对信号集加减信号,确定信号屏蔽字。在信号处理程序被调用时,操作系统建立的新信号屏蔽字包括正在被递送的信号,如果此时这个信号再次发生,将阻塞到前一个处理完,多次发生不排队只处理一次。 sa_mask会被加到信号屏蔽字中。

  • netstat -an|grep A |grep ESTABLISHED | grep B,查看ip为A的服务器是否在端口B建立了连接

  • 由于我们的连接都是常连接,故可以按照客户端与服务器端建立的连接端口进行判断。

  • IP协议是网络层协议,主要发送数据包。UDP基于IP协议,用在传输层。TCP协议建立在IP协议之上,可靠的、按顺序发送的。

  • TCP连接三次握手:客户机向服务器发包。服务器给客户机回包。客户机收到包,向服务器发送确认信息完成连接。服务器收到确认信息也完成连接。

  • ioctl可以控制所有文件描述符的情况。

  • 循环服务器:UDP服务器,UDP是非面向连接的,没有一个客户机可以老是占着服务器。

  • TCP循环服务器一次只能处理一个,close后才能处理下一个。

  • TCP并发服务器:fork子进程来处理。创建子进程消耗资源。

  • 并发服务器:多路IO复用。

  • 当我们创建一个正常的TCP套接字的时候,我们只处理内容,不负责TCP头部和ip头部,自己创建头部使用setsockopt。

  • 网络程序一般是多进程加上多线程。

  • g++参数-pg产生gprof性能信息,gprof好像是g++自带的

  • (gdb)make使你能不退出gdb就能产生就重新产生可执行文件 , shell 不退出gdb就执行shell

  • file a.out可以在gdb模式下载入程序。

  • 服务器端:socket->bind->list

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值