达梦数据库[-70028]:Create SOCKET connection failure

最近测试达梦数据库,安装部署初始化完毕后连接数据库时发现该报错:

[-70028]:Create SOCKET connection failure

经过查看手册发现引起该问题的原因大致有三种:

1、使用非默认端口直连。

2、防火墙阻断。

3、初始化完数据库后未启动实例

我的是因为使用图形化创建了默认实例(端口:5236)然后又创建了一个自定义实例TEST(端口:5237),两个实例状态是,默认实例处于关闭状态,TEST实例处于OPEN状态,然后登录的时候使用的是默认登录(disql sysdba/xxxxxx),即连接5236端口。

解决方法:手动启动默认实例,方式有三种

systemctl start DmServiceDMSERVER.service  【root】

DmServiceDMSERVER start  【dmdba】

或者使用达梦数据库实例管理工具,dmdba用户执行/dm8/tool/dmservice.sh即可启动,启动实例后再次连接数据库即可正常连接。

另外补充一句,达梦的实例管理工具确实挺好用的,一目了然,操作也方便,有点小瑕疵就是资源占用可能有点高,虚拟机启动了一会这个界面就有点卡了。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用 C++ 多线程监听 socket 的示例代码: ```c++ #include <iostream> #include <cstdlib> #include <cstring> #include <thread> #include <chrono> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #include <netinet/in.h> void handle_connection(int client_socket) { // 处理与客户端的通信 char buffer[1024]; int n; while ((n = read(client_socket, buffer, sizeof(buffer))) > 0) { write(client_socket, buffer, n); memset(buffer, 0, sizeof(buffer)); } close(client_socket); } int main() { // 创建监听 socket int server_socket = socket(AF_INET, SOCK_STREAM, 0); if (server_socket == -1) { std::cerr << "Error: Failed to create socket.\n"; return EXIT_FAILURE; } // 绑定监听地址和端口 sockaddr_in server_addr; std::memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = INADDR_ANY; server_addr.sin_port = htons(8080); if (bind(server_socket, (sockaddr*) &server_addr, sizeof(server_addr)) == -1) { std::cerr << "Error: Failed to bind address.\n"; close(server_socket); return EXIT_FAILURE; } // 开始监听连接请求 if (listen(server_socket, SOMAXCONN) == -1) { std::cerr << "Error: Failed to listen for connections.\n"; close(server_socket); return EXIT_FAILURE; } std::cout << "Listening for connections on port 8080...\n"; // 接受连接请求并处理 while (true) { sockaddr_in client_addr; socklen_t client_addr_size = sizeof(client_addr); int client_socket = accept(server_socket, (sockaddr*) &client_addr, &client_addr_size); if (client_socket == -1) { std::cerr << "Error: Failed to accept connection.\n"; continue; } // 创建新线程处理与客户端的通信 std::thread connection_thread(handle_connection, client_socket); connection_thread.detach(); } close(server_socket); return EXIT_SUCCESS; } ``` 在这个示例代码中,我们首先创建了一个监听 socket,然后将其绑定到本地地址和端口上,并开始监听连接请求。每当有一个新的连接请求到达时,我们都会创建一个新的线程来处理与客户端的通信,而主线程则继续监听连接请求。对于每个连接,我们都使用一个单独的线程来处理,这样就可以同时处理多个连接,并提升应用程序的并发性能。在通信结束后,我们关闭与客户端的连接,并让线程自行结束。 请注意,这只是一个简单的示例代码,实际应用程序需要更加健壮和稳定,需要处理更多的错误情况,并采用更好的线程池或协程等技术来提升性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值