首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试侦听端口时没有任何反应

尝试侦听端口时没有任何反应
EN

Stack Overflow用户
提问于 2014-10-15 07:05:54
回答 3查看 48关注 0票数 0

我正在试着写一个非常简单的程序,它只监听一个预定义的port.here的代码:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
int main(int argc, char *argv[])
{
int sockfd;
struct addrinfo hints,*res;
memset(&hints,0,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_STREAM;
hints.ai_flags=AI_PASSIVE;

getaddrinfo(NULL,"5050",&hints,&res); 
sockfd=socket(res->ai_family,res->ai_socktype,res->ai_protocol);
bind(sockfd,res->ai_addr,res->ai_addrlen); //returns 0(success)
listen(sockfd,1);//returns 0(success)
return 0;
}

但是没有任何侦听的迹象。我使用netstat -l命令检查程序是否正在侦听。

EN

回答 3

Stack Overflow用户

发布于 2014-10-15 07:12:27

您缺少一个accept()调用。

此外,您正在退出程序。

socket将仅在您的进程期间处于活动状态。

票数 1
EN

Stack Overflow用户

发布于 2014-10-15 07:11:38

您已经拥有了大部分的部分,但是忘记了调用accept()。否则,您的程序可能只会快速返回,而不会做任何有用的事情。

票数 0
EN

Stack Overflow用户

发布于 2014-10-15 07:21:30

您的程序确实会监听,但它会立即退出,因此它所做的任何事情都会消失在以太中。如果你想接受连接,你必须调用accept()

您还需要对这些调用中的每一个进行错误检查。你不能简单地假设他们都成功了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26371875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档