您的位置:首页 > 汽车 > 新车 > 梵克雅宝中文官网_网站首页代码_重庆网站设计_外贸seo软件

梵克雅宝中文官网_网站首页代码_重庆网站设计_外贸seo软件

2025/4/30 5:21:22 来源:https://blog.csdn.net/2202_75840803/article/details/147383032  浏览:    关键词:梵克雅宝中文官网_网站首页代码_重庆网站设计_外贸seo软件
梵克雅宝中文官网_网站首页代码_重庆网站设计_外贸seo软件

 创作中心-CSDN

本文中在上述文章写好的代码进行TCP并发服务器多线程的编写

一.TCP并发服务器多线程

建立一个线程,将accpt函数写在循环里

写client_data_handle函数

从do语句哪里开始的代码之前工程中的read函数的代码,之前的read函数的代码就不需要写了

*(void*)arg,将arg强制转换成void *型的指针,然后取值

定义在调用之后就需要去声明

整体代码、

服务端是改好了,客户端也需要进行改动

atoi 字符串转化成整数

二.多进程的并发服务器

把上面的文件中线程部分的代码屏蔽

然后之前一样定义新的fd,在while循环中不断的接收

之后去创建进程

break  : 当程序运行到这个语句时,会立刻离开这个循环,不再执行break下面的语句。跳出循环后,执行循环后面的语句。

continue :当程序运行到这个语句时,会立刻跳过本次循环,不再执行continue下面的语句。跳出本次循环后,会继续执行循环内的语句,直到循环结束。(在 for 循环和 while 循环中是有所差异的)

在子进程里实现accept接收的功能
 

在子进程中调用定义函数,这里子进程功能就完成了,不过还有缺陷,它没有退出的代码。

建立一个信好函数signal(x,x)

第一个参数是信号,第二个是执行什么函数

SIGCHLD是 Linux 和类 Unix 操作系统中的一个信号,用于通知父进程其子进程的状态发生了变化(如子进程终止、停止或继续执行)。SIGCHLD 是进程间通信的重要机制,尤其是在父进程需要管理多个子进程时。SIGCHLD 的基本信息:信号编号:17默认行为:忽略(SIG_IGN)触发条件: 子进程终止(正常退出或被信号终止),子进程被信号暂停(如 SIGSTOP),子进程从暂停状态恢复(如 SIGCONT)SIGCHLD作用通知父进程:当子进程的状态发生变化时,内核会向父进程发送 SIGCHLD 信号。避免僵尸进程:父进程可以通过捕获 SIGCHLD 信号并调用 wait() 或 waitpid()来回收子进程的资源,避免僵尸进程的产生。

waitpid()

第一个参数:pid,正常给-1

第二个参数:状态

第三个参数:option,有WNOHANG :如果没有子进程立即返回

三.TCP补充


 

1.send()函数

ssize_t send(int sockfd,
const void *buf,
size_t len,
int flags
);
参数:sockfd:socket函数返回的fdbuffer:发送缓冲区首地址length:发送的字节flags:发送方式(通常为0),作用和write一样MSG_DONTWAIT,非阻塞MSG_OOB:用于TCP类型的带外数据(out of band)
返回值:成功:实际发送的字节数失败:-1,并设置errno

2.网络中接收数据:

网络中接收数据:
2.recv() /read()int recv( SOCKET s, char FAR *buf, int len, int flags);flag:一般填0,和read作用一样
特殊的标志:MSG_DONTWAITMSG_OOB:读取带外数据MSG_PEEK:流

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com