TCP连接多线程如何实现?
这么搞:客户端主程序int main(){ 一个单链表的头节点 root; 一个读写锁 //用来控制链表的操作 开始监听 while(1) { if监听到了新的tcp连接 { malloc一个链表节点p 取得写锁 把p加到链表的最后面 启动一个新的线程 xinxiancheng(socketfd,p);//正确的写法大概是这样pthread_create(&m_tid,&attr,armscHandler,arg) 释放写锁 } }} 线程函数这样搞xinxiancheng(int socket,struct node *p){ while(1) { 读sockt 如果读到了(如果对方关闭了则直接break) { 获取写锁 把读到的内容写到p里面(struct node 里面一定要有一个存放读到的内容的buff) 释放写锁 } 获取读锁 从root开始读 把所有链表里的内容写到socket里面。 释放读锁 }} 大概思路就是这样。还有一些细节。比如:node的buff怎么控制,写socket的时候要不要区分谁是谁,读写的方式(推荐非阻塞)等等。这些都可以在上面的基础上进行细化。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有