linux 本地通信实例 AF_UNIX close (sockfd)很重要
来源:互联网 发布:网络计划的绘制规则 编辑:程序博客网 时间:2024/05/01 11:16
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_un server_address; /*声明一个UNIX域套接字结构*/
struct sockaddr_un client_address;
int i, bytes;
char ch_send, ch_recv;
unlink ("server_socket"); /*删除原有server_socket对象*/
/*创建 socket, 通信协议为AF_UNIX, SCK_STREAM 数据方式*/
server_sockfd = socket (AF_UNIX, SOCK_STREAM, 0);
/*配置服务器信息(通信协议)*/
server_address.sun_family = AF_UNIX;
/*配置服务器信息(socket 对象)*/
strcpy (server_address.sun_path, "server_socket");
/*配置服务器信息(服务器地址长度)*/
server_len = sizeof (server_address);
/*绑定 socket 对象*/
bind (server_sockfd, (struct sockaddr *)&server_address, server_len);
/*监听网络,队列数为5*/
listen (server_sockfd, 5);
printf ("Server is waiting for client connect...\n");
client_len = sizeof (client_address);
/*接受客户端请求; 第2个参数用来存储客户端地址; 第3个参数用来存储客户端地址的大小*/
/*建立(返回)一个到客户端的文件描述符,用以对客户端的读写操作*/
client_sockfd = accept (server_sockfd, (struct sockaddr *)&server_address, (socklen_t*)&client_len);
if (client_sockfd == -1) {
perror ("accept");
exit (EXIT_FAILURE);
}
printf ("The server is waiting for client data...\n");
for (i = 0, ch_send = '1'; i < 5; i++, ch_send++) {
if ((bytes = read (client_sockfd, &ch_recv, 1)) == -1) {
perror ("read");
exit (EXIT_FAILURE);
}
printf ("The character receiver from client is %c\n", ch_recv);
sleep (1);
if ((bytes = write (client_sockfd, &ch_send, 1)) == -1) {
perror ("read");
exit (EXIT_FAILURE);
}
}
close (client_sockfd);
unlink ("server socket");
}
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
struct sockaddr_un address;
int sockfd;
int len;
int i, bytes;
int result;
char ch_recv, ch_send;
/*创建socket,AF_UNIX通信协议,SOCK_STREAM数据方式*/
if ((sockfd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
perror ("socket");
exit (EXIT_FAILURE);
}
address.sun_family = AF_UNIX;
strcpy (address.sun_path, "server_socket");
len = sizeof (address);
/*向服务器发送连接请求*/
result = connect (sockfd, (struct sockaddr *)&address, len);
if (result == -1) {
printf ("ensure the server is up\n");
perror ("connect");
exit (EXIT_FAILURE);
}
for (i = 0, ch_send = 'A'; i < 5; i++, ch_send++) {
if ((bytes = write(sockfd, &ch_send, 1)) == -1) { /*发消息给服务器*/
perror ("write");
exit (EXIT_FAILURE);
}
sleep (2); /*休息二秒钟再发一次*/
if ((bytes = read (sockfd, &ch_recv, 1)) == -1) { /*接收消息*/
perror ("read");
exit (EXIT_FAILURE);
}
printf ("receive from server data is %c\n", ch_recv);
}
close (sockfd);
return (0);
}
./sock_local_server
Server is waiting for client connect...
./sock_local_client
ensure the server is up
connect: Connection refused
./sock_local_server
Server is waiting for client connect...
The server is waiting for client data...
The character receiver from client is A
The character receiver from client is B
The character receiver from client is C
The character receiver from client is D
The character receiver from client is E
./sock_local_client
receive from server data is 1
receive from server data is 2
receive from server data is 3
receive from server data is 4
receive from server data is 5QQ 240136495
http://www.jsqj.cc 军事新闻 爱好者。
- linux 本地通信实例 AF_UNIX close (sockfd)很重要
- linux 本地通信实例 AF_UNIX close (sockfd)很重要
- linux 本地通信实例 AF_UNIX
- Linux本地socket通信--AF_UNIX
- 本地通信实例(AF_UNIX) socket协议通信
- 网络编程(33)—— 使用AF_UNIX构建本地通信的socket服务端和客户端
- 【C语言】——C语言和php通过AF_UNIX实现本地通信
- 一起talk C栗子吧(第一百五十六回:C语言实例--基于AF_UNIX域的流套接字通信)
- 一起talk C栗子吧(第一百五十七回:C语言实例--基于AF_UNIX域的数据报套接字通信)
- 使用 AF_UNIX 实现本机数据流通信
- AF_UNIX域或者AF_INET通信对比
- linux网络编程(本地通信, android)
- linux 本地socket通信
- Linux Socket学习 -- 无名套接字 AF_UNIX
- c语言udp通信实例(linux)
- c语言udp通信实例(linux)
- LINUX网络通信实例
- Llinux进程间通信-AF_UNIX 套接字编程
- centOS yum 安装mysql
- Java集合框架List,Map,Set等全面介绍
- 感慨以及牢骚
- leetcode Unique Binary Search Trees II
- Oracle 10g 中的递归查询(树型查询)
- linux 本地通信实例 AF_UNIX close (sockfd)很重要
- 关键词推荐工具中的用户引导机制之一
- 【Android开发】Android开发环境搭建----第一个Android程序Hello World(上)
- 开源代码最近20年的可视化历史
- 一个不错的素材网站-千图网
- 关键词推荐工具中的用户引导机制之二
- Oracle EBS R12 AP模块主要表结构整理
- 【Android开发】Android开发环境搭建----第一个Android程序Hello World(中)
- 千万级的mysql数据库与sql优化方法