您的位置:首页 > 其它

无亲缘关系的客户与服务器

2016-05-17 20:29 471 查看
今天给出一个简单的无亲缘关系的客户端与服务器之间的通信,客户端发送服务器端进行接收,服务器端发送客户端进行接收。

服务器端的程序:

#include"utili.h"

int main(int argc,char**argv)
{

int write_fd;
int read_fd;

//mkfifo用于创建有名管道,
int res = mkfifo(write_fifo_name,O_CREAT|O_EXCL|S_IRUSR|S_IWUSR);
if(res == -1){
printf("make write fifo error.\n");
exit(1);
}

//打开文件write_fifo_name,以只读方式打开
write_fd = open(write_fifo_name,O_WRONLY);
if(write_fd == -1){
printf("open write fifo error.\n");
unlink(write_fifo_name);
exit(1);
}

printf("Wait Client Connect........\n");
//以只读方式打开read_fifo_name文件
while((read_fd = open(read_fifo_name,O_RDONLY)) == -1){
sleep(1);
}

printf("Client Connect Ok.\n");

char sendbuf[256];
char recvbuf[256];

while(1){
printf("Ser:>");
scanf("%s",sendbuf);
//将sendbuf的内容写到write_fd中
if((strncmp(sendbuf,"quit",4)) == 0){
unlink(write_fifo_name);
break;
}
write(write_fd,sendbuf,strlen(sendbuf) + 1);
read(read_fd,recvbuf,256);
printf("Cli:>%s\n",recvbuf);
}

return 0;
}


客户端的程序:

#include"utili.h"

int main(int arhc,char**argv)
{
int write_fd;
int read_fd;

int res = mkfifo(read_fifo_name,O_CREAT|O_EXCL|S_IRUSR|S_IWUSR);
if(res == -1){
printf("make read fifo error.\n");
exit(1);
}

read_fd = open(write_fifo_name,O_RDONLY);
if(read_fd == -1){
printf("Server Error.\n");
unlink(read_fifo_name);
exit(1);
}

write_fd = open(read_fifo_name,O_WRONLY);
if(write_fd == -1){
printf("Client Connect Server Error.\n");
exit(1);
}

char sendbuf[256];
char recvbuf[256];
while(1){
read(read_fd,recvbuf,256);
printf("Ser:>%s\n",recvbuf);
printf("Cli:>");
scanf("%s",sendbuf);
if((strncmp(sendbuf,"quit",4)) == 0){
unlink(read_fifo_name);
break;
}
write(write_fd,sendbuf,strlen(sendbuf) + 1);
}
return 0;
}


头文件uitil.h

#pragma once

#include<iostream>
#include<unistd.h>
#include<stdio.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<string.h>
#include<stdlib.h>
using namespace std;

const char *write_fifo_name = "write_fifo";
const char *read_fifo_name = "read_fifo";
#define FILE_MODE O_CREAT|O_EXCL|S_IWUSR|S_IRUSR


程序执行结果:

服务器端:



客户端:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: