Linux 服务器编程
  • Introduction
  • First Chapter
  • 文件I/O
    • 基于文件描述符的I/O操作
      • Linux 文件系统
      • 常用文件操作函数
    • 基于流的I/O操作
  • I/O模型
    • 概念理解
    • 对比五种I/O模型
    • select、poll、epoll简介
  • TCP / IP
    • OSI七层协议模型与TCP/IP四层模型
  • Socket
    • 基础
      • 什么是socket?
      • IPV4 套接口地址结构
      • 网络字节序
      • 字节序转换函数与地址转换函数
    • TCP客户端/服务器模型
    • Socket 相关函数
      • 使用socket()函数创建套接字
      • 使用bind()和connect()函数
      • 使用listen()和accept()函数
      • 使用read()和write()函数
    • 回射客户端/客户端的实现
    • 附录*资料
  • 附录*Linux常见信号
  • 多进程编程
    • 共享内存
    • fork函数
    • fork与vfork的区别
  • 附录*资料
  • 五种I/O模型
Powered by GitBook
On this page

Was this helpful?

  1. Socket
  2. Socket 相关函数

使用read()和write()函数

使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。

两台计算机之间的通信相当于两个套接字之间的通信,在服务器端用 write() 向套接字写入数据,客户端就能收到,然后再使用 read() 从套接字中读取出来,就完成了一次通信。

write() 的原型为:

ssize_t write(int fd, const void *buf, size_t nbytes);

fd 为要写入的文件的描述符,buf 为要写入的数据的缓冲区地址,nbytes 为要写入的数据的字节数。

size_t 是通过 typedef 声明的 unsigned int 类型;ssize_t 在 "size_t" 前面加了一个"s",代表 signed,即 ssize_t 是通过 typedef 声明的 signed int 类型。

write() 函数会将缓冲区 buf 中的 nbytes 个字节写入文件 fd,成功则返回写入的字节数,失败则返回 -1。

read() 的原型为:

ssize_t read(int fd, void *buf, size_t nbytes);

fd 为要读取的文件的描述符,buf 为要接收数据的缓冲区地址,nbytes 为要读取的数据的字节数。

read() 函数会从 fd 文件中读取 nbytes 个字节并保存到缓冲区 buf,成功则返回读取到的字节数(但遇到文件结尾则返回0),失败则返回 -1。

Previous使用listen()和accept()函数Next回射客户端/客户端的实现

Last updated 5 years ago

Was this helpful?