C++ 怎么使用SOCKET连接MySQL服务器?

我已经实现了部分MySQL协议的算法,但是客户端在Windows平台上没法正常和服务器通信。因为在和MySQL服务器建立连接之后,服务器会给客户端发送一个Greeting包,但是此时客户端的socket会自动回应一个空的ACK。实际上发送出去的ACK的尾部必须要带有MySQL的数据格式而不是空的ACK,不然服务器会自动断开连接。
问题已经解决:错误的原因是recv函数必须要向对方发送空的TCP,然后对方同样回复一个空的TCP后说明服务器已经发送完毕,但是MySQL服务器并不会回复空的TCP。解决方法就是设置TCP接收超时,然后循环接收,直到recv的返回值大于0。

第1个回答  2022-11-25
首先需要把mysql中的头文件和库文件放入到c++项目工程中

1.打开安装MySQL的目录,在windows系统中如果是默认路径,应该和我的是一样的:C:\Program Files\MySQL\MySQL Server 8.0
第2个回答  2022-11-24
首先需要把mysql中的头文件和库文件放入到c++项目工程中

1.打开安装MySQL的目录,在windows系统中如果是默认路径,应该和我的是一样的:C:\Program Files\MySQL\MySQL Server 8.0追问

个人感觉java版的mysql-connector弄得比较好,C++版本的API在部分电脑上会出现各种问题,比如指针指向0x000...、找不到dll等。

第3个回答  2022-11-23
最好找一些现成的api,否则每次sql做啥升级,你就头疼死了追问

C++的API有bug,不是找不到dll就是野指针。现阶段还在学习C++,不然也不会弄这个。这个问题你遇到过吗?

追答

这种问题应该很常见,很多不是库有问题,而是使用方法问题。很多程序员非常自信的觉得自己搞肯定更好,但是其实这都是不可能的。维护一个不是自己产品的C++库代价是非常高昂的,如果你刚刚学C++,就想都不要想。没有3-5个资深C++工程师你是搞不定的

追问

我压根就没想过长期维护,我只是想知道为什么mysql的socket能对TCP达到精细的控制。顺便方便我找工作。

相似回答