Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17651
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 55
  • 用 户 组: 普通用户
  • 注册时间: 2013-02-15 11:38
文章分类

全部博文(5)

文章存档

2013年(5)

我的朋友

分类: LINUX

2013-03-01 13:45:15

read()函数,顾名思义,read即为读,从文件中读出。

用  法: int read(int handle, void *buf, int nbyte);

表头文件:#include

函数说明:
    read()会把参数handle所指的文件(可以是文件描述符)传送n byte个字节到buf所指的内存中。若参数nbyte为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,如果返回0,表示已到达文件尾或无可读取的数据。

write函数,顾名思义,write即为写,写入到一个文件中。

表头文件
#include
用法:
s write (int fd,const void * buf,size_t count);
 
函数说明:
write()会把参数buf所指的内存写入count个字节到参数fd所指的文件(文件描述符)内。当然,文件读写位置也会随之移动。
如果顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,存入errno中。

在操作系统中,设备都被称之为文件,i/o设备也可以成为i/o文件操作

在sock编程中用read和write进行通信操作是很常见的

以下一个小编程供大家参考

client.c

#include
#include
#include
#include
#include
#include
#include
#include
int main(void)
{
 struct sockaddr_in client_add;
 int client=socket(AF_INET,SOCK_STREAM,0);
 client_add.sin_family=AF_INET;
 client_add.sin_port=htons(8143);
 client_add.sin_addr.s_addr=inet_addr("127.0.0.1");
 connect(client,(struct sockaddr*)&client_add,sizeof(struct sockaddr));
 char buf[BUFSIZ];
 while(strcmp(buf,"exit")!=0)
 {
  memset(buf,0,BUFSIZ);
  fgets(buf);
  write(client,buf,strlen(buf)+1);\多加一个'\0'
   if(strcmp(buf,"exit")==0)
  {
   break;
  }
  memset(buf,0,BUFSIZ);
  read(client,buf,64);
  if(strcmp(buf,"exit")==0)
  {
   break;
  }
  puts(buf);
 }
 close(client);//关闭客户端
 return 0;
}

 

server.c

#include
#include
#include
#include
#include
#include
#include
#include
int main()
{
 struct sockaddr_in server_add;
 int server_id=socket(AF_INET,SOCK_STREAM,0);
 server_add.sin_family=AF_INET;
 server_add.sin_port=htons(8143);
 server_add.sin_addr.s_addr=inet_addr("127.0.0.1");
 bind(server_id,(struct sockaddr*)&server_add,sizeof(struct sockaddr));
 listen(server_id,2);
 int client_id=accept(server_id,NULL,NULL);
 char buf[BUFSIZ];
 while(strcmp(buf,"exit")!=0)
 {
  read(client_id,buf,64);
  if(strcmp(buf,"exit")==0)
  {
   break;
  }
  puts(buf);
  memset(buf,0,BUFSIZ);
  fgets(buf);
  write(client_id,buf,strlen(buf)+1);
  if(strcmp(buf,"exit\n")==0)
  {
   break;
  } 
 }
 close(client_id);
 close(server_id);
 return 0;
}



  
 

 
  

 

阅读(1501) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:一个可执行程序包含?

给主人留下些什么吧!~~