c - 文件描述符和套接字文件描述符的区别

标签 c sockets

我可以将 open 调用返回的文件描述符绑定(bind)到套接字吗?

我正在尝试做类似的事情,

 filefd = open("path",O_RDWR);

 ...

 bind (filefd, (struct sockaddr *) &servaddr, sizeof(servaddr));
 connfd = accept (filefd, (struct sockaddr *) &cliaddr, &clilen);

为什么 accept 调用返回 -1?

最佳答案

从应用程序的角度来看,区别在于您如何创建和使用描述符。一些系统调用可以采用任何类型的描述符,而其他系统调用则需要特定类型的描述符。

在你的例子中是 bind如果您检查了错误,调用也会返回 -1。当系统调用返回 -1 时,您应该检查 errno看看出了什么问题。您可以使用 strerror获取错误的可打印字符串,或 perror直接打印。

关于c - 文件描述符和套接字文件描述符的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22499675/

相关文章:

java - 是否可以在客户端和服务器端关闭 Java 套接字?

c# - 专用网络上的套接字

c - 在C中为指向数组的指针分配内存

c - 删除C中的文本 block

python - 检查路径是否是 Python 2.7 中的套接字

sockets - 在 erlang 中编写并行 TCP 服务器

c++ ->>= 在 C 或 C++ 中的含义是什么?

C编程: a program that counts the number of words in a text file?

c - 如何在 ANSI/ISO C 中编写控制台菜单?

python - 在 Python 中通过 TCP 套接字发送 gzip 压缩数据