我用纯C编写了这个小型服务器应用程序,它监听给定端口中的传入连接,这非常简单.
它与通常的套接字初始化过程一致,创建socket()然后bind()到端口,说它的a listen(),并且ifinitely循环select()等待传入的连接accept().
一切都很好,就像一个魅力,除了如果我让事情运行几个月,监听端口关闭,而应用程序服务器不知不觉地运行,因为我写它信任监听套接字不会关闭,如果没告诉.
所以问题是:为什么在没有我的应用程序关注的情况下关闭端口,我该怎么做以防止它发生?
这是预期的行为吗?我应该检查某种异常还是在监听套接字上进行"健康检查",以便在必要时重新打开它?
代码:https://gist.github.com/Havenard/e930be035a3bee75c018(是的,我知道我正在使用它0作为错误的提示,这是不好的实践和东西,但它与我在评论中解释的问题无关,当时我设置套接字文件描述符0是为了停止循环并关闭应用程序).
我试图做一个简单的INSERT,但我继续得到这个错误:
您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在'FROM,TO,ID,CURRENCY1,CURRENCY2,AMOUNT,NOTE,RATE)附近使用正确的语法('test','test2','dd',''在第2行
这是我的代码:
mysql_query("INSERT INTO WIRET
(FROM,TO,ID,CURRENCY1,CURRENCY2,AMOUNT,NOTE,RATE) VALUES('$from', '$to', '$ID', '$currency1', '$currency2', '$amount','$note', '$rate') ")
or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误?我从我工作的网站的另一个区域复制了这个脚本,我只是更改了值.