社区
网络及通讯开发
帖子详情
急!Socket通讯中,如何实现数据包队列?请高手赐教!
xuytf
2002-12-17 08:46:10
我在做一个通讯程序,在客户端,我想建一个数据包队列,每发一个数据包,就设一个标志,当收到服务端的响应时,再根据ID检索队列中的该数据包,并将其删除。
请问:这个队列可以用哪些类实现,请给一些代码说明。
...全文
170
7
打赏
收藏
急!Socket通讯中,如何实现数据包队列?请高手赐教!
我在做一个通讯程序,在客户端,我想建一个数据包队列,每发一个数据包,就设一个标志,当收到服务端的响应时,再根据ID检索队列中的该数据包,并将其删除。 请问:这个队列可以用哪些类实现,请给一些代码说明。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamleejun
2003-02-18
打赏
举报
回复
mark
l_clove
2002-12-28
打赏
举报
回复
用互斥或线程同步来完成...
CRITICAL_SECTION g_WaitInitEnd;
InitializeCriticalSection(&g_WaitInitEnd);
EnterCriticalSection(&g_WaitInitEnd);
.
(访问临界资源,你的队列)
.
LeaveCriticalSection(&g_WaitInitEnd);
DeleteCriticalSection(&g_WaitInitEnd);
pp616
2002-12-22
打赏
举报
回复
收到响应将发送线程锁死。删除动作完成在恢复发送线程
xuytf
2002-12-17
打赏
举报
回复
to 明月
因为数据量很大(每次队列可能有5,6万),我用两个线程,一个用来发这个队列,另一个用来在收到响应时删除队列中相应数据包。麻烦告诉我,如何实现操作这个队列的同步?
先谢了!
poweruser
2002-12-17
打赏
举报
回复
可以使用STL中的list或map
hatumei
2002-12-17
打赏
举报
回复
typedef struct
{
int ID;
void* msg;
int Status;
}MsgElem;
class TMsgStack
{
private:
DynamicArray< MsgElem>elem ;
int count;
int upgrade;
public:
MsgStack(int,int);
void Add(MsgElem);
int Find(int Msg_Key);
MsgElem operator[](int index);
int GetLength();
};
TMsgStack::MsgStack(int cnt=10,int up=5)
{
elem.Length=cnt;
count=0;
upgrade=up;
}
void TMsgStack::Add(MsgElem e)
{
elem[count]=e;
count++;
if(count>elem.Length)
{
elem.Length=elem.Length+upgrade;
}
}
int TMsgStack::Find(int Msg_Key)
{
for(int i=0;i<count;i++)
{
if(elem[i].ID==Msg_Key)
{
return i;
}
}
return -1;
}
MsgElem TMsgStack::operator[](int index)
{
if(index>=count)
{
return NULL;
}
else
{
return elem[index];
}
}
int TMsgStack::GetLength()
{
return count;
}
warton
2002-12-17
打赏
举报
回复
自定义一个链吧!!
追踪 Kubernetes
中
的
数据包
假如同一个内核空间
中
的两个
socket
可以直接传输数据,是不是就可以省掉内核网络协议栈处理带来的延迟?下篇继续。关注"云原生指北"微信公众号(转载本站文章
请
注明作者和出处乱世浮生,
请
勿用于任何商业用途)
socket
通讯
之完成端口
而在Windows
中
实现
异步的机制同样有好几种,而这其
中
的区别,关键就在于图1
中
的最后一步“通知应用程序处理网络数据”上了,因为
实现
操作系统调用设备驱动程序去接收数据的操作都是一样的,关键就是在于如何去通知...
Python之路:
socket
篇
Socket
网络上的两个程序通过一个双向的通信连接
实现
数据的交换,这个连接的一端称为一个
socket
,作为BSD UNIX的进程通信机制,通常也称做“套接字” ,是一个通信链的句柄,
实现
不同程序之间的发出
请
求和应答
请
求。...
CPP-网络/通信:
SOCKET
客户端
实现
代码: 1 //引入头文件 2 3 #include <WinSock2.h> 4 5 6 7 //客户端创建
Socket
///////////////////////////////////////////////////// 8 char recvClient[1024] = {0}; 9...
很幽默的讲解六种
Socket
IO模型(转)
本文简单介绍了当前Windows支持的各种
Socket
I/O模型,如果你发现其
中
存在什么错误
请
务必
赐教
。 一:select模型 二:WSAAsyncSelect模型 三:WSAEventSelect模型 四:Overlapped I/O 事件通知模型 五:...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章