在C语言中, 可以使用 socket 函数来映射端口.
如果你想要使用 TCP 协议, 可以这样:
#include <sys/socket.h>
#include <netinet/in.h>
int main() {
int sockfd;
struct sockaddr_in addr;
sockfd = socket(AF_INET, SOCK_STREAM, 0); // 创建 socket
if (sockfd < 0) {
// 创建 socket 失败
}
addr.sin_family = AF_INET; // 设置协议族
addr.sin_port = htons(80); // 设置端口, htons 函数将主机字节序转换为网络字节序
addr.sin_addr.s_addr = INADDR_ANY; // 设置地址, INADDR_ANY 表示接受任意地址的连接
// 绑定 socket 和地址
if (bind(sockfd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
// 绑定失败
}
// 启动监听, 最多允许 5 个客户端连接
if (listen(sockfd, 5) < 0) {
// 监听失败
}
// 进入循环, 不断接受客户端连接
while (1) {
int client_sockfd;
struct sockaddr_in client_addr;
socklen_t client_addr_len = sizeof(client_addr);
client_sockfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_addr_len);
if (client_sockfd < 0) {
// 接受连接失败
}
// 处理客户端请求
// ...
// 关闭客户端 socket
close(client_sockfd);
}
// 关闭服务端 socket
close(sockfd);
return 0;
}
如果你想要使用 UDP 协议, 可以这样:
``` #include <sys/socket.h> #include <netinet/in.h>
int main() { int sockfd; struct sockaddr_in addr;
sockfd =