为什么sock<0

violetci 2001-02-06 01:31:00
sock=socket(AF_INET,SOCK_STREAM,0);
if (sock<0){
perror("error socket id:");
exit(1);
}
else {
printf(" %d",sock);
}
程序执行的时候,sock判断小于0,然后执行了perror(error socket id:);
...全文
168 2 打赏 收藏 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
violetci 2001-02-07
  • 打赏
  • 举报
回复
嗯,这点你说得很对
不过我的只要问题不是出在这里,主要是因为没有调用WSAStartup()

你能介绍一点关于sock编程上面的书么?
我看的书上面的例程都不正确
niki 2001-02-06
  • 打赏
  • 举报
回复
在UNIX中所有句柄包括套接口(socket)句柄,都是非负的短整数,而且一些应用程序把这一假设视为真理(如所说你的程序)。Windows Sockets句柄则没有这一限制,除了INVALID_SOCKET不是一个有效的套接口外,套接口可以取从0到INVALID_SOCKET-1之间的任意值。

而在winsocket中,

typedef unsigned int u_int;
typedef u_int SOCKET;
#define INVALID_SOCKET (SOCKET)(~0)

(/*ie. 0xffffffff*/)

所以你的程序在windows下不能正常运行,将 sock < 0 改为 sock == NVALID_SOCKET
则在windows/unix下均可正常运行。(unix下INVALID_SOCKET好象是-1)
源码链接: https://pan.quark.cn/s/a376b5a3a265 在 Windows 操作系统中配置 GPU 的 CUDA 开发环境是一项具有高度必要性的工作,这对 GPU 计算效能与深度学习算法的达成具有决定性的作用。本文将详尽阐述在 Windows 系统中配置 CUDA 开发环境的操作流程,并且处理一些可能遭遇的挑战。 一、版本匹配的关键性 在配置 CUDA 开发环境之前,必须检查项目所应用的 TensorFlow 版本,并明晰 TensorFlow、Python、CUDA 以及 cuDNN 各组件之间的适配关系。这一环节极为关键,因为不同版本间存在一定的兼容性障碍。倘若版本不一致,可能会导致配置失败或引发其他并发症。 二、获取并配置 CUDA 在确认所需安装的版本之后,可从 NVIDIA 的官方网站获取对应的 CUDA 版本。下载完毕后,依照安装指引进行配置。在配置过程中,有几个重点环节需要留意: 1. CUDA 需要借助 C++ 编译器的支持,在 Windows 平台上必须安装 Visual Studio。若设备未预装 Visual Studio,在配置 CUDA 时会提示选择安装哪个版本。 2. CUDA 的路径应保持默认,以便于后续环境变量的配置。 三、配置完成后的验证 配置结束后,需要确认是否配置成功。主要运用 CUDA 自带的 deviceQuery.exe 和 bandwidthTest.exe 两个工具: 1. 通过 win+R 启动 cmd,切换至安装目录下的 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extra...

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧