Unix Socket - 辅助函数


本章描述了进行套接字编程时使用的所有辅助函数。其他帮助函数在章节中进行了描述 -端口和服务以及网络字节顺序

函数_

write函数尝试将buf指向的缓冲区中的 nbyte 字节写入与打开的文件描述符fildes关联的文件。

您还可以使用send()函数将数据发送到另一个进程。

#include <unistd.h>

int write(int fildes, const void *buf, int nbyte);

成功完成后,write() 返回实际写入与 fildes 关联的文件的字节数。该数字永远不会大于 nbyte。否则,返回-1。

参数

  • fildes - 它是套接字函数返回的套接字描述符。

  • buf - 它是指向您要发送的数据的指针。

  • nbyte - 要写入的字节数。如果nbyte为0,如果文件是普通文件,则write()将返回0并且没有其他结果;否则,结果未指定。

读取函数_

read函数尝试从与缓冲区 fildes 关联的文件中读取 nbyte 字节到 buf 指向的缓冲区中

您还可以使用recv()函数将数据读取到另一个进程。

#include <unistd.h>

int read(int fildes, const void *buf, int nbyte);

成功完成后,write() 返回实际写入与 fildes 关联的文件的字节数。该数字永远不会大于 nbyte。否则,返回-1。

参数

  • fildes - 它是套接字函数返回的套接字描述符。

  • buf - 读取信息的缓冲区。

  • nbyte - 要读取的字节数。

叉子功能_

fork函数创建一个新进程。称为子进程的新进程将是调用进程(父进程)的精确副本。子进程继承了父进程的许多属性。

#include <sys/types.h>
#include <unistd.h>

int fork(void);

成功完成后,fork()向子进程返回0,向父进程返回子进程的进程ID。否则返回-1给父进程,不创建子进程,并设置errno来指示错误。

参数

  • void - 这意味着不需要参数。

bzero函数_

bzero函数将nbyte空字节放入字符串s中。该函数用于将所有套接字结构设置为空值。

void bzero(void *s, int nbyte);

该函数不返回任何内容。

参数

  • s - 它指定必须用空字节填充的字符串。这将是一个指向套接字结构变量。

  • nbyte - 它指定要填充空值的字节数。这将是套接字结构的大小。

bcmp函数_

bcmp函数将字节字符串 s1 与字节字符串 s2 进行比较。假定两个字符串的长度均为 nbyte。

int bcmp(const void *s1, const void *s2, int nbyte);

如果两个字符串相同,则此函数返回 0,否则返回 1。当 nbyte 为 0 时,bcmp() 函数始终返回 0。

参数

  • s1 - 它指定要比较的第一个字符串。

  • s2 - 它指定要比较的第二个字符串。

  • nbyte - 它指定要比较的字节数。

bcopy函数_

bcopy函数将 nbyte 字节从字符串 s1 复制字符串 s2。重叠的字符串被正确处理。

void bcopy(const void *s1, void *s2, int nbyte);

该函数不返回任何内容。

参数

  • s1 - 它指定源字符串。

  • s2v - 它指定目标字符串。

  • nbyte - 它指定要复制的字节数。

memset函数_

memset函数还用于以与bzero相同的方式设置结构变量。看一下它的语法,如下所示。

void *memset(void *s, int c, int nbyte);

该函数返回一个指向void的指针;事实上,这是一个指向设置内存的指针,您需要相应地对其进行强制转换。

参数

  • s - 它指定要设置的源。

  • c - 它指定要在 nbyte 位置设置的字符。

  • nbyte - 它指定要设置的字节数。