【问题标题】:Server not accepting connecting to client服务器不接受连接到客户端
【发布时间】:2021-11-01 15:59:42
【问题描述】:

我正在尝试制作一个简单的 Socket 程序,我现在能够创建一个服务器套接字,将服务器套接字绑定到一个端口并监听传入的连接,之后,当我尝试开始接受连接,什么都没有打印出来。

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

#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main(int argc, char *argv[]){
char buffer[1024] = {0};
char *mes = "peepeepoopoo";
struct sockaddr_in server;
int addr_size = sizeof(server);

//xxxxxxxx Creating the socket xxxxxxxx

int sockfd_server = socket(AF_INET, SOCK_STREAM, 0);
int client_socket;
if(sockfd_server < 0){
printf("Socket not created\n");
return -1;
}
puts("Socket created\n");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(8070);

//xxxxxxxx Binding xxxxxxx

if(bind(sockfd_server,(struct sockaddr*)&server, sizeof(server)) < 0){
printf("failed to bind\n");
return -1;
}
puts("binding completed\n");

//xxxxxxxx Listening xxxxxxxx

if (listen(sockfd_server,3) < 0)
{
printf("Listening error\n");
}
puts("Listening\n");

// none of the statements prints, almost like its frozen.

int new_Socket = accept(sockfd_server, (struct sockaddr*)&server, (socklen_t*)&addr_size);
if(new_Socket < 0){
printf("could not accept socker\n");
return -1;
}
puts("accepted\n");
int val = read(new_Socket,buffer, 1024);
printf("%s\n",buffer);
send(new_Socket, mes, strlen(mes), 0);

return 0;
}

我该怎么做才能解决这个问题?

【问题讨论】:

  • 不接受 what 连接?这里没有证据表明您已尝试连接到此服务器。 Ergo 它被阻塞 等待发生。这是按设计工作的。注意请正确格式化这个难以辨认的混乱。
  • 我同意@user207421 - 我刚刚测试了代码,它接受连接就好了。
  • 非常感谢您。我对此真的很陌生,所以我真的不明白为什么我没有得到预期的 o/p,但我意识到我真的很愚蠢。
  • 我很想知道你认为应该发生什么......

标签: c sockets


【解决方案1】:
  1. accept

如果队列中没有挂起的连接,并且套接字没有被标记为非阻塞,accept() 会阻塞调用者,直到连接存在。

问题:您是否将客户端连接到您的服务器?

  1. addr_size 被声明为 int,但在将其转换为 socklen_t 时作为参数传递。你能保证sizeof(int) == sizeof(socklen_t)吗?

  2. 您读入了buffer,但在使用格式说明符%s 将其传递给printf 之前不要对其进行空终止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 2011-02-08
    • 2022-01-17
    • 1970-01-01
    • 2013-12-26
    • 2023-04-09
    相关资源
    最近更新 更多