用SOCKET做进程通讯时,如果客户端是由主进程创建出来的,在创建要注意不要继承父进程的属性,CreateProcess参数如下:
BOOL CreateProcess(
LPCTSTR lpApplicationName, // 应用程序名称
LPTSTR lpCommandLine, // 命令行字符串
LPSECURITY_ATTRIBUTES lpProcessAttributes, // 进程的安全属性
LPSECURITY_ATTRIBUTES lpThreadAttributes, // 线程的安全属性
BOOL bInheritHandles, // 是否继承父进程的属性
DWORD dwCreationFlags, // 创建标志
LPVOID lpEnvironment, // 指向新的环境块的指针
LPCTSTR lpCurrentDirectory, // 指向当前目录名的指针
LPSTARTUPINFO lpStartupInfo, // 传递给新进程的信息
LPPROCESS_INFORMATION lpProcessInformation // 新进程返回的信息
);
bInheritHandles 这参数要设置成FALSE,子进程才不会承继父进程的属性。否则如果客户端没关闭时,服务端重新打开时会出现网络端口占用的情况。错误代码为10048。
本文讲述了在使用SOCKET进行进程间通信时,如果客户端由父进程创建,需确保在CreateProcess函数中将bInheritHandles设为FALSE,以防止子进程继承父进程的属性,避免因未关闭导致服务端重启时出现网络端口占用错误10048。
3121





