
网络编程
文章平均质量分 92
wdt3385
这个作者很懒,什么都没留下…
展开
-
Linux网络编程入门
(一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,转载 2012-06-21 15:59:03 · 863 阅读 · 0 评论 -
详述socket编程之select()和poll()函数
select()函数和poll()函数均是主要用来处理多路I/O复用的情况。比如一个服务器既想等待输入终端到来,又想等待若干个套接字有客户请求到达,这时候就需要借助select或者poll函数了。(一)select()函数原型如下:1 int select(int fdsp1, fd_set *readfds, fd_set *writefds, fd_set *err转载 2012-07-23 16:52:50 · 1736 阅读 · 0 评论 -
Linux/Unix IO多路复用之poll网络编程(含源码)
前言本章节是用基本的Linux/Unix基本函数加上poll调用编写一个完整的服务器和客户端例子,可在Linux(ubuntu)和Unix(freebsd)上运行,客户端和服务端的功能如下:客户端从标准输入读入一行,发送到服务端服务端从网络读取一行,然后输出到客户端客户端收到服务端的响应,输出这一行到标准输出 服务端代码如下:#include #incl转载 2012-07-23 16:54:44 · 937 阅读 · 0 评论 -
socket编程---服务器端与客户端简单通信
服务器端:/* * File: main.cpp * Author: xiaomo * * Created on 2011年6月22日, 下午8:07 */#include#include #include #include #include #include #include #include #include #include#include #def转载 2012-07-23 16:59:25 · 1431 阅读 · 0 评论 -
signal(SIGPIPE, SIG_IGN)
http://www.360doc.com/content/11/0604/09/4363353_121584610.shtml我写了一个服务器程序,在Linux下测试,然后用C++写了客户端用千万级别数量的短链接进行压力测试. 但是服务器总是莫名退出,没有core文件.最后问题确定为, 对一个对端已经关闭的socket调用两次write, 第二次将会生成SIGPIPE信号, 该转载 2012-07-23 14:33:19 · 700 阅读 · 0 评论 -
sockaddr_in sockaddr in_addr区别联系[转]
struct sockaddr {unsigned short sa_family; // address family, AF_xxxchar sa_data[14]; // 14 bytes of protocol address};struct sockaddr_in {short int sin_family; // Address familyunsigned转载 2012-07-23 16:03:49 · 649 阅读 · 0 评论 -
Epoll,Poll,Select模型比较
先说Select:1.Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024. 2.操作限制:通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍. 后说Poll: 1.Socket数量几乎无限制:该模式下的Socket对应的fd列表由一个数组来保存,大小不限(默认4k). 2转载 2012-07-23 16:51:14 · 900 阅读 · 0 评论 -
socket通信---并发服务器图解和阻塞通信图解
当服务器处理一个客户请求可能需要相当长一段时间的时候,使用迭代服务器模式(即整个服务器可能被耽搁客户长期占用)是会影响系统性能的。而处理并发连接的服务器可以称为并发服务器。 并发服务器的一个简单操作是fork一个子进程来服务多个客户。当一个连接建立时,用于阻塞进程的aceept返回,服务器接着调用fork来创建一个子进程,该子进程通过已连接套接口connfd服务客户;而父进程就可以通过监听转载 2012-07-23 17:02:07 · 1423 阅读 · 0 评论 -
关于AF_INET和PF_INET 的区别
在写网络程序的时候,建立TCP socket: sock = socket(PF_INET, SOCK_STREAM, 0);然后在绑定本地地址或连接远程地址时需要初始化sockaddr_in结构,其中指定address family时一般设置为AF_INET,即使用IP。相关头文件中的定义: AF = Address Family转载 2012-07-24 09:50:17 · 890 阅读 · 0 评论 -
网络超时select和setsockopt的区别和问答
更详细资料:http://hi.baidu.com/vc_net/item/095fea515d32b3dcd58bac57setsockopt与select区别:setsockopt是通过信号来处理的, 超时的时候,read/write返回-1, 而且精度是毫秒级,同时只能一个句柄阻塞.select可以设置更高的精度(微秒), 同时可以处理多个句柄的阻塞.转载 2012-07-25 16:38:02 · 1657 阅读 · 0 评论 -
Linux下Socket写http协议下载文件代码以及说明
项目一部分需要使用socket写http协议,并下载文件,看似简单得问题,调试起来确有一些小小得问题,如果是windows平台的话,自然会简单很多,一个DownloadFile API就可以搞定,可是客户得Proj是在Linux下,不得已,从头开发了。目前得代码由于依然在win下面调试,所以移植得时候稍微注意一下就可以了。看代码:#include #include #inc转载 2012-07-25 16:35:45 · 660 阅读 · 0 评论 -
socket通信之http-server
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include转载 2012-07-26 19:04:18 · 1429 阅读 · 0 评论 -
TCP/IP协议——TCP/IP协议栈及框架
1 基于4层的TCP/IP协议栈基本描述基于4层的TCP/IP协议栈最具说服力的是:这一观点是由TCP/IP原始标准的创立者——美国国防部提出的,它与ISO/OSI参考模型的对应关系如下图:图1 TCP/IP协议栈层次结构与ISO/OSI参考模型的对应关系如图1所示,TCP/IP协议栈从低层开始,依次为网络存取层、网络互连层、传输层和应用层,具体描述如下:1.1 网络转载 2012-07-26 19:05:22 · 1446 阅读 · 0 评论 -
unix域socket通信实例
socket服务器端:server.c //socket读写默认的是非阻塞的#include #include #include #include #include #include #include #include #include #include #include #include /**********定时器头文件****转载 2012-07-26 19:03:06 · 1388 阅读 · 0 评论 -
提高 Linux 上 socket 性能
http://www.ibm.com/developerworks/cn/linux/l-hisock.html清楚 加速网络应用程序的 4 种方法M. Tim Jones,资深软件工程师,Emulex2006 年 2 月 13 日使用 SocketsAPI,我们可以开发客户机和服务器应用程序,它们可以在本地网络上进行通信,也可以通过 Internet 在全球范围内转载 2012-07-26 19:30:54 · 998 阅读 · 0 评论 -
send,recv,sendto,recvfrom
send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连接的另一端发送数据。客户程序一般用send函数向服务器发送请求,而服务器则通常用send函数来向客户程序发送应答。该函数的第一个参数指定发送端套接字描述符;第二个参转载 2012-07-27 16:36:35 · 714 阅读 · 0 评论 -
Unix domain socket 的一些小结
http://blog.youkuaiyun.com/wlh_flame/article/details/6358795#By fireworks2@foxmail.com找了大半天的资料,收获也不多,其实还是自己思考更靠谱一些。1. unix域的数据报服务是否可靠 man unix 手册即可看到,unix domain socket 的数转载 2012-08-28 14:34:10 · 911 阅读 · 0 评论 -
常用的socket例子
常用的socket例子关闭连接shutdown(m_sock,SHUT_RDWR) //成功返回0,错误-1设置超时 struct timeval tv; tv.tv_sec=ms/1000; tv.tv_usec=(ms%1000)*1000; setsockopt(s,1,SO_SNDTIMEO,&tv,sizeof(t转载 2012-07-23 16:26:19 · 576 阅读 · 0 评论 -
Linux下Socket编程中用send发送结构体
Socket中的send函数可以发送字符串,但不能直接发送结构体,因此在发送端先把结构体转成字符串,然后用send发送,在接收端recv字符串,再转换成原先的结构体,这个就是解决问题的主要思路,实现中要注意的问题在下文阐述。 为了客户端之间能够互相通信,实现私聊,我采用服务器转发的方式,因此用户发送的每条消息中除了消息主体外,还必须包含有发送者、接收者ID等信息,如此采用结构体便是最佳的办法转载 2012-08-07 11:36:28 · 852 阅读 · 0 评论 -
Windows Socket五种I/O模型——代码全攻略
果你想在Windows平台上构建服务器应用,那么I/O模型是你必须考虑的。Windows操作系统提供了选择(Select)、异步选择 (WSAAsyncSelect)、事件选择(WSAEventSelect)、重叠I/O(Overlapped I/O)和完成端口(Completion Port)共五种I/O模型。每一种模型均适用于一种特定的应用场景。程序员应该对自己的应用需求非常明确,而且综合转载 2012-07-18 16:41:50 · 1271 阅读 · 0 评论 -
完成端口与高性能服务器程序开发【转载】
此文转自XFOCUS,看了发现这种多线程操作,我了解的太浅了,应该补,准备把此文作者最后列出的这两本书学西下:《windows核心编程》&《windows网络编程》Email:kruglinski_at_gmail_dot_comBlog:kruglinski.blogchina.com早在两年前我就已经能很熟练的运用完成端口这种技术了,只是一直没有机会将它用在什么项目中,这段时间转载 2012-07-18 16:45:48 · 908 阅读 · 0 评论 -
LINUX C网络编程中的心跳机制
在TCP网络通信中,经常会出现客户端和服务器之间的非正常断开,需要实时检测查询链接状态。常用的解决方法就是在程序中加入心跳机制。从网络上找到,主要有以下方法实现TCP异常断开的检测:SO_KEEPALIVE,SIO_KEEPALIVE_VALS和Heart-Beat线程。(1)SO_KEEPALIVE 机制 这是socket库提供的功能,设置接口是setsockopt转载 2012-08-03 12:53:41 · 1707 阅读 · 0 评论 -
linux下客户端检测服务器的 heartbeat
对于heartbeat检测,常用的是在通迅协议上面做,比如pgpool,一台机器会定时向另一台新建一个联接,写和读一些特定字符,之后关闭这个检测用的连接,能连上表明对方没有挂机 对于通过TCP/IP本身这样做,网上win平台下面的例子比较多,相对LINUX,MS确实增加了一些特定的函数来检测状态,LINUX下面就没有特定的函数这样做了 下面这部分代码就是通过TCP/IP本身客户端检转载 2012-08-03 12:54:02 · 1144 阅读 · 0 评论 -
使用UNIX域函数进行套接字编程
《Linux网络编程》第11章高级套接字,本章介绍高级套接字的编程,包含UNIX域的函数、广播、多播、数据链路层的程序设计等在Linux网络程序设计中比较常用的方法。本节为大家介绍使用UNIX域函数进行套接字编程。AD: 11.1.3 使用UNIX域函数进行套接字编程使用UNIX域函数进行套接字编程与AF_INET的方式一致,不同的地方在于地址结构转载 2012-08-03 12:55:09 · 783 阅读 · 0 评论 -
UNIX Domain Socket IPC (Linux C编程一站式学习)
UNIX Domain Socket IPCsocket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket。虽然网络socket也可用于同一台主机的进程间通讯(通过loopback地址127.0.0.1),但是UNIX Domain Socket用于IPC更有效率:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号转载 2012-08-03 12:55:23 · 743 阅读 · 0 评论 -
warning: pointer targets in passing argument 3 of ‘accept’ differ in signedness
The first warning tells you you have the wrong type for parameter 3 of accept. It wants a 'socklen_t *', but you are giving it an 'int *'. Declare client_length to be the right type. socklen_t l原创 2012-08-07 09:49:09 · 3040 阅读 · 0 评论 -
udp发送结构体实例
发送端 client.c//server1 发送数据#include "stock.h"#define MYPORT 8866 /*定义端口为8866*/ int main(int argc,char *argv[]){ int sockfd,n,m; struct sockaddr_in server_addr; struct hoste转载 2012-08-07 16:56:57 · 2144 阅读 · 0 评论 -
ping.c
#include #include #include #include #include #include #include #include #include #define PACKET_SIZE 4096#define ERROR 0#define SUCCESS 1// 效验算法转载 2012-07-23 15:13:20 · 780 阅读 · 0 评论 -
关于长连接和短连接
TCP/IP通信程序设计的丰富多样性 刚接触TCP/IP通信设计的人根据范例可以很快编出一个通信程序,据此一些人可能会认为TCP/IP编程很简单。其实不然,TCP/IP编程具有较为丰富的内容。其编程的丰富性主要体现在通信方式和报文格式的多样性上。一。通信方式主要有以下三大类:(一)SERVER/CLIENT方式1.一个Client方连接一个Server方,或转载 2012-07-23 15:41:16 · 926 阅读 · 0 评论 -
怎么用短链接做压力测试
如果在client端是千万级别的压力测试,则不断用短链接去连服务器,很短时间内会死掉,因为,每个端口不会马上关闭,会TIME_WAIT30秒,则30秒内6000多个端口会用完,导致client端连接失败。因此,需设置端口的TIME_WAIT为0: linger InternalLinger; InternalLinger.l_onoff=1; Int转载 2012-07-23 15:57:49 · 939 阅读 · 0 评论 -
linux socket 编程中主要函数解析
1. socket()2. bind()3. connect()4. listen()5. accept()6. send()和recv()7. sendto()和recvfrom()8. close()和shutdown()9. getpeername()10. gethostname()socket()--------------------转载 2012-07-23 14:57:28 · 688 阅读 · 0 评论 -
linux下socket编写常用头文件
#include //connect,send,recv,setsockopt等#include #include // sockaddr_in, "man 7 ip",htons#include //poll,pollfd#include //inet_addr,inet_aton#include转载 2012-07-23 16:29:42 · 759 阅读 · 0 评论 -
unix网络编程 学习笔记(精华)
1.1 客户端程序和服务端程序 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 网络程序是先有服务器程序启动,等待客户端的程序运行并建立连接.一般的来说是服务端的程序 在一个端口上监听,直到有一个客户端的程序发来了请求. 1.2 常用的命令 由于网络程序是有两个部分组成,所以在调试的时候比较麻烦,为此我们有必要知道一些常用的网络命令转载 2012-07-23 17:18:25 · 1775 阅读 · 0 评论 -
gethostbyname() -- 用域名或主机名获取IP地
#include #include struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等。传出值,是一个hostent的结构。如果函数调用失败,将返回NULL。 struct hostent { cha转载 2012-07-23 14:44:07 · 573 阅读 · 0 评论 -
Linux下Socket相关头文件总结
一 三种类型的套接字:1.流式套接字(SOCKET_STREAM) 提供面向连接的可靠的数据传输服务。数据被看作是字节流,无长度限制。例如FTP协议就采用这种。2.数据报式套接字(SOCKET_DGRAM) 提供无连接的数据传输服务,不保证可靠性。3.原始式套接字(SOCKET_RAW) 该接口允许对较低层次协议,如IP,ICMP直接访问。二转载 2012-08-07 13:41:43 · 781 阅读 · 0 评论 -
python 应用 IPy 计算IP/掩码的网络地址
python 应用 IPy 计算IP/掩码的网络地址from IPy import IPdef ipnetwork(ip, mask): return IP(ip).make_net(mask)def issamenetwork(ip1, mask1, ip2, mask2): return ipnetwork(ip1, mask1) =转载 2013-12-13 10:05:00 · 4747 阅读 · 0 评论