c - c语言的socket编程中,为什么要在server程序中指定socket地址?

标签 c sockets

在c语言的socket编程中,为什么要在server程序中指定socket地址? 我无法理解为什么要在服务器程序中指定套接字地址,因为我们在客户端程序中指定套接字地址,需要在服务器程序中指定什么。

代码如下:

bzero((char *)&serv_addr,sizeof(serv_addr));

serv_addr.sin_family=AF_INET;

serv_addr.sin_addr.s_addr=inet_addr(argv[1]);

serv_addr.sin_port=htons(atoi(argv[2]));

最佳答案

大多数服务器没有明确指定套接字地址,它们使用INADDR_ANY(作为@ybo 地址)。

然而,服务器可能指定地址的原因是为了控制客户端到达哪个接口(interface)。例如,您可以绑定(bind)到地址 127.0.0.1 (localhost) 以确保客户端仅在本地计算机上运行,​​从而降低与远程连接相关的安全风险。您还可以显式绑定(bind)到外部端口,以便更好地沙盒远程客户端。

关于c - c语言的socket编程中,为什么要在server程序中指定socket地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15947411/

相关文章:

C++ 非阻塞读取

visual-studio - 在Visual Studio中进行负载测试期间的套接字异常

php - PHP 如何优雅地关闭本地套接字连接...?

c - 在 C 中写入文件时添加到缓冲区的额外字符

c++ - 在运行时格式化字符串

c - 如何在循环中从服务器向客户端接收和发送数据

C++检测客户端是否关闭连接(多套接字)

c - 从 C 中的多个整数创建 String(char*)

c - 在将输入作为 shell 命令传递给 exe 时,可以将文件替换为缓冲区吗?

c - 忽略我不想复制到文本文件中的字符串