linux网络聊天室
痞子晶
大部分事情并不需要什么天赋或者激情才能完成,只要有切实可行的目标、合理的计划和风雨无阻的执行力就够了。
展开
-
linux c 下获取时间方法
Reference: http://net.pku.edu.cn/~yhf/linux_c/function/04.htmlasctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime,localtime 表头文件 #include 定义函数 char * asctime(const struct tm * ti转载 2016-08-16 15:09:56 · 384 阅读 · 0 评论 -
非阻塞 connect
非阻塞 connect:在一个 TCP 套接字被设置为非阻塞之后调用 connect ,connect 会立即返回 EINPROGRESS 错误,表示连接操作正在进行中,但是仍未完成,与此同时 TCP 三次握手操作会同时进行。在这之后,我们可以通过调用 select 来检查这个链接是否建立成功。非阻塞 connect 有三种用途:1.我们可以在 TCP 三次握手的同时做一些其它转载 2016-08-29 10:04:31 · 567 阅读 · 0 评论 -
线程终止——线程的返回值
线程终止 如果进程中的任一线程调用了exit,_Exit或者_exit,那么整个进程就会终止。与此类似,如果信号的默认动作是终止进程,那么,把该信号发送到线程会终止整个进程。单个线程可以通过下列三种方式退出,在不终止整个进程的情况下停止它的控制流。(1):从启动例程中返回,返回值是线程的退出码(2):线程可以被同一进程中的其他线程取消(3):线程调用转载 2016-08-20 23:28:26 · 5376 阅读 · 0 评论 -
问题解决:printf()函数无法打印
今天写聊天室项目,调试出了问题,查看了代码无法找到问题,于是用printf()逐行打印。问题定位很快,然而发现打印到一半,就无法显示。进过排查,这不是程序的问题,而是printf()函数无法打印。这个问题涉及到printf()输出缓冲的问题。对于标准输出设备stdout,输出一般都有缓冲,当遇到刷新标志或缓冲满时才把缓冲的数据输出到标准输出设备中。对于printf()函数,其使原创 2016-08-13 00:16:31 · 13200 阅读 · 0 评论 -
sqlite3解决A table inthe database is locked
昨天写sqlite3数据库插入函数,总是只能插入一条数据,第二次数据插入不了,得到的报错信息是rc = 6,A table inthe database is locked因为我在插入之前调用了sqlite3_prepare(),被操作的表被SQL 语句编译后的字节码绑定,所以我想应该使用函数sqlite3_finalize()释放分配给字节码的内存空间 sqlite3_finaliz原创 2016-08-14 09:04:16 · 1911 阅读 · 0 评论 -
聊天室项目服务器端的并发问题——使用线程池技术(1)
一、原因 之前在聊天室项目中,服务器端模型的选择了单客户端单线程,统一accept()的模型,大致就是一个在一个线程中循环accept接受客户端连接,接受到一个连接就创建一个专用线程。在客户端连接的时间段中,线程一直保持。 这种模型虽然比多进程并发模型更加优秀,如占用资源少,可以数据共享,响应快。但是如果考虑高并发的情况,例如在很短的时间有大量的用户请求需要处理,会极快的消耗掉服务器的线原创 2016-10-31 22:35:09 · 883 阅读 · 0 评论