可以实现通信的代码实现,拿去用!

原文来自:http://blog.chinaunix.net/uid-26790551-id-3171897.html

服务器端:

#include

#include

#include

#include

#include

#include

#define UNIX_DOMAIN "/tmp/UNIX.domain"

int main(void)

{

int lsn_fd, apt_fd;

struct sockaddr_un srv_addr;

struct sockaddr_un clt_addr;

socklen_t clt_len;

int ret;

int i;

char recv_buf[1024];

char send_buf[1024];

//create socket to bind local IP and PORT

lsn_fd = socket(PF_UNIX, SOCK_STREAM, 0);

if(lsn_fd < 0)

{

perror("can't create communication socket!");

return 1;

}

//create local IP and PORT

srv_addr.sun_family = AF_UNIX;

strncpy(srv_addr.sun_path, UNIX_DOMAIN, sizeof(srv_addr.sun_path) - 1);

unlink(UNIX_DOMAIN);

//bind sockfd and sockaddr

ret = bind(lsn_fd, (struct sockaddr*)&srv_addr, sizeof(srv_addr));

if(ret == -1)

{

perror("can't bind local sockaddr!");

close(lsn_fd);

unlink(UNIX_DOMAIN);

return 1;

}

//listen lsn_fd, try listen 1

ret = listen(lsn_fd, 1);

if(ret == -1)

{

perror("can't listen client connect request");

close(lsn_fd);

unlink(UNIX_DOMAIN);

return 1;

}

clt_len = sizeof(clt_addr);

while(1)

{

apt_fd = accept(lsn_fd, (struct sockaddr*)&clt_addr, &clt_len);

if(apt_fd < 0)

{

perror("can't listen client connect request");

close(lsn_fd);

unlink(UNIX_DOMAIN);

return 1;

}

printf("received a connection\n");

printf("send message to client\n");

memset(send_buf, 0, 1024);

strcpy(send_buf, "Hello, you have connected to server succeed");

int snd_num = write(apt_fd, send_buf, 1024);

if(snd_num != 1024)

{

perror("send messge to client failed\n");

close(apt_fd);

close(lsn_fd);

unlink(UNIX_DOMAIN);

return 1;

}

//read and printf client info

printf("============info=================\n");

for(i = 0; i < 4; i++)

{

memset(recv_buf, 0, 1024);

int rcv_num = read(apt_fd, recv_buf, sizeof(recv_buf));

printf("Message from client (%d) :%s\n", rcv_num, recv_buf);

}

}

close(apt_fd);

close(lsn_fd);

unlink(UNIX_DOMAIN);

return 0;

}

客户端:

#include

#include

#include

#include

#include

#define UNIX_DOMAIN "/tmp/UNIX.domain"

int main(void)

{

int connect_fd;

struct sockaddr_un srv_addr;

char snd_buf[1024];

char rcv_buf[1024];

int ret;

int i;

//create client socket

connect_fd = socket(PF_UNIX, SOCK_STREAM, 0);

if(connect_fd < 0)

{

perror("client create socket failed");

return 1;

}

//set server sockaddr_un

srv_addr.sun_family = AF_UNIX;

strcpy(srv_addr.sun_path, UNIX_DOMAIN);

//connect to server

ret = connect(connect_fd, (struct sockaddr*)&srv_addr, sizeof(srv_addr));

if(ret == -1)

{

perror("connect to server failed!");

close(connect_fd);

unlink(UNIX_DOMAIN);

return 1;

}

//receive message from server

memset(rcv_buf, 0, 1024);

int rcv_num = read(connect_fd, rcv_buf, sizeof(rcv_buf));

printf("receive message from server (%d) :%s\n", rcv_num, rcv_buf);

//printf("\n");

//send message to server

memset(snd_buf, 0, 1024);

strcpy(snd_buf, "message from client");

printf("sizeof(snd_buf): %d\n", sizeof(snd_buf));

sleep(2000);

//send message to server

for(i = 0; i < 4; i++)

{

write(connect_fd, snd_buf, sizeof(snd_buf));

}

close(connect_fd);

return 0;

}

linux进程socket通信,linux进程间通信--socket套接字 实例代码相关推荐

  1. java socket分包粘包 代码_分享java中处理socket通信过程中粘包情况的实例代码

    本篇文章主要介绍了java中处理socket通信过程中粘包的情况,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这两天学习了java中处理socket通信过程中粘包的情况,而且很重要,所以,今天添 ...

  2. linux 服务器间通信,Linux 下的进程间通信:套接字和信号 | Linux 中国

    原标题:Linux 下的进程间通信:套接字和信号 | Linux 中国 学习在 Linux 中进程是如何与其他进程进行同步的. -- Marty Kalin 本篇是 Linux 下(IPC)系列的第三 ...

  3. linux进程的通信文件映射,Linux进程间通信 -- mmap函数的使用

    mmap/munmap函数 函数原型 #include void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t ...

  4. linux篇【12】:网络套接字<前序>—网络基础+udp套接字

    目录 一.网络基础 1.认识 "协议" 举例: 2.协议分层 (1)软件分层 (2)协议分层 3.OSI七层模型 4.TCP/IP五层(或四层)模型 5.网络和操作系统之间的关系 ...

  5. 【Linux网络编程】原始套接字实例:MAC 地址扫描器

    如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip.port.使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 ...

  6. linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包

    以太网报文格式: IP 报文格式: UDP 报文格式: 校验和函数: /*******************************************************功能:校验和函数参 ...

  7. socket bufferedinputstream通信读取不到服务器返回的响应_TCP角度看socket通信过程,socket怎么表示三次握手,四次挥手...

    什么是套接字? socket 的中文翻译过来就是"套接字".套接字是什么,它的英文含义:插座. Socket 就像一个电话插座,负责连通两端的电话,进行点对点通信,让电话可以进行通 ...

  8. Linux 网络编程——原始套接字实例:MAC 地址扫描器

    如果 A (192.168.1.1 )向 B (192.168.1.2 )发送一个数据包,那么需要的条件有 ip.port.使用的协议(TCP/UDP)之外还需要 MAC 地址,因为在以太网数据包中 ...

  9. 【Linux网络编程】原始套接字实例:发送 UDP 数据包

    以太网报文格式: 详细的说明,请看<MAC 头部报文分析>. IP 报文格式: 详细的说明,请看<IP 数据报格式详解>. UDP 报文格式: 详细的说明,请看<UDP ...

最新文章

  1. 模拟整个地球:英伟达Earth-2超级计算机即将上线
  2. unity3D小小白之雾效
  3. javascript捕获ocx事件
  4. python简单可视化聊天界面_如何用Python制作可视化输入界面
  5. 用aspx开发html5页面,ASP.NET使aspx页面能接受HTML,asp的页面传送的文件-.NET教程,Asp.Net开发...
  6. Prim最小生成树算法
  7. 菜鸟关于mvc导出Excel的想法
  8. C++基础:C++的封装/继承/多态
  9. word 公式编辑器 键入技巧 | 写数学作业必备速查表
  10. iOS高阶程序员必修——汇编
  11. 【扩频通信】第五章 扩频信号解扩和解调
  12. cad详图怎么画_CAD结构图怎么画?手把手教你CAD结构图的绘制方法
  13. 挖金矿问题java课程设计_动态规划--国王挖金矿问题
  14. Office2021版安装出错
  15. 双非上岸北大计算机,双非二战考研上岸北大汇丰经验贴
  16. 迅雷虚拟服务器,迅雷离线服务器UA
  17. git branch -vv
  18. 【思特奇杯·云上蓝桥-算法训练营】第1周:哥德巴赫分解
  19. C#毕业设计——基于C#+asp.net+sqlserver的视频点播系统设计与实现(毕业论文+程序源码)——视频点播系统
  20. RestTemplate请求Could not extract response: no suitable HttpMessageConverter found for response type..

热门文章

  1. yii mysql 主从_mysql主从同步实践 YII
  2. 少儿编程100讲轻松学python(九)-python如何判断字符串是否为整数
  3. C语言程序设计二期末考试,9第二学期期末考试《C语言程序设计》A
  4. 2020年前端招聘技术概览
  5. android sqlite批量操作,Android: SQLite批量插入数据的最佳实践
  6. 富文本编辑器、日期选择器、软件天堂、防止XSS攻击、字体icon、转pdf
  7. React.js 入门与实战课程思维导图
  8. 6-1 数组函数练习
  9. [贝聊科技]网页端「应用跳转」技术实现演变
  10. CSS的常用属性(二)