用SOCKET做进程通讯要注意的事项

用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。

posted @ 2023-12-10 18:21  钰清山人  阅读(2)  评论(0编辑  收藏  举报  来源