我正在阅读 Beej 的指南,我想详细说明其中一个示例,一个流客户端/服务器示例。在示例中,服务器发送消息,客户端接收。
我想制作一个发送和接收消息的程序。在这种情况下,它将不再是服务器/客户端架构,因为以前的服务器和客户端都将执行相同的职责。它们会非常相似。
在示例中,服务器执行以下操作:
getaddrinfo(NULL, PORT, &hints, &p);
sockfd = socket(p->ai_family, p->ai_socktype, p->ai_protocol));
bind(sockfd, p->ai_addr, p->ai_addrlen);
listen(sockfd, BACKLOG);
new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
send(new_fd, "Hello, world!", 13, 0);
为了从同一个套接字接收消息,我需要添加什么?可能吗?
我尝试了许多不起作用的方法,例如尝试使用原始 socketfd 和使用目的地信息进行连接()。最后我使用了两个套接字并在 setsockopt() 的帮助下将它们绑定到同一个端口,但我想知道是否有更好或更有效的方法。