用winsock实现进程间通信

用winsock实现进程间通信

ID:42675116

大小:56.50 KB

页数:5页

时间:2019-09-19

用winsock实现进程间通信_第1页
用winsock实现进程间通信_第2页
用winsock实现进程间通信_第3页
用winsock实现进程间通信_第4页
用winsock实现进程间通信_第5页
资源描述:

《用winsock实现进程间通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、用winsock实现进程间通信winsock不止可以用于网络通信,也可以用于进程间的通信。比如说在一台电脑上,服务端和客户端的IP地址相等,再开通一个端口,就可以很方便的进行进程间通信了。服务端需要做的事情是:1、socket初始化2、绑定端口3、监听4、连接请求5、通信-发送信息或者接收信息客户端需要做是的事情:1、初始化socket2、请求连接端口3、进程通信-从端口读取信息,或者向端口发送信息我这里有一个例子,可以详细说明通信的过程和原理,在这里将要有两个进程,process1和process2,其中前者可以作为服务端(其实这个不是很重要,哪个做服务端都可以,端口通信

2、是双向的),process1将向process2发送一个数字,然后process2将返回一个数字,这就是一个简单的通信过程。process1的代码如下所示://process1.c#include#include#include#definePORT2500#definepfprintf#defineMSG_LEN32voidclear_str(char*pc)//清空字符串{if(pc!=NULL)while(*pc)*pc++='';}intuint2str(unsignedintui,char*pc)

3、//无符号整数转换成字符串{charc;char*temp=pc;if(pc==NULL)return0;clear_str(pc);while(ui>9){*temp++=ui%10+'0';ui/=10;}*temp=ui+'0';while(temp>pc){c=*temp;*temp=*pc;*pc=c;temp--;pc++;}return1;}intmain(){WORDwVersionRequested;WSADATAwsaData;intret=0,salength=0;unsignedintsd;SOCKETserver,slisten;structsoc

4、kaddr_insaserver,saclient;charmsg[MSG_LEN]="";//WinSock初始化wVersionRequested=MAKEWORD(2,2);//希望使用的WinSockDLL的版本ret=WSAStartup(wVersionRequested,&wsaData);if(ret!=0)return0;//创建Socket,使用TCP协议server=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(server==INVALID_SOCKET){WSACleanup();return0;}pf("s

5、ocket()成功!");//构建本地地址信息saserver.sin_family=AF_INET;//地址家族saserver.sin_port=htons(PORT);//注意转化为网络字节序saserver.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//使用INADDR_ANY指示任意地址//绑定ret=bind(server,(structsockaddr*)&saserver,sizeof(saserver));if(ret==SOCKET_ERROR){closesocket(server);WSACleanup();r

6、eturn0;}pf("bind()成功!");//侦听连接请求ret=listen(server,5);if(ret==SOCKET_ERROR){closesocket(server);WSACleanup();return0;}//关闭套接字pf("等待连接……");salength=sizeof(saclient);//接受客户端的连接请求slisten=accept(server,(structsockaddr*)&saclient,&salength);if(slisten==INVALID_SOCKET)//失败则退出{closesocket(serv

7、er);WSACleanup();return0;}pf("accept()成功!");sd=0;while(1){scanf("%d",&sd);//输入要发送的数字uint2str(sd,msg);ret=send(slisten,msg,sizeof(msg),0);//发送一个数字if(ret==SOCKET_ERROR)break;//发送失败clear_str(msg);ret=recv(slisten,msg,sizeof(msg),0);//接收回复if(ret==0){pf("对方已关闭soc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。