网络编程
nightelve
一个业余程序员
展开
-
通过SOCKET 得到IP地址
int getsockname( SOCKET s, struct sockaddr FAR *name, int FAR *namelen ); 只需知道连接的S转载 2008-01-24 15:46:00 · 10887 阅读 · 0 评论 -
各种压缩算法的比较
由于最近的项目中涉及到大数据量的传输,直接导致了客户端的带宽的紧张。特别是有些客户网络不好的情况。故现在考虑到使用压缩库来降低数据传输的量。通过别人的介绍,暂时将压缩库的目标定为:quicklz, zlib, snappy.quicklz: 这个谷歌了吧,号称是世界时最快,压缩比也不错的压缩算法。snappy: 这个是谷歌开源的压缩算法。大部分网友反映这个库在cpu转载 2013-08-08 05:29:32 · 11454 阅读 · 0 评论 -
网络游戏程序员须知 基础概念篇
本文为作者原创或翻译,转载请注明,不得用于商业用途。作者:[email protected]首发链接:http://blog.csdn.net/rellikt/archive/2010/09/12/5878447.aspx 介绍作为一个程序,你想过网络多人对战游戏是怎么做出来的吗?从外行的角度来看多人对战游戏是很神奇的:2个或者更多的玩家在同一个时间转载 2013-09-03 23:30:01 · 1220 阅读 · 0 评论 -
用 C/C++ 写 CGI 程序
其实用 C/C++ 写 CGI 程序非常简单,主要是要清楚什么是 CGI。 CGI全称 Common Gateway Interface (共同编程接口),是一种编程接口,不论什么语言,只要按照该接口的标准编写出来的程序,即可叫做 CGI 程序。CGI 程序的输入/输出是使用编程语言的标准输入/标准输出,所以用 C/C++ 来写 CGI 程序就好象写普通程序一样,不过还有几样东西要注意的。转载 2013-11-05 23:10:21 · 1683 阅读 · 0 评论 -
消息队列中间件的技术选型分析
消息中间件是一种由消息传送机制或消息队列模式组成的中间件技术,利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。目前业界有很多的MQ产品,像RabbitMQ、ActiveMQ、ZeroMQ等都是极好的消息中间件,但是我们在项目中该选择哪个更适合呢?本文针对以下几种消息队列产品作了评估比较:RabbitMQ、ZeroMQ、ActiveMQ、MSMQ、Redis、转载 2013-11-19 17:10:49 · 14796 阅读 · 3 评论 -
windows下的环境搭建配置redis
下载地址:https://github.com/dmajkic/redis/downloads 下载下来的包里有两个,一个是32位的,一个是64位的。根据自己的实情情况选择,我的是32bit,把这个文件夹复制到其它地方,比如D:\redis 目录下。打开一个cmd窗口 使用cd命令切换目录到d:\redis 运行 redis-server.exe redis.conf转载 2013-11-19 20:29:57 · 3718 阅读 · 0 评论 -
How to compile phpredis
How to compile phpredisInstall visual studio 2008 (express or professional). If using visual studio 2008 express, also install the latest windows SDK.Download PHP source codeExtract to C:\php\php-转载 2013-11-19 21:02:47 · 72 阅读 · 0 评论 -
Redis应用场景
Redis 开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringSorted set在具体描述这几种数据类型之前,我们先通过一张图了解下R转载 2013-11-21 02:26:42 · 2327 阅读 · 0 评论 -
Redis作者谈Redis应用场景
毫无疑问,Redis开创了一种新的数据存储思路,使用Redis,我们不用在面对功能单调的数据库时,把精力放在如何把大象放进冰箱这样的问题上,而是利用Redis灵活多变的数据结构和数据操作,为不同的大象构建不同的冰箱。希望你喜欢这个比喻。下面是一篇新鲜出炉的文章,其作者是Redis作者@antirez,他描述了Redis比较适合的一些应用场景,NoSQLFan简单列举在这里,供大家一览:转载 2013-11-21 01:45:11 · 1455 阅读 · 0 评论 -
redis读写性能测试
一、基础测试: redis读写性能测试redis官网测试读写能到10万左右,非常吸引人,我在研发环境对redis进行测试,发现redis的速度的确很快,此测试是为日后应用优化提供研发参考。由于受到网络环境的限制,本机是100M的网卡,最高10M/s的传输速度,所以当测试到每秒读取45000条时,测试机和测试服务器上传或者下载速度已经达到10M/s,基本到了网络瓶颈,无法再提高,这转载 2013-11-21 02:03:17 · 84858 阅读 · 5 评论 -
Redis 常见的性能问题和解决方法
1.Master写内存快照save命令调度rdbSave函数,会阻塞主线程的工作,当快照比较大时对性能影响是非常大的,会间断性暂停服务,所以Master最好不要写内存快照。2.Master AOF持久化如果不重写AOF文件,这个持久化方式对性能的影响是最小的,但是AOF文件会不断增大,AOF文件过大会影响Master重启的恢复速度。3.Master调用BGREWRI转载 2013-11-21 01:53:37 · 3835 阅读 · 0 评论 -
SOCKET通信中TCP、UDP数据包大小的确定
UDP和TCP协议利用端口号实现多项应用同时发送和接收数据。数据通过源端口发送出去,通过目标端口接收。有的网络应用只能使用预留或注册的静态端口;而另外一些网络应用则可以使用未被注册的动态端口。因为UDP和TCP报头使用两个字节存放端口号,所以端口号的有效范围是从0到65535。动态端口的范围是从1024到65535。 MTU最大传输单元,这个最大传输单元实际上和链路层协议有着密切转载 2013-08-08 05:27:25 · 1497 阅读 · 0 评论 -
IOCP的一些总结
1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合转载 2013-05-04 03:17:13 · 1185 阅读 · 0 评论 -
Doxygen 文档注释详解
Doxygen 自动生成文档 大家在平时的编程过程中,都会在代码中插入一些注释,对文件,类,函数,全局变量等进行简单说明.项目完成后,一般也要编写项目的文档,如何利用源代码及其中的注释,自动生成图文并茂的文档,就是下面要介绍的.1 工具 文档自动生成的工具软件,除了商业化的如Rational SoDA等,更有开源的Doc++和Doxygen等. 本文主要介绍功能全面的Dox转载 2008-05-31 09:41:00 · 6751 阅读 · 0 评论 -
AES算法解析(转载)
加密它:用新的高级加密标准(AES)保持你的数据安全原著:James McCaffrey 翻译:小刀人 原文出处:MSDN Magazine November 2003 (Encrypt It)本文的代码下载:msdnmag200311AES.exe (143KB)本文假设你熟悉 C# 和 位(bit)操作。 摘要 AES(The转载 2011-11-11 16:29:54 · 4780 阅读 · 0 评论 -
游戏服务器端构架
深入剖析MMORPG游戏服务器端的设计linux宝库 收集整理 作者:linux宝库 时间:2007-02-09 收藏本站 来自:linux宝库联系:linuxmine#gmail.com分类:[游戏策划]baidu转载 2007-08-10 17:26:00 · 1622 阅读 · 0 评论 -
IOCP模型与EPOLL模型的比较
IOCP模型与EPOLL模型的比较一:IOCP和Epoll之间的异同。异:1:IOCP是WINDOWS系统下使用。Epoll是Linux系统下使用。2:IOCP是IO操作完毕之后,通过Get函数获得一个完成的事件通知。Epoll是当你希望进行一个IO操作时,向Epoll查询是否可读或者可写,若处于可读或可写状态后,Epoll会通过epol转载 2012-12-01 22:18:51 · 596 阅读 · 0 评论 -
How to use epoll? A complete example in C
Network servers are traditionally implemented using a separate process or thread per connection. For high performance applications that need to handle a very large number of clients simultaneously,转载 2012-12-02 01:59:21 · 659 阅读 · 0 评论 -
网络协议栈中的 SO_REUSEADDR 选项
网络协议栈中的 SO_REUSEADDR 选项在lwip协议栈中,在tcp.c中有如下代码#if SO_REUSE && SO_REUSE_RXTOALL if ((broadcast || ip_addr_ismulticast(¤t_iphdr_dest)) && ((pcb->so_options & SOF_REUSEADDR)转载 2013-03-05 22:02:09 · 2405 阅读 · 0 评论 -
getaddrinfo()函数详解
getaddrinfo()函数详解 1. 概述IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以转载 2013-03-05 22:42:06 · 1817 阅读 · 0 评论 -
WSAGetLastError()部分常见返回值
10004 —WSAEINTR函数调用中断。该错误表明由于对W S A C a n c e l B l o c k i n g C a l l的调用,造成了一次调用被强行中断。10009 —WSAEBADF文件句柄错误。该错误表明提供的文件句柄无效。在Microsoft Windows CE 下,s o c k e t函数可能返回这个错误,表明共享串口处于“忙”状态。转载 2013-04-11 17:19:05 · 1201 阅读 · 0 评论 -
谈谈IOCP发送数据时的一些误区及技巧
误区一,使用 send 函数发送数据 一些人使用阻塞的 send 函数发送数据,这是绝对应该避免的,一旦某一个连接传输发生拥塞,或者突然中断而没有通知,调用 send 函数的线程将可能被阻塞很长一段时间(可能 10 秒或更长),尤其是当服务器同时处理成千上万个连接时,这种情况可能会频繁出现。 使用非阻塞的 send 也不适合,数据不一定每次都能完全发送出去,你得使用转载 2013-05-04 03:21:05 · 1156 阅读 · 0 评论 -
理解I/O Completion Port
欢迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术: I/O端口 同步/异步 堵塞/非堵塞 服务端/客户端 多线程程序设计 Winsock API 2.0 在这之前,我转载 2013-05-04 03:24:32 · 740 阅读 · 0 评论 -
NoSQL:单服务器如何应付每秒75万次查询
大多数大规模Web应用程序都使用MySQL+Memcached架构,其中许多应用也同时使用了NoSQL数据库,如TokyoCabinet/Tyrant,也有一些人全部放弃MySQL,转投NoSQL的怀抱,曾经有人将这称为NoSQL运动,因为NoSQL数据库在处理一些简单访问模式,如主键查找时,比MySQL的表现更好,大多数Web应用程序的查询都很简单,因此这看上去是一个很合理的决定。 和转载 2013-11-29 04:02:13 · 4273 阅读 · 0 评论