无法连接指定的描述符

本文介绍如何检查Oracle数据库中listener.ora和tnsnames.ora文件的host设置,并确保其与机器名称一致。若不一致,则需进行修改并重启监听服务。

 

D:\oracle\product\10.2.0\db_1\network\ADMIN

检查

1.listener.ora里面的host

2.tnsnames.ora里面的host

是否和机器名称一样。修改以后,重启监听服务。

 

监听程序中无法识别连接描述符的问题,通常是由于网络通信相关的错误或者代码逻辑设计缺陷所导致。下面将从几个常见角度分析可能的原因及解决方案。 ### 1. **检查套接字创建与绑定过程** - 确保在网络应用初始化阶段正确地生成了socket,并将其绑定了指定地址端口。 ```c int sockfd = socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serv_addr; memset(&serv_addr, '0', sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl(INADDR_ANY); serv_addr.sin_port = htons(PORT); if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0) error("ERROR on binding"); ``` ### 2. **确认listen函数调用无误** - 在成功建立并绑定套接字之后需要设置为侦听模式,这里要注意backlog值是否合理,默认等待队列长度应该足够容纳预期并发量。 ```c listen(sockfd, SOMAXCONN); // 设置最大允许链接数 ``` ### 3. **排查accept接收部分是否有异常处理机制缺失** - 当客户端发起请求接入服务器时,服务端通过accept()接受新连接返回一个新的文件描述符用于单独通讯交互。此时需验证此段落是否存在潜在问题例如未考虑EINTR中断信号等情况。 ```c while(1){ clnt_fd = accept(listenfd,&clntaddr,&clntlen); if(clnt_fd == -1 ){ perror("Error in accepting connection"); continue; } fork(); /* 创建子进程 */ } ``` ### 解决方案建议 - 对于非阻塞I/O模型还需要额外关注select/poll/epoll等相关API的使用规范; - 强化对各类系统调用失败后的errno状态码解读能力有助于定位根本原因。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值