windows系统是怎样发送和接收数据的,比如说我用UDP通信,调用sendto发送数据后,数据是怎么经过系统发送出去的,是否是先进入一个发送队列,然后系统判断队列有数据,就执行发送,系统发送时是否每次只发送一个包?然后系统收到数据时,是数据先到达系统的接收缓冲,然后系统发送一个消息给应用程序,应用程序在开辟一块内存来接收数据,那如果有两个数据包同时到达,我用revfrom会不会将两个数据包同时读取出来呢?
解决方案 »
- vc如何播放和暂停音乐(mp3格式)
- 给程序添加成员变量后,程序不能执行了?
- 小弟的机器不知让哪个家伙给改了bios的密码,请问高手我怎么解决,听说有什么万能密码?
- 如何检同一颜色~不同位置的块数~高手来帮忙解答下~~谢谢!!或者给个想法也行!!有图,看了再说
- vc初学者的菜单问题,向大师请教!
- 一个简单的基于对话框的MFC问题!
- 怎样得到一个超链接的坐标(没有id和name)
- VC中如何设置如vb中的Timer事件阿
- 20分交友(CTI高手),30分请教(关于客服中心的问题)
- 怎么用vc使用vc编写的dll?快点帮帮我!
- 请教:邮件解析中的编码问题处理
- 自己的对话框不处理wm_close的时候,CWnd也没有做任何处理。
基本上tcp/ip几层协议都讲解到了!搞网络的人必备,当然你想深入了解,还需要读linux网络源码,网络是相同的,就像windows的客户端可以访问liunx的网站服务器!
是通过winsocket来完成的,winsocket封装了网络通信协议栈,协议栈这个词的准确翻译是指一堆协议,你用哪个就告诉winsocket按哪个协议通信,比如udp,tcp..,绝对不是指内存那个进栈出栈什么的,通信协议只是个规范,实现各不相同的,只要符合规范就可以,都要通过软件硬件配合在整个网络中共同完成的,lz所说的udp就是windows系统所支持的winsock和你所用的网卡及网卡驱动共同完成PC端的实现
你首先要建立一个winsock实例,成功建立后你只能得到这个winsock的句柄,一切都是通过这个句柄来操控winsock,比如设定通信协议udp,在内存创建这个socket的缓冲区(当然这步是自动的,你不能直接访问这个缓冲区),sendto之后,就是把你要发送的字节送到那个缓冲区,这时你的工作就完成了,之后的事情是不受你控制的,但你可以询问sokcet这时缓冲区的情况,比如缓冲区是否已满,也就是说sendto函数返回后,只表示数据已成功送达本PC的winsock缓冲区
数据到过缓冲区后就完全按照udp协议在网络上传输,在你这端,一定是先发出你先sendto的数据,但每次发送数据的长度是不固定的,如果网络连通的话,它总会发完的,接收端同理,也是winsock缓冲区最先得到数据,但每次接收长度,顺序是不固定的,这个要你在recv后再处理
linux是开源的,你上度娘或者谷姐一定搜得到