Linux下的socket通信小程序分享
作者:网络转载 发布时间:[ 2014/10/30 11:24:08 ] 推荐标签:Linux 程序 操作系统
近学习unix网络编程,感觉东西零零碎碎,比较混乱。因此决定整理以下,发一个小博客。一来可以与大家分享以下,二来可以总结提高一下所学的东西。话说:竹子为什么长的高,因为它喜欢总结阿~~^_^
废话不多说了,上代码。小弟半路出家,入行不深,过路大神不喜勿喷阿,嘿嘿~~^_^
程序是一个基于tcp的 C/S .简单回显功能( 声明以下,不要以为注释是英语说我是在哪里下载的,原因是我运行程序 汉字老显示乱码,改成蹩脚英语了 )。
首先是一个自己的库
1 #ifndef MYLIB_H
2 #define MYLIB_H
3
4 #include <stdio.h>
5 #include <stdlib.h>
6 #include <netinet/in.h>
7 #include <sys/socket.h>
8 #include <arpa/inet.h>
9 #include <unistd.h>
10 #include <string.h>
11 #include <errno.h>
12 #include <signal.h>
13 #include <sys/wait.h>
14
15 #define LISTENQ 1024
16 #define MAXLINE 1460
17 #define SERV_PORT 9877
18
19 typedef void (*SignalFunc)(int);
20
21 SignalFunc signal(int sigNo,SignalFunc fun);
22 void sig_chld(int sigNo);
23 void sys_err(char *pa);
24
25 #endif // MYLIB_H
这些是需要的头文件和一些宏定义,服务端和客户端都需要,我都把他们搞一块儿了,这样方便,叫mylib.h 。
哦,先大致解释一下:
1、signal 这个函数是用来捕获信号的。后边服务端会用到,在服务端在细说
2、sig_chld 是signal捕获到信号后的处理函数
3、sys_err 用来输出提示,并退出进程
下边是头文件里函数的实现,里边的函数如果没看太懂可以先不用理解,后边会细说,哈哈
1 #include <mylib.h>
2
3 void sys_err(char *pa)
4 {
5 printf("%s",pa);
6 exit(1);
7 }
8
9 SignalFunc signal(int sigNo, SignalFunc fun){
10 struct sigaction act , oact;
11 act.sa_handler=fun;
12 sigemptyset(&act.sa_mask); //Additional set of signals to be blocked.
13 act.sa_flags=0;
14 if(sigaction(sigNo,&act,&oact)<0)
15 return SIG_ERR;
16 return oact.sa_handler;
17 }
18
19 void sig_chld(int sigNo)
20 {
21 pid_t pid;
22 int state;
23 while ((pid=waitpid(-1,&state,WNOHANG))>0) {
24 printf("process %d terminated
",pid);
25 }
26 return;
27 }
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11