gpt4 book ai didi

c中的客户端只能连接到服务器一次

转载 作者:行者123 更新时间:2023-12-02 01:01:58 24 4
gpt4 key购买 nike

我正在用 C 编写并创建一个服务器,该服务器一次接收来自多个不同客户端的连接。但是,在第一个连接关闭后,将无法再次连接到服务器。

服务器.c:

#include <stdio.h>
#include <stdlib.h>

#include <sys/socket.h>
#include <sys/types.h>

#include <netinet/in.h>
#include <unistd.h>

int main() {
while(1) {
char server_message[256] = "You have reached the server!";

//Create a socket
int server_socket;
server_socket = socket(AF_INET, SOCK_STREAM, 0);

//Define the server address
struct sockaddr_in server_address;
server_address.sin_family = AF_INET;
server_address.sin_port = htons(9002);
server_address.sin_addr.s_addr = INADDR_ANY;

//Bind the socket to the IP and port
bind(server_socket, (struct sockaddr *) &server_address,
sizeof(server_address));

//Listen for connections
listen(server_socket, 5);

//Accept the connection
int client_socket = accept(server_socket, NULL, NULL);

//Send message
send(client_socket, server_message, sizeof(server_message), 0);

//Close the socket
close(server_socket);
}
return 0;
}

最佳答案

您正在循环创建一个服务器套接字、接受一个连接、处理它,然后关闭您的服务器套接字。最后一个操作将丢弃所有挂起的连接。您的循环应该在 listen() 调用之后立即开始,并在关闭客户端套接字之后终止,之前关闭服务器套接字。

您还忽略了 socket()、bind()、listen()、accept()、send()close() 上的所有错误。不要那样做。

关于c中的客户端只能连接到服务器一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49971613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com