本帖最后由 guo__qiu 于 2012-04-06 20:31:03 编辑
真的不想粘代码的,可是怕说不清楚,所以请大家耐心瞅瞅。多谢!
在同一台电脑上打开两个终端。想实现服务器端创建一个管道,和两个新的线程,一个用来读管道,一个用来写管道 客户端创建一个管道和两个线程,一个用来读,一个用来写
程序如下:
#include
#include
#include
#include
#include
#include
#include
#define FIFOSER "/homework/pipe/fifoser" //管道的路径
#define FIFOUSR "/homework/pipe/fifousr"
void *serread() //服务器读端
{
int fd;
char buffer[100];
fd=open(FIFOUSR,O_RDONLY); //只读方式打开客户端进行读出
while(1)
{
sleep(1);
memset(buffer,'',sizeof(buffer));
read(fd,buffer,100);
printf("serread is :%s",buffer);
}
}
void *serwrite()
{
int fd;
char buffer[100];
memset(buffer,'',sizeof(buffer));
printf("wait for ser write:n");
scanf("%s",buffer);
fd=open(FIFOSER,O_WRONLY); //打开服务器自身端进行写入
while(buffer[0]!='Q') //知道输入Q退出
{
sleep(1);
write(fd,buffer,sizeof(buffer));
memset(buffer,'',sizeof(buffer));
printf("wait for ser write:n");
scanf("%s",buffer);
}
close(fd);
exit(EXIT_SUCCESS);
}
int main(int argc,char * argv[])
{
int fd;
pthread_t read_t,write_t;
unlink(FIFOSER);
mkfifo(FIFOSER,0744);
mkfifo(FIFOUSR,0744);
pthread_create(& write_t,NULL,(void *)*serwrite,NULL);//创建写线程
pthread_create(& read_t,NULL,(void *)*serread,NULL);//创建读线程
pthread_join(write_t,NULL);
pthread_join(read_t,NULL);
return 1;
}
客户端和服务端基本相同,请耐心看看,感谢ing
代码如下:
#include
#include
#include
#include
#include
#include
#include
#define FIFOSER "/homework/pipe/fifoser"
#define FIFOUSR "/homework/pipe/fifousr"
void *usrread()
{
int fd;
char buffer[100];
fd=open(FIFOSER,O_RDONLY);
while(1)
{
sleep(1);
memset(buffer,'',sizeof(buffer));
read(fd,buffer,100);
printf("usrread is :%s",buffer);
}
}
void *usrwrite()
{
int fd;
char buffer[100];
memset(buffer,'',sizeof(buffer));
printf("wait for usr write:n");
scanf("%s",buffer);
fd=open(FIFOUSR,O_WRONLY);
while(buffer[0]!='Q')
{
sleep(1);
write(fd,buffer,sizeof(buffer));
memset(buffer,'',sizeof(buffer));
printf("wait for usr write:n");
scanf("%s",buffer);
}
close(fd);
exit(EXIT_SUCCESS);
}
int main(int argc,char * argv[])
{
int fd;
pthread_t read_t,write_t;
unlink(FIFOUSR);
mkfifo(FIFOUSR,0744);
mkfifo(FIFOSER,0744);
pthread_create(&write_t,NULL,usrwrite,NULL);
pthread_create(&read_t,NULL,usrread,NULL);
pthread_join(write_t,NULL);
pthread_join(read_t,NULL);
}
以上方法为什么不能实现qq聊天的功能呢?有两个管道,一个由服务器创建,一个由客户端创建,问题出在哪里?
|
自己调试下吧!调试过了,就发一些调试结果来看一下。
|
哥,先学点计算机网络知识再看你现在的问题就会觉得很好笑
|
看到你的 代码
就开始疼了
我很无语