Chinaunix首页 | 论坛 | 博客
  • 博客访问: 848738
  • 博文数量: 156
  • 博客积分: 6553
  • 博客等级: 准将
  • 技术积分: 3965
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 18:36
文章存档

2012年(3)

2011年(43)

2010年(110)

分类: LINUX

2010-10-04 15:25:52

服务器端代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define  SA struct sockaddr
#define N 64

int main(int argc, char *argv[])
{
 int listenfd, connfd, nbyte;
 socklen_t addr_len;
 char buf[N];
 struct sockaddr_un myaddr, peeraddr;
 if (argc < 2)
 {
  printf("input format is: %s  ", argv[0]);
  exit(1);
 }
 //int socket(int domain, int type, int protocol);
 if ((listenfd = socket(PF_UNIX, SOCK_STREAM, 0)) == -1)
 {
  perror("socket fail");
  exit(1);
 }
 unlink(argv[1]);
    // int bind(int sockfd, const struct sockaddr *addr,
 //     socklen_t addrlen);
 bzero(&myaddr, sizeof(myaddr));
 myaddr.sun_family = PF_UNIX;
 strcpy(myaddr.sun_path, argv[1]);
 if (bind(listenfd, (SA *)&myaddr, sizeof(myaddr)) == -1)
 {
  perror("bind fail");
  exit(1);
 }
    // int listen(int sockfd, int backlog);
 if (listen(listenfd, 5) == -1)
 {
  perror("listen fail");
  exit(1);
 }
 //int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
    addr_len = sizeof(peeraddr);
 if ((connfd = accept(listenfd, (SA *)&peeraddr, &addr_len)) == -1)
 {
  perror("accept fail");
  exit(1);
 }
 //printf("the client is %s:%d\n", inet_ntoa(peeraddr.sin_addr), ntohs(cli_addr.sin_port));
 if ((nbyte = recv(connfd, buf, N, 0)) == -1)
 {
  perror("read fail\n");
  exit(1);
 }
 
 printf("recv from %s : %s", peeraddr.sun_path, buf);
 close(connfd);
 
 return 0;
}

 

客户端代码:


#include
#include
#include
#include
#include
#include
#include
#include
#include

#define N 64
#define  SA struct sockaddr

int main(int argc, char *argv[])
{
 int connfd;
 char buf[N];
 struct sockaddr_un ser_addr;

 if (argc < 2)
 {
  printf("input format is:%s  \n", argv[0]);
  exit(1);
 }
 
       //int connect(int sockfd, const struct sockaddr *serv_addr,
       //           socklen_t addrlen);
 bzero(&ser_addr, sizeof(ser_addr));
 ser_addr.sun_family = PF_UNIX;
 strcpy(ser_addr.sun_path, argv[1]);

 if ((connfd = socket(PF_UNIX, SOCK_STREAM, 0)) == -1)
 {
  perror("socket fail\n");
  exit(1);
 }

 if (connect(connfd, (SA *)&ser_addr, sizeof(ser_addr)) == -1)
 {
  perror("connect fail");
  exit(1);
 }

 strcpy(buf, "this is unix stream socket\n");
 send(connfd, buf, N, 0);

 return 0;
}
 



阅读(896) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~