read的write函数写C语言,read(),write()函数与socket通信

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#includeint 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#includeint 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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值