首页服务器Linux服务器 linux IPC之socket解析及实例代码

linux IPC之socket解析及实例代码

Linux下的Socket通信是一种基于文件的IPC通信,也可以是基于其他设备的IPC通信。它可以在本机内不同进程间实现通信,也可以在实现不同主机之间的通信。 socket的创建步骤 服务…

Linux下的Socket通信是一种基于文件的IPC通信,也可以是基于其他设备的IPC通信。它可以在本机内不同进程间实现通信,也可以在实现不同主机之间的通信。

socket的创建步骤

服务端

1.通过socket()函数创建socket
2.通过bind函数绑定socket于设备地址
3.通过listen监听指定的socket
4.通过accept等待客户端的连接

客户端

1.通过socket()函数创建socket
2.通过connect连接到服务端

待经过上面的步骤后,服务端和客户端已经建立了链接,可以通过write/read或者sendto/recvfrom发送/接收数据.

示列

1.服务端

//s_unix.c#include #include #include #include  #define UNIX_DOMAIN "/tmp/UNIX.domain"int main(void){  socklen_t clt_addr_len;  int listen_fd;  int com_fd;  int ret;  int i;  static char recv_buf[1024];   int len;  struct sockaddr_un clt_addr;  struct sockaddr_un srv_addr;  listen_fd=socket(PF_UNIX,SOCK_STREAM,0);  if(listen_fd<0)  {    perror("cannot create communication socket");    return 1;  }   //set server addr_param  srv_addr.sun_family=AF_UNIX;  strncpy(srv_addr.sun_path,UNIX_DOMAIN,sizeof(srv_addr.sun_path)-1);  unlink(UNIX_DOMAIN);  //bind sockfd & addr  ret=bind(listen_fd,(struct sockaddr*)&srv_addr,sizeof(srv_addr));  if(ret==-1)  {    perror("cannot bind server socket");    close(listen_fd);    unlink(UNIX_DOMAIN);    return 1;  }  //listen sockfd   ret=listen(listen_fd,1);  if(ret==-1)  {    perror("cannot listen the client connect request");    close(listen_fd);    unlink(UNIX_DOMAIN);    return 1;  }  //have connect request use accept  len=sizeof(clt_addr);  com_fd=accept(listen_fd,(struct sockaddr*)&clt_addr,&len);  if(com_fd<0)  {    perror("cannot accept client connect request");    close(listen_fd);    unlink(UNIX_DOMAIN);    return 1;  }  //read and printf sent client info  printf("/n=====info=====/n");  for(i=0;i<4;i++)  {    memset(recv_buf,0,1024);    int num=read(com_fd,recv_buf,sizeof(recv_buf));    printf("Message from client (%d)) :%s/n",num,recv_buf);   }  close(com_fd);  close(listen_fd);  unlink(UNIX_DOMAIN);  return 0;}
本文来自网络,不代表1号站长-站长学院|资讯交流平台立场。转载请注明出处: https://www.1cn.cc/fwq/Linux/9328.html
上一篇linux epoll机制详解
下一篇 Linux下将源文件编译成目标文件的过程解析
admin

作者: admin

这里可以再内容模板定义一些文字和说明,也可以调用对应作者的简介!或者做一些网站的描述之类的文字或者HTML!

为您推荐

评论列表()

    联系我们

    联系我们

    0898-88888888

    在线咨询: QQ交谈

    邮箱: email@wangzhan.com

    工作时间:周一至周五,9:00-17:30,节假日休息

    关注微信
    微信扫一扫关注我们

    微信扫一扫关注我们

    关注微博
    返回顶部