Linux进程间通信IPC(六)--- socket
2012-08-15 21:58
369 查看
套接字
套接字实现进程间通信可用于网络编程,两个进程通过socket套接字进行收发数据的通信。
下面实现一个简单的局域网群聊天室实例:
运行结果:
套接字实现进程间通信可用于网络编程,两个进程通过socket套接字进行收发数据的通信。
下面实现一个简单的局域网群聊天室实例:
#include <iostream> #include <cstring> #include <time.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> using namespace std; int main(int argc,char* argv[]) { int sfd=socket(AF_INET,SOCK_DGRAM,0); int opt_val=1; setsockopt(sfd,SOL_SOCKET,SO_BROADCAST,&opt_val,sizeof(opt_val)); sockaddr_in addrSrv; addrSrv.sin_family=AF_INET; addrSrv.sin_addr.s_addr=htonl(INADDR_ANY); addrSrv.sin_port=htons(1234); bind(sfd,(sockaddr*)&addrSrv,sizeof(addrSrv)); sockaddr_in addrClient; addrClient.sin_family=AF_INET; inet_aton("255.255.255.255",&addrClient.sin_addr); addrClient.sin_port=htons(1234); char buff[1024]; int cid=fork(); if(cid>0)//父进程发送数据 { while(1) { cin>>buff; int ret=sendto(sfd,buff,strlen(buff),0,(sockaddr*)&addrClient,sizeof(addrClient)); if(ret<=0) { cout<<"send error!"<<endl; } } } else if(cid==0)//子进程接收数据 { sockaddr_in addrFrom; socklen_t addr_len; tm *t=NULL; time_t ts; while(1) { addr_len=sizeof(addrFrom); memset(buff,0,sizeof(buff)); recvfrom(sfd,buff,sizeof(buff)-1,0,(sockaddr*)&addrFrom,&addr_len); /* if(addrSrv.sin_addr.s_addr==addrFrom.sin_addr.s_addr) { continue; } */ time(&ts); t=localtime(&ts);//获取系统当前时间 cout<<inet_ntoa(addrFrom.sin_addr)<<" ("<<t->tm_hour<<":"<<t->tm_min<<") "<<"说:"<<buff<<endl; } } close(sfd); return 0; }
运行结果:
![](http://my.csdn.net/uploads/201208/15/1345039764_2268.png)
相关文章推荐
- 细说linux IPC(一):基于socket的进程间通信(上)
- 细说linux IPC(一):基于socket的进程间通信(上)
- linux ipc 进程间通信 共享内存、socket等
- 细说linux IPC(二):基于socket的进程间通信(下)
- 细说linux IPC(一):基于socket的进程间通信(上)
- 深入理解Linux进程间通信(IPC)-- 套接口socket
- 细说linux IPC(二):基于socket的进程间通信(下)
- 阐述linux IPC(两):基于socket进程间通信(下一个)
- 深刻理解Linux进程间通信(IPC)
- 深刻理解Linux进程间通信(IPC)
- Linux 进程间通信(IPC)之三 --- 共享内存
- UNIX/Linux进程间通信IPC系列(二)管道
- 深刻理解Linux进程间通信(IPC)
- Linux进程间通信(八):流套接字 socket()、bind()、listen()、accept()、connect()、read()、write()、close()
- Linux进程间通信方式--本地socket
- linux进程间通信IPC
- Linux进程间通信(IPC)编程实践(五)消息队列实现回射客户/服务器
- Linux进程间通信(IPC)方式总结
- 深刻理解Linux进程间通信(IPC)
- Linux下的IPC-UNIX Domain Socket