zoukankan      html  css  js  c++  java
  • UNIX域套接字实例

    /* ************************************************************************
     *       Filename:  recv.c
     *    Description:  
     *        Version:  1.0
     *        Created:  2011年12月03日 20时52分08秒
     *       Revision:  none
     *       Compiler:  gcc
     *         Author:  YOUR NAME (), 
     *        Company:  
     * ************************************************************************/
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <sys/socket.h>
    #include <sys/un.h>
    
    #define PATH "/home/wenhao/unixdomain"
    
    int main(int argc ,char *argv[])
    {
    	int sockfd = 0;
    	struct sockaddr_un addr;
    	unlink(PATH);	
    	addr.sun_family = AF_UNIX;
    	strcpy(addr.sun_path,PATH);
    
    	unsigned int len = strlen(addr.sun_path) + sizeof(addr.sun_family);
    	sockfd = socket(AF_UNIX,SOCK_DGRAM,0);
    	if(sockfd < 0 )
    	{
    		perror("socket error");
    		exit(-1);
    	}
    	
    	if(bind(sockfd,(struct sockaddr *)&addr,len) < 0)
    	{
    		perror("bind error");
    		close(sockfd);
    		exit(-1);
    	}
    	printf("Bind is ok\n");
    
    	while(1)
    	{
    		char recv_buf[20] = "";
    		recvfrom(sockfd,recv_buf,sizeof(recv_buf),0,(struct sockaddr*)&addr,&len);
    		printf("Recv: %s\n",recv_buf);
    	}
    	return 0;
    }
    

    发送:

    /* ************************************************************************
     *       Filename:  send.c
     *    Description:  
     *        Version:  1.0
     *        Created:  2011年12月03日 20时42分37秒
     *       Revision:  none
     *       Compiler:  gcc
     *         Author:  YOUR NAME (), 
     *        Company:  
     * ************************************************************************/
    
    #include <stdio.h>
    #include <string.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <sys/socket.h>
    #include <sys/un.h>
    
    #define PATH "/home/wenhao/unixdomain"
    
    int main(int argc,char *argv[])
    {
    	int sockfd = 0;
    	struct sockaddr_un addr;
    	bzero(&addr,sizeof(addr));
    
    	addr.sun_family = AF_UNIX;
    	strcpy(addr.sun_path,PATH);
    
    	sockfd = socket(AF_UNIX,SOCK_DGRAM,0);
    	if(sockfd < 0)
    	{
    		perror("socket error");
    		exit(-1);
    	}
    
    	while(1)
    	{
    		static int counter = 0;
    		char send_buf[20] = "";
    		counter++;
    		sprintf(send_buf,"Counter is %d",counter);
    		int len = strlen(addr.sun_path)+sizeof(addr.sun_family);
    		sendto(sockfd,send_buf,strlen(send_buf),0,(struct sockaddr*)&addr,len);
    		printf("Send: %s\n",send_buf);
    		sleep(1);
    	}
    	return 0;
    }
    
  • 相关阅读:
    oracle如何在所有procedure里搜索某些关键字, 存储过程
    Delphi 中文件的操作FileOpen
    【oracle】varchar和varchar2区别
    Delphi 2010 新增功能之: IOUtils 单元(6): TPath(结构体) 的方法与属性
    oracle如何在所有procedure里搜索某些关键字, 存储过程
    Delphi ADOConnection连接 sqlserver
    一种在SQLServer中实现Sequence的高效方法
    SQL Server 序列(SEQUENCE)使用
    [惠普HP] HP1215出现硒鼓底灰刮板拆机图解教程
    记录一下 山客 BK650 UPS 的配置软件下载地址
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2274973.html
Copyright © 2011-2022 走看看