【发布时间】: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,但我意识到我真的很愚蠢。
-
我很想知道你认为应该发生什么......