返回介绍

套接字不是传统意义上的数据流

发布于 2024-10-10 23:21:39 字数 1830 浏览 0 评论 0 收藏 0

到目前为止,你见过的数据流都一样,不管是连接文件的数据流,还是连接标准输入或输出的数据流,都可以用

fprintf() 和 fscanf() 与它们通信。但套接字有一点点不同,套接字是双向的,它既可以用作输入也可以用作输出,也就是说要用其他函数和它通信。

如果想向套接字输出数据,就要用 send() 函数,而不是 fprintf() 。

记住:一定要检查系统调用的返回值,send() 也不例外。网络错误随处可见,服务器必须处理它们。

百宝箱

如何选择端口号?为服务器程序选择端口号时千万要小心。现如今有各式各样的服务器,所以不要选其他程序用过的端口号。在 Cygwin 和大多数 Unix 中有一个/etc/services 文件,它列出了很多常用服务使用的端口号。在选择端口时必须确保没有其他程序用过。端口号从 0 开始一直到 65535,首先你需要决定用小号码(1024 以下)还是大号码。很多计算机中,只有超级用户或管理员才有资格使用 1024 号以下的端口,因为小号的端口留给了一些知名服务,如网页服务器和邮件服务器。操作系统只允许管理员使用这些端口,防止普通用户启动一些多余的服务。通常情况下,请使用 1024 号以上的端口。

 

磨笔上阵

下面这个服务器会为已连接的客户端随机提出忠告,但它少了很多系统调用。你需要把它们补全。再有,程序向客户端发送一条忠告,然后就结束了。其中有一段代码需要循环执行,请问是哪段?

 

磨笔上阵解答

下面这个服务器会为已连接的客户端随机提出忠告,但它少了很多系统调用。你需要把它们补全。再有,程序向客户端发送一条忠告,然后就结束了。其中有一段代码需要循环执行,请问是哪段?

试驾

编译服务器,看看会发生什么。

趁服务器还在运行,我们打开另一个控制台,用 telnet 连接几次试试。

太好了,服务器正确运行了,你用 127.0.0.1 作为 IP 地址,因为客户端和服务器在同一台机器上运行。你也可以从其他地方连接服务器,我们将得到同样的答复。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文