小编Fra*_*ank的帖子

Linux C 原始套接字 TCP 握手

我正在尝试使用 C 中的原始套接字(在 Debian 系统上)创建 TCP 连接,但我很难让它工作。它会发送一个数据包,但我没有从服务器得到任何响应。我已经测试并比较了该数据包与从 nmap 发送的数据包,我看不到任何重大差异。

\n\n

这是服务器端收到的TCP数据包,服务器端从不发送SYN ACK数据包(我在服务器端使用Wireshark进行监控)

\n\n
No.     Time           Source                Destination           Protocol Length Info\n     75 1.893700000    192.168.1.129         192.168.1.114         TCP      74         56540\xe2\x86\x92445 [SYN] Seq=0 Win=1024 Len=0 MSS=1460 SACK_PERM=1 WS=128 TSval=863195 TSecr=0\n\nFrame 75: 74 bytes on wire (592 bits), 74 bytes captured (592 bits) on interface 0\nEthernet II, Src: Vmware_77:f0:a0 (00:0c:29:77:f0:a0), Dst: IntelCor_07:f9:e5     (e8:b1:fc:07:f9:e5)\nInternet Protocol Version 4, Src: 192.168.1.129 (192.168.1.129), Dst: 192.168.1.114 (192.168.1.114)\nVersion: 4\nHeader Length: 20 bytes\nDifferentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00: Not-ECT …
Run Code Online (Sandbox Code Playgroud)

c tcp

5
推荐指数
1
解决办法
2945
查看次数

SQLBindParameter 和 SQLExecute 返回 SQL_NEED_DATA

我正在开发一个与 Windows 2008 R2 上运行的 mssql 数据库交互的 C 应用程序。我能够连接到数据库并运行特定查询,但是当我使用 SQLBindParameter 时,事情就会崩溃。

我在 stackoverflow 上发现了一篇文章,似乎是同样的问题,但解决方案似乎并不相同(Problems getting SQLBindParameter to work in C++)。根据 C 数据类型 SQL_C_CHAR 是正确的(https://msdn.microsoft.com/en-us/library/windows/desktop/ms714556(v=vs.85).aspx

这是代码

    SQLINTEGER strlentemp = SQL_NTS;
    SQLCHAR *sqlstmt = "select * from detail where name = ?";
    status = SQLPrepare(hstmt->hstmt, sqlstmt, SQL_NTS);
    unsigned char *temp = "myvalue";
    status = SQLBindParameter(hstmt->hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_VARCHAR, 50,0,temp,strlen(temp),&strlentemp);
    status = SQLExecute(hstmt->hstmt);
Run Code Online (Sandbox Code Playgroud)

SQLExecute 将返回 99,SQL_NEED_DATA。如果我在 SQLExecute 之后调用 SQLParamData,它也会返回 99,并且 ValuePtrPtr (第二个参数)是我传递的数据(临时)。

有什么想法吗?我缺少什么?

c sql-server

5
推荐指数
1
解决办法
1245
查看次数

标签 统计

c ×2

sql-server ×1

tcp ×1