网络编程
文章平均质量分 82
晴天_娃娃
这个作者很懒,什么都没留下…
展开
-
UNIX 高级编程 学习
相信很多跟我一样想要学习unix编程的朋友在兴冲冲拿到《unix环境高级编程》后,准备拿源码练练手时,执行第一个myls就出现一大堆的 错误,这未免时个不小的打击。今天把解决方法写下来,第一自己有个记录,第二也帮助那些被同样问题困扰的朋友尽快的进入linux美丽的世界。(只限 linux系统)首先需要make一次源代码编辑源码解压生成的apue.2e文件夹下的Make.defines.li原创 2013-04-26 14:19:15 · 881 阅读 · 0 评论 -
TCP转发服务器的例子
2009-05-28 15:02:14| 分类: 电脑知识|字号 订阅这几种机器用事件模型应该够用了。 下面是一个TCP转发服务器的例子,他的作用是有一些客户端连到服务器后,任何一个客户端发给服务器的数据都被服务器原封不动的转发到所有客户端,类似于多人聊天的概念。 program EventSelectServer; {$APPTYPE CONSOLE}转载 2012-12-06 23:10:03 · 5273 阅读 · 0 评论 -
tcp参数详解之tcp_fin_timeout
tcp参数详解之tcp_fin_timeout (2011-05-04 17:14)标签: tcp ip timeout syn 分类: 网络技术tcp_fin_timeout :INTEGER默认值是 60对于本端断开的socket连接,TCP保持在FIN_WAIT_2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡。默认值为 60原创 2012-12-08 15:16:02 · 18830 阅读 · 0 评论 -
linux tcp 连接的配置
linux tcp 连接的配置 2011-10-22 15:13:34| 分类: 操作系统|字号 订阅http://zhang-ly520.iteye.com/blog/547881tcp_syn_retries :INTEGER默认值是5对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于转载 2012-12-08 15:24:51 · 833 阅读 · 0 评论 -
linux 下端口close_wait 过多 .
情景描述:系统产生大量“Too many open files” 原因分析:在服务器与客户端通信过程中,因服务器发生了socket未关导致的closed_wait发生,致使监听port打开的句柄数到了1024个,且均处于close_wait的状态,最终造成配置的port被占满出现“Too many open files”,无法再进行通信。 close_wait状态出现的原因是被动关闭方未关转载 2012-12-27 20:07:37 · 554 阅读 · 0 评论 -
解决TCP连接数过多的问
1、建立连接协议(三次握手)(1)客户 端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标 志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通 讯。(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。2、连接终止原创 2012-12-27 20:10:55 · 660 阅读 · 0 评论 -
简单的linuxepoll服务器开发
2008年11月27日 12:40 来源:ChinaUnix博客 作者:hust_qb 编辑:周荣茂 鉴于poll select的弱势--在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制。 epoll在linux内核2.6被开发出来,经过测试,运行稳定,已经成为现在主流的select模式。 epoll用到的所有函转载 2012-12-27 20:50:37 · 479 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
1. Epoll 是何方神圣? Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么神秘的。 其实在 Linux 下设计并发网络程序,向来不缺少方法,比如典型的 Apache 模型( Process Per Connection ,简称 PPC转载 2012-12-27 20:58:47 · 398 阅读 · 0 评论 -
inet_pton
Linux下IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include sys/types.h> #include #inclu原创 2012-12-14 11:05:25 · 774 阅读 · 0 评论 -
IP别名+TCP转发+端口映射实现跨网络访问[原创]
一、背景环境: 1、都是Linux服务器; 2、“服务器A”与“服务器C”不在同一网络,两者之间是不通的; 3、“服务器A”、“服务器C”分别与“服务器B”相通。 二、要实现的需求: 1、让“服务器A”上的PHP程序能够连接“服务器C”上的MySQL数据库(IP:10.10.1.4,端口:3306); 2、不允许在“服务器A”上的PHP程序中更改MySQL地原创 2012-12-06 23:02:18 · 2299 阅读 · 0 评论 -
TCP to TCP 数据转发
TCP to TCP 数据转发MSN:yiqianfeng@hotmail.com需要转载请联系作者目的 我们部门在内网有一台Web服务器A,用于部门文档信息管理,可分公司的员工,或出差的员工,都不能直接访问这台机器。所以还得把发邮件来完成文档的提交。如何实现外地员工能访问Web服务器A呢?公司有一台可以访问外网的机器B,要是在B上运行一个数据转发程序,固定地转载 2012-12-06 23:08:18 · 3864 阅读 · 1 评论 -
POSIX thread (pthread) libraries
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads原创 2012-10-29 09:33:47 · 530 阅读 · 0 评论 -
非阻塞套接字及select模型
2011-09-07 11:12 146人阅读 评论(0) 收藏 举报 1、 两种I/O模式 * 阻塞模式: 执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。 * 非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回转载 2012-10-29 09:29:00 · 1110 阅读 · 0 评论 -
在Linux上配置和实现SOCKS v5
一、 SOCKS概述 SOCKS其实是一种网络代理协议。该协议所描述的是一种内部主机(使用私有ip地址)通过SOCKS服务器获得完全的Internet访问的方法。具体说来是这样一个环境:用一台运行SOCKS的服务器(双宿主主机)连接内部网和Internet,内部网主机使用的都是私有的ip地址,内部网主机请求访问Internet时,首先和SOCKS服务器建立一个SOCKS通道,然后再将请求通过原创 2012-11-27 13:40:25 · 2580 阅读 · 0 评论 -
select函数
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待, 直到被监视的文件句柄有某一个或多个发生了状态改变。文件在句柄在Linux里很多,如果你man某个函数,在函数返回值部分说到成功后有一个文件句柄被创建的都是的,如man socket可以看 到“On success, a file descripto原创 2012-11-26 16:39:05 · 517 阅读 · 0 评论 -
函数名: feof
函数名: feof 功 能: 检测流上的文件结束符 用 法: int feof(FILE *stream); feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。 EOF是文件结束标志的文件。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,ASCⅡ代码的范围是0到255,不可能出现-1,因此可以用EOF作为文件结束标志。 当把数据以原创 2012-11-14 11:37:01 · 637 阅读 · 0 评论 -
定位问题:*** glibc detected *** : double free or corruption (!prev): 0x09b077d8
定位free/malloc的位置和参数,可以在对应的.cpp/.h文件中添加: C代码 #include #include void * debug_malloc(size_t size, const char *file, int line, const char *func) {原创 2012-11-29 10:39:54 · 7124 阅读 · 1 评论 -
Linux系统进程控制编程——wait和waitpid函数
分类: Linux 编程1.当子进程结束的时候,父进程会收到SIGCHLD通知2.进程可以调用wait/waitpid等待此Signal a.当所有子进程都在执行的时候,会block b.当某个子进程中止,成为zombie的时候,立刻返回 c.如果没有任何子进程,则返回错误功能描述: 等待进程改变其状态。所有下面哪些调用都被原创 2012-11-30 00:10:58 · 618 阅读 · 0 评论 -
一个TCP/IP转发的例子
一个TCP/IP转发的例子#include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef _SCO_DS#incl转载 2012-12-06 22:50:30 · 647 阅读 · 0 评论 -
unix网络编程中的包裹函数
分类: 网络编程2012-03-27 16:16 139人阅读 评论(0) 收藏 举报以下是unix网络编程中的包裹函数,同样适用与windows 编程:Writen 和Readn 等等/* include readn */#include "unp.h"ssize_t /* Read "n" bytes from a descript转载 2012-12-14 17:00:39 · 1109 阅读 · 0 评论 -
CLOSE_WAIT问题解决
CLOSE_WAIT问题终于解决了。首先我要多谢tonykorn97,他的Blog: http://tonykorn97.itpub.net/index.php一篇对我非常有用的文章!(我在下面引用了过来。)from : http://tonykorn97.itpub.net/index.php下面就说说我是怎么解决的吧:[oracle9i@RHEL3 or转载 2012-12-27 17:47:54 · 1449 阅读 · 0 评论 -
linux 获取时间差
[转]linux下获得时间差,精确到微秒级别 2008-03-12 10:05:45分类:最近需要测算软件计算FFT所需要的时间,所收集参考的资料: #include #include /* 包含标准库头文件 */转载 2013-01-27 15:11:07 · 4403 阅读 · 0 评论 -
epoll并发原理
epoll是linux下高并发服务器的完美方案,因为是基于事件触发的,所以比select快的不只是一个数量级。单线程epoll,触发量可达到15000,但是加上业务后,因为大多数业务都与数据库打交道,所以就会存在阻塞的情况,这个时候就必须用多线程来提速。 epoll在线程池内,测试结果2000个/s增加了网络断线后的无效socket检测。 测试工具:stress转载 2013-02-01 10:49:34 · 728 阅读 · 0 评论 -
TCP状态迁移close_wait状态
TCP状态迁移大家对netstat -a命令很熟悉,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等,这些到底是 什么意思呢,在这篇文章,我将会详细的阐述。大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS /ACK包后,就开始建原创 2013-01-21 11:04:14 · 897 阅读 · 0 评论 -
面向连接的socket数据处理过程以及非阻塞connect问题
对于面向连接的socket类型(SOCK_STREAM,SOCK_SEQPACKET)在读写数据之前必须建立连接,首先服务器端socket必须在一个客户端知道的地址进行监听,也就是创建socket之后必须调用bind绑定到一个指定的地址,然后调用int listen(int sockfd, int backlog);进行监听。此时服务器socket允许客户端进行连接,backlog提示没被ac原创 2013-02-21 13:16:16 · 1379 阅读 · 0 评论 -
Linux下的单进程多用户TCP服务器,采用select方法实现。
/************************************************* * File name : server.c * Description : 单进程并发服务器 * Author : sg131971@qq.com * Version : V1.0 * Date : * Compiler : arm-linux-gcc原创 2013-03-06 11:21:34 · 917 阅读 · 0 评论 -
socket4和socket5的区别
socket5对于 socket4的改进关键词: socket5 socket4 网络编程中,对于数据传输实时性要求较高的场合,大家都会选择UDP来作为数据传输协议,在TCP/IP协议族中UDP协议较TCP协议需要的网络系统资源更少。然而在企业应用中,由于网络安全原因等会转载 2013-04-10 18:01:19 · 23406 阅读 · 0 评论 -
EPOLL简介及程序样例
其数据结构的设计是密不可分的,这个下面就会提到。首先回忆一下select模型,当有I/O事件到来时,select通知应用程序有事件到了快去处理,而应用程序必须轮询所有的FD集合,测试每个FD是否有事件发生,并处理事件;代码像下面这样:int res = select(maxfd+1, &readfds, NULL, NULL, 120);if(res > 0){for(转载 2013-04-15 17:12:25 · 855 阅读 · 0 评论 -
linux epoll的介绍,操作和具体实现
Epoll基本介绍 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于 select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd 数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声转载 2013-04-15 17:17:16 · 758 阅读 · 0 评论 -
Windows 和 Linux下使用socket下载网页页面内容(可设置接收/发送超时)的代码
主要难点在于设置recv()与send()的超时时间,具体要注意的事项,请看代码注释部分,下面是代码:[cpp] view plaincopyprint?#include #include #include #include #include #include #ifdef _WIN32转载 2013-01-26 17:31:45 · 1083 阅读 · 0 评论 -
Linux设置socket连接超时
Linux设置socket连接超时(异步连接) 转载▼标签: linux socket connect 超时 it分类: Linux & C1.首先将标志位设为Non-blocking模式,准备在非阻塞模式下调用connect函数2.调用connect,正常情况下,因转载 2013-01-26 17:21:58 · 8129 阅读 · 0 评论 -
socket链接的关闭close和shutdown的区别,TIME_WAIT和CLOSE_WAIT什么时刻出现,如何处理
TCP主动关闭连接 appl: close(), --> FIN FIN_WAIT_1 //主动关闭socket方,调用close关闭socket,发FIN //对方操作系统的TCP层,给ACK响应。然后给FIN --> ACK "TIME_WAIT" -- 2MSL timeo转载 2012-12-27 17:59:57 · 975 阅读 · 0 评论 -
CLOSE_WAIT生成的原因
CLOSE_WAIT,TCP的癌症,TCP的朋友。CLOSE_WAIT状态的生成原因首先我们知道,如果我们的服务器程序APACHE处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet: Client ---> FIN ---> Server转载 2012-12-27 20:12:38 · 711 阅读 · 0 评论 -
close_wait状态的产生原因及解决
最近需要上线的逻辑server由于需要与大量的后台server交互,今天突然发现有大量的close_wait产生,于是仔细研究了一下:首先我们知道,如果我们的服务器程序处于CLOSE_WAIT状态的话,说明套接字是被动关闭的!因为如果是CLIENT端主动断掉当前连接的话,那么双方关闭这个TCP连接共需要四个packet:Client ---> FIN ---> Server转载 2012-12-27 17:55:21 · 645 阅读 · 0 评论 -
客户端、服务器源码
mpthserv.c#include #include #include #include #include #include #include #include #include #define MAX 10#define SERVER_PORT 5555pthread_t thread[转载 2012-12-30 22:48:29 · 604 阅读 · 0 评论 -
多进程实现客户端tcp收发包 linux
客户端#include #include #include #include #include #include #include #define PORT 1234#define MAXDATASIZE 1000void process(FILE *fp,int sockfd);char *getMessage(char *sendline,int le原创 2012-12-30 23:49:22 · 1173 阅读 · 0 评论 -
linux下多线程tcp服务器、客户端程序
/* 编译命令:gcc -Wall -g -o server server.c -lpthread */#include #include #include #include #include #include #include #include #include #include #define PORT 8458#define MAX_L原创 2012-12-31 00:54:39 · 2813 阅读 · 0 评论 -
TCP客户端程序源代码
int client(){ system("color 0a"); //修改DOS窗口颜色,是其成0A。 WORD wVersion=MAKEWORD(1,1); WSADATA wsData; int nResult= WSAStartup(wVersion,&wsData); //启动WINSOCKET if(nResult !=0) { printf("启转载 2012-12-30 23:26:35 · 1221 阅读 · 0 评论 -
多线程TCP/IP通讯的客户端
jackyhwei 发布于 2010-01-01 12:17 点击:842次 多线程TCP/IP通讯的客户端,心跳检测,意外断网重连,时间校准。写日志函数不考虑线程同步。TAG: 多线程 TCP 心跳 服务器编程 TLV /* add include files */#include "winsock2.h"转载 2012-12-30 23:40:32 · 920 阅读 · 0 评论 -
基于winsock的阻塞和非阻塞通信模型(1)
基于winsock的阻塞和非阻塞通信模型李 峰(电信科学技术第十研究所 陕西 西安 710061)摘要:在应用程序开发中,经常涉及各式各样的机器的交互通信问题。在Windows操作系统下,可以使用MFC中的CSocket,也可以使用以Windows Api为基础的Winsock等等。本文主要描述了Winsock的两种实现方式,即阻塞方式和非阻塞方式。并对应这两种转载 2012-10-29 09:32:37 · 2777 阅读 · 0 评论