一、Linux与服务器建立联系
在Linux环境下与服务器建立联系,通常涉及到网络编程的基础知识,包括套接字(socket)的创建、监听、接受连接等操作。
1.int server_init(int port)函数
函数的作用:
server_init`函数用于初始化服务器,创建套接字,绑定到指定端口,并设置为监听状态。
学习感悟:
套接字创建:学习如何使用`socket`函数创建一个套接字,理解套接字地址族(如AF_INET表示IPv4)和套接字类型(如SOCK_STREAM表示TCP流)。
地址绑定:理解`bind`函数如何将套接字绑定到一个端口上,以及如何指定地址结构来确保服务器可以接受来自任何地址的连接。
监听状态:通过`listen`函数设置套接字为监听状态,允许它接收来自客户端的连接请求。
端口复用:学习`SO_REUSEADDR`选项,它允许服务器在同一个端口上重启,即使之前的连接尚未完全关闭。
2.int waitForClient(int sockfd)函数
函数的作用:
waitForClient`函数通常用于在服务器端等待客户端的连接请求。参数`sockfd`是服务器的监听套接字描述符。
学习感悟:
阻塞与非阻塞:`waitForClient`通常是一个阻塞调用,意味着它会一直等待直到有客户端发起连接。这有助于服务器端在无连接时释放CPU资源,因为它不会占用CPU进行无效的轮询。
I/O多路复用:在实际应用中,如果服务器需要同时处理多个客户端,`waitForClient`可能需要结合I/O多路复用技术(如select、poll或epoll),以提高效率。
错误处理:在学习过程中,理解如何处理`waitForClient`可能出现的错误非常重要,比如网络错误、超时等,这些都需要适当的错误处理逻辑。
二、实操
1.Linux终端发送,TCP&UDP测试工具上接收
在Linux上用vim创建一个server.c代码,引入头文件#include "Smarthome.c",编写代码
打开TCP&UDP测试工具,创建链接(需要再linux终端上ifconfig查找自己的ip地址,最后拷贝到测试软件上),运行结果
2.Linux终端即可发送也可接收,TCP&UDP测试工具上接收,发送
在server.c代码中添加一个read函数用来接收测速软件内容
代码:
结果: