网络编程实践
黑帽子和猫
不要总当机会到来时,你才唏嘘“哎呀,那时我怎么怎么样就好。。。”,你已经错过很多次,记住这是最后一次
展开
-
网络编程中的错误( 持续更新中)
明明监听了这个端口,可是netstat查看时,却看不见,查找源代码,错误如下listen_addr.sin_port = htonl(12345);应该调用htons()函数,(笔误呀。。。哎)2原创 2017-04-30 13:46:03 · 340 阅读 · 0 评论 -
为什么IO-multiplexing要与非阻塞IO一起使用
先看一个例子IO-multiplexing+阻塞IO首先需要明确的是IO复用是同步的,并不是异步的IO-multiplexing+阻塞IO程序实现了Netcat的简单功能#!/usr/bin/pythonimport osimport selectimport socketimport sysdef relay(sock): poll = select.poll() poll.原创 2017-05-07 00:09:21 · 625 阅读 · 0 评论 -
libevent例子:time-test.c
测试时间,代码如下#include <sys/types.h>#include <event2/event-config.h>#include <sys/stat.h>#include <sys/queue.h>#include <unistd.h>#include <time.h>#include <sys/time.h>#include <fcntl.h>#include <s原创 2017-05-15 20:21:18 · 442 阅读 · 0 评论 -
libevent例子:hello-world
libevent自带的sample 例子简单,且包含的API比较全面#include <string.h>#include <errno.h>#include <stdio.h>#include <signal.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/socket.h>#include <event2/b原创 2017-05-15 21:56:55 · 1198 阅读 · 0 评论 -
libevent遇到错误怎么处理
今日写程序遇到段错误,一个一个的对参数有没有错,这叫一个难呀,突然一想,可以用perror打印错误原因呀,后来在libevent的教材中找到错误的打印方法,如下nt err = EVUTIL_SOCKET_ERROR();fprintf(stderr, "Got an error %d (%s) on the listener. ""Shutting down.\n", err, evutil_原创 2017-05-25 23:50:56 · 1544 阅读 · 0 评论 -
glog
见glog转载 2017-05-07 12:16:35 · 343 阅读 · 0 评论 -
<1>TCP带宽测试试验
测试1(dl1->node1(dl1发数据到node1):[david@dl1 ~]$ dd if=/dev/zero bs=1MB count=1000 | nc node1 5001#从/dev/zero中读1MB的数据向node1发送1000+0 records in1000+0 records out1000000000 bytes (1.0 GB) copied, 8.53014原创 2017-04-25 20:59:17 · 2115 阅读 · 0 评论 -
<二>:网络编程需要关注的性能
需要注意的性能: 1. Bandwidth MB/S; netcat发的时候就是纯的TCP,没有什么payload,其他工具需要一些分包等等,测出来的带宽会比这小;千兆网的带宽大约117MB/S,这个可以看做是一个上限。 2. 吞吐量(应用层面) 1s能处理多少消息,多少查询,处理多少事务等 Throughput messages/s, queries/s(QPS), trans原创 2017-04-25 21:09:18 · 691 阅读 · 0 评论 -
<3>:阻塞IO的试验-echo程序
阻塞意味着会阻塞,而且可能永远阻塞, 看下echo的原型,每个线程一个客户端。 代码位置recipes/tpc/{echo.cc, echo_client.cc}测试服务端[root@bogon bin]# ./echo客户端[root@bogon bin]# ./echo_client localhost 1024(1024000,10240000,20488888(20M))可以观察到原创 2017-04-26 19:47:48 · 700 阅读 · 0 评论 -
<4>:TCP自连接
代码#!/usr/bin/pythonimport errnoimport socketimport sysimport timeif len(sys.argv) < 2: print "Usage: %s port" % sys.argv[0] print "port should in net.ipv4.ip_local_port_range"else: port原创 2017-04-26 20:20:58 · 633 阅读 · 0 评论 -
libevent使用例子,从简单到复杂
转载自http://blog.csdn.net/luotuo44/article/details/39670221# 从自己使用socket,bind,accept等到使用libevent提供好的接口; 从不使用buffer到使用buffer来完成。转载 2017-05-09 14:37:05 · 648 阅读 · 0 评论 -
为什么正确的关闭TCP连接
收到的数据不完整,先看一个例子,如下#include "Acceptor.h"#include "InetAddress.h"#include "TcpStream.h"#include <thread>#include <unistd.h>void sender(const char* filename, TcpStreamPtr stream){ FILE* fp = fopen(f原创 2017-05-06 22:42:56 · 2046 阅读 · 0 评论 -
libevent常用API
常用API,总结下创建一个event_basestruct event_base *event_base_new(void);void event_base_free(struct event_base *base);//退出事件循环,两个的区别:break立即退出,exit先执行完回调函数,再退出int event_base_loopexit(struct event_base *base,原创 2017-05-15 19:14:34 · 1442 阅读 · 0 评论 -
两种网络模式简单实现Netcat
分别用thread-per-connection和IO复用模式实现Netcat的基本功能:从stdin读,写到sockfd;从sockfd读写到stdout.thread-per-connection先看第一种,thread-per-connection#include <stdio.h>#include <stdlib.h>#include <sys/epoll.h>#include <sy原创 2017-05-06 14:11:49 · 950 阅读 · 0 评论 -
echoServer-IO复用实现
还有很多问题,等待更新吧,哎,凡事需要自己写一遍,道理谁都懂;写完再和别人的代码对比。#include <stdio.h>#include <stdlib.h>#include <sys/epoll.h>#include <sys/socket.h> #include <netinet/in.h> #include <unistd.h>#include <arpa/inet.h>#i原创 2017-04-30 16:21:56 · 434 阅读 · 3 评论 -
netstat命令(持续更新中)
用一点自己记一点吧,转载的一大堆,也不知道什么意思,也记不住。//我这个显示了listening呀??-a (all)显示所有选项,默认不显示LISTEN相关//这个一般都加上吧,还是基于TCP编程的多,UDP会少。-t : (tcp)仅显示tcp相关选项-p :显示建立相关链接的程序名-n 拒绝显示别名,能显示数字的全部转化成数字。所以自己第一个常用的就是netstat -anp | g原创 2017-05-02 19:31:49 · 782 阅读 · 0 评论 -
压力测试
一个通用的压力测试程序, 我也不知道是否通用,书上说是,抄下来学习学习#include <stdlib.h>#include <stdio.h>#include <assert.h>#include <unistd.h>#include <sys/types.h>#include <sys/epoll.h>#include <fcntl.h>#include <sys/socket.原创 2017-05-02 23:14:53 · 508 阅读 · 0 评论 -
tcpdump命令
tcpdump支持的选项-i : 要监听的网卡名称-n : 用数字表示ip,端口-t : 不打印时间戳还支持表达式port目前我用到的tcpdump -i lo port 12345tcpdump -int lo port 12345原创 2017-05-03 17:39:50 · 343 阅读 · 0 评论 -
Libevent:Echo Server Based on libevent
花了两天的时间在libevent上,想总结下,就以写简单tutorial的方式吧,貌似没有一篇简单的说明,让人马上就能上手用的。首先给出官方文档吧: http://libevent.org ,首页有个Programming with Libevent,里面是一节一节的介绍libevent,但是感觉信息量太大了,而且还是英文的-。-(当然,如果想好好用libevent,看看还是很有必要的),还有个Re转载 2017-05-03 19:04:44 · 406 阅读 · 0 评论 -
C10K问题
这一系列文章不错,码下来慢慢看。 http://www.cocoachina.com/bbs/read.php?tid-1705273.html转载 2017-05-03 19:48:19 · 385 阅读 · 0 评论 -
Libevent学习笔记(一):基本使用
转载于 http://www.tuicool.com/articles/VZBRBbF 这篇还比较全面。前言其实,现在高性能网络服务器基本都是异步I/O模式构建的,而Libevent就是对select、poll、epoll等各类异步模式接口的封装,通过设置回调函数的方式,在监听文件描述符和套接字读写事件的同时,还兼任定时器和信号接收的管理工作。所以这货对高性能服务器后台开发、跨平台开发、网络开发都转载 2017-05-03 21:30:36 · 2659 阅读 · 0 评论 -
libevent常见开发流程
一些常见步骤,列出来啦,免得自己敲,我是菜鸟,菜鸟的常见步骤就是这样吧,服务器端/* For sockaddr_in */#include <netinet/in.h>/* For socket functions */#include <sys/socket.h>/* For gethostbyname */#include <netdb.h>#include <unistd.h>#原创 2017-05-11 23:09:14 · 1004 阅读 · 0 评论 -
GCC内置原子性操作
先简单看一篇关于GCC原子性操作的概念东西吧,见 http://blog.csdn.net/summerhust/article/details/7406683gcc内置原子操作函数再来看一看陈硕老师封装的原子类,很简单,拿来直接用了。(PS:我去掉了namespace) 下面是线程安全的// Use of this source code is governed by a BSD-style原创 2017-05-12 08:52:07 · 701 阅读 · 0 评论 -
linux TCP_NODELAY 未定义
转载自http://blog.hehehehehe.cn/a/15575.htm编程,居然说”TCP_NODELAY” 未定义,添加#include转载 2017-05-05 11:20:31 · 2927 阅读 · 0 评论 -
TTCP测试网络传输性能
协议代码client代码#include <stdio.h>#include <stdlib.h>#include <sys/epoll.h>#include <sys/socket.h> #include <netinet/in.h> #include <unistd.h>#include <arpa/inet.h>#include <error.h>#include <stri原创 2017-05-21 17:49:16 · 2082 阅读 · 0 评论