windows系统是怎样发送和接收数据的,比如说我用UDP通信,调用sendto发送数据后,数据是怎么经过系统发送出去的,是否是先进入一个发送队列,然后系统判断队列有数据,就执行发送,系统发送时是否每次只发送一个包?然后系统收到数据时,是数据先到达系统的接收缓冲,然后系统发送一个消息给应用程序,应用程序在开辟一块内存来接收数据,那如果有两个数据包同时到达,我用revfrom会不会将两个数据包同时读取出来呢?
解决方案 »
- 向文件(TXT或CSV)写入字符串,怎样可以把新插入的放最前面,把原来的往后移?
- .net2003如何设置,才能让其生成的程序不是基于.net的框架?
- 设备坐标 和 逻辑坐标是怎么区别的。直到现在还是没搞懂。
- 请问如何制作QQ模式的界面
- 如何释放CArray<CString*,CString*> m_pStrArray之类的内存?
- VC的一个编译问题
- 怎么变换当前图标ID的图标。如果用import它会新建一个图标,而且并没用覆盖这个ID上的图标
- 简单的线程问题,高手请进!
- 是高手的进来....很怪的问题
- 关于进程请高手指教
- 请教:邮件解析中的编码问题处理
- 自己的对话框不处理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是开源的,你上度娘或者谷姐一定搜得到