摘要:最近在做项目的时候发现了一个严重问题,可能不光是我多人在使用 win32 socket 进行开发的时候也会遇到的问题。首先我分析的模块是 我项目中文件传输的部分,我做的是一个基于UDP协议的一个局域网通信软件,里面有一个文件传输的模块 ,起初的时候我也完成了文件传输的功能,以为这就可以了,其实我在做的时候忽略了很多细节部分,比如数据应该如何传输 ,一次最多发送多少数据 以及如何控制同步问题 。这些问题我都没有详细去追究,直到最近我去某公司面试的时候,那位很牛逼的大哥跟我说了一句,"你知道windos底层一次最多发送多少字节的数据吗?" ,我惊了。。我还真的不知道。还有剩下很
阅读全文
摘要:/*匿名管道: 匿名管道可以实现父子进程的通信, 一个由另一个进程调用CreateProcess函数创建的进程称为子进程我们在利用CreatePipe创建你民管道的时候会获得管道的读写句柄 子进程可以继承这个句柄 在父进程通过 CreatePipe函数获得句柄可以对匿名管道进行读写操作 在子进程 通过GetStdHandle()通过不同的参数 可以获得标准 输入 输出 错误的 句柄 这些句柄对子进程来说都是从父进程继承过来的所以我们在子进程也可以对匿名进行读写 这就实现了父子进程之间的通信 */#include<iostream>#include "windows.h&q
阅读全文
摘要:/* 命名管道不仅可以实现 本地进程之间的通信还可以实现网络进程的通信 与油槽不同的是 管道式基于面向连接的可靠的通信 只能一对一传输 数据 我们可以通过 CreateNamedPipe()创建一个管道 ,可以指定模式是双向 即客户端 和服务端都可以进行读写 管道 就跟基于 socket的TCP通信类似 在服务端调用ConnectNamedPipe()来等待客户端连接管道 ,不像函数英文名字那样连接管道 而是等地啊客户端连接的到来 在客户端我们需要调用 WaitNamedPipe()函数来连接管道 在完成以上的工作之后 我们就可以利用 CreateFile() ReadFile() ...
阅读全文
摘要:// 油槽只能实现 一个进程写 一个进程读取服务器读取 客户端写入 在服务器端只需 创建油槽然后即可通过 ReadFile和 WriteFile就可以实现向油槽的读写功能// 在客户端需要利用CreateFile来打开一个油槽 然后通过CreateFile和ReadFile进行油槽的读写操作 // 油槽不仅能实现在本地进程之间的通信还可以实现网络进程之间的通信 // 油槽名字的格式是 "\\\\.\\mailslot\\path" 如果服务端不在本地那么吧'.'换成主机名字 //如果要实现全网的通信那么就把'.' 换成* 表示网内所有主机 /
阅读全文
摘要:说线程就要说到进程每一个exe文件运行的时候 系统就会为这个进程分配虚拟空间 ,多个进程在逻辑上重复使用该空间 。 线程实际上是程序真正的功能实现者,一个进程包含多个线程 ,线程之间相互协作共同完成一项任务 。每个进程中的多个线程可以共享进程中的数据 。 每个进程都有一个唯一称为主线程的线程 ,例如 mian()函数所在的线程就是主线程 。 有些CPU只支持单线程技术 但是我们仍然可以使用多线程是因为 操作系统给每个线程分配了 一个时间片 这个时间片很短 因此在一个线程的时间片到期的时候另一个线程立马执行 ,就让我们感觉到好像实现了多线程 。。。。。 什么是线程同步呢? 如何利用临界资源实现.
阅读全文