unix socket bind返回-1

环境:ubuntu18.0.4

正常流程:

使用CLion编写unix socket server端和client端,然后用gcc生成可执行文件;

以SOCK_STREAM类型创建server socket;

bind相应的地址;

listen客户端的连接;

accept接收客户端的连接;

测试很顺利;

将此demo移植到Android环境;

问题:

遇到bind返回-1的问题,由于前期没有判断这个返回值,所以遇到奇怪的问题,accept并没有被阻塞住,后来经过排查

扫描二维码关注公众号,回复: 16678814 查看本文章

是由于bind失败的问题;

原因:

由于在bind之前bind的文件已存在导致bind失败;

解决办法:

bind之前,判断该文件是否存在,若存在删除即可;

疑惑:

为什么在linux环境就没有这个问题,在android环境就有呢?

后续:在linux环境下没有问题的原因是:

/* delete the socket file */
unlink("server_socket");
/* create a socket */
int server_sockfd = socket(AF_UNIX, SOCK_STREAM, 0);

在创建socket之前调用了unlink方法

猜你喜欢

转载自blog.csdn.net/lan_yu_meng/article/details/116997153