网络编程
wbj1234566
生于忧患,而死于安乐也
展开
-
unix/linux socket write 编程
上周开发了一个多线程处理的服务端应用程序,我自己测试时没发现什么问题。但和别人写的客户端连接程序进行联测时,服务端程序总是莫明其妙的死掉。因为是第一次开发这么大的多线程应用程序并且相关的客户端开发人员对他实用的技术也不太熟悉,错误不知到底出现在什么地方。 我开始查找socket编程及unix网络编程相应的接口函数,进行各种各样的测试。力尽艰辛终于发现是调用write函数时,写了一个原创 2007-12-23 15:55:00 · 1880 阅读 · 0 评论 -
主动FTP与被动FTP-权威解释
主动FTP与被动FTP-权威解释目录 开场白基础主动FTP主动FTP的例子被动FTP被动FTP的例子总结 开场白处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。本文也许不像题目声称的那样是一个权威解释,但我已经转载 2009-02-26 15:55:00 · 756 阅读 · 0 评论 -
Linux下Socket写http协议下载文件代码以及说明
项目一部分需要使用socket写http协议,并下载文件,看似简单得问题,调试起来确有一些小小得问题,如果是windows平台的话,自然会简单很多,一个DownloadFile API就可以搞定,可是客户得Proj是在Linux下,不得已,从头开发了。目前得代码由于依然在win下面调试,所以移植得时候稍微注意一下就可以了。看代码:#include #include #i转载 2008-11-29 10:55:00 · 3507 阅读 · 0 评论 -
一个linux典型的select模型更新方法
bool update(int _fd, int _timeout, char *buffer){ //cout fd_set fdClient; FD_ZERO( &fdClient ); FD_SET( _fd, &fdClient ); struct ti转载 2008-11-29 10:53:00 · 1194 阅读 · 0 评论 -
高性能服务器设计时需要考虑的几个问题
IntroductionThe purpose of this document is to share some ideas that Ivedeveloped over the years about how to develop a certain kind ofapplication for which the term "server" is only a weak app转载 2008-11-22 12:21:00 · 920 阅读 · 0 评论 -
Linux操作系统下的网络配置常用命令介绍
1、 ifconfig 可以使用ifconfig命令来配置并查看网络接口的配置情况。 例如: (1) 配置eth0的IP地址, 同时激活该设备。 #ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up (2) 配置eth0别名设备eth0:1的IP地址,并添加路由。 #ifconfig转载 2008-11-18 09:50:00 · 563 阅读 · 0 评论 -
Linux系统 常用服务程序配置
NFS: nfs的组成:rpc.portmapper, rpc.nfsd, rpc.mountd nfs的安装:sudo aptitude install nfs-kernel-server or nfs-user-server nfs的启动和停止:sudo /etc/init.d/nfs-kernel-server restart|stop|start nfs的检查:ps ax转载 2008-11-18 09:52:00 · 477 阅读 · 0 评论 -
Select()系统调用及文件描述符集fd_set的应用
在网络程序中,一个进程同时处理多个文件描述符是很常见的情况。select()系统调用可以使进程检测同时等待的多个I/O设备,当没有设备准备好时,select()阻塞,其中任一设备准备好时,select()就返回。select()的调用形式为: #include #include int select(int maxfd, fd_set *readfds, fd_set *wri转载 2008-11-05 17:18:00 · 589 阅读 · 0 评论 -
网络socket编程指南
Beej网络socket编程指南 -------------------------------------------------------------------------------- 介绍 Socket 编程让你沮丧吗?从man pages中很难得到有用的信息吗?你想跟上时代去编Internet相关的程序,但是为你在调用 connect() 前的bind() 的结构而不知所措?等等转载 2008-10-08 13:22:00 · 808 阅读 · 1 评论 -
unix select 模型
一.unix 规划下关于select 模式(服务器端)1.建立socket套接字int nsock = socket(AF_UNIX,SOCK_STREAM,0);2.设置socket缓冲大小.setsockopt(nsock, SOL_SOCKET, SO_REUSEADDR, &reuse_addr,sizeof(reuse_addr));3.bind 服务器的地址到套接字bi转载 2008-08-27 10:46:00 · 2272 阅读 · 0 评论 -
unix/linux socket read函数的封装
int readcnta(int curSock,char * buff,int length){int ret;int i;int templen;int l_length;ret=0;l_length=length;while(ret!=l_length){ templen=read(curSock,&buff[ret],length-ret); if(templen原创 2008-05-27 15:42:00 · 3558 阅读 · 0 评论 -
unix/linux socket write函数的封装
int writecnta(int &sock,char *buf){ int length; int wlength; int tmpLength; tmpLength=0; length=strlen(buf); while(tmpLength != length) { wlength=write(sock,&buf[tmpLength]原创 2008-05-27 15:43:00 · 2954 阅读 · 0 评论 -
系统设计之 网络模型(三)多路复用模型
多路复用的方式是真正实用的服务器程序,非多路复用的网络程序只能作为学习或着陪测的角色。本文说下个人接触过的多路复用函数: select/poll/epoll/port。kqueue的*nix系统没接触过,估计熟悉了上面四种,kqueue也只是需要熟悉一下而已。一、select模型select原型:int select(int n, fd_set *readfds, fd_set *writef转载 2008-05-13 16:44:00 · 519 阅读 · 0 评论 -
系统设计之 网络模型(一)基础篇
全文针对linux环境。tcp/udp两种server种,tcp相对较复杂也相对比较常用。本文就从tcp server开始讲起。先从基本说起,看一个单线程的网络模型,处理流程如下:socket-->bind-->listen-->[accept-->read-->write-->close]-->close[]中代码循环运行,[]外的是对监听socket的处理,[]内的是对accept返回转载 2008-05-13 16:42:00 · 573 阅读 · 0 评论 -
系统设计之 网络模型(二)
本章主要列举服务器程序的各种网络模型,示例程序以及性能对比后面再写。一、分类依据。服务器的网络模型分类主要依据以下几点(1)是否阻塞方式处理请求,是否多路复用,使用哪种多路复用函数(2)是否多线程,多线程间如何组织(3)是否多进程,多进程的切入点一般都是accept函数前二、分类。首先根据是否多路复用分为三大类:(1)阻塞式模型(2)多路复用模型(3)实时信号模型三、详细分类。1、阻塞式模型根据是转载 2008-05-13 16:36:00 · 596 阅读 · 0 评论 -
关于同步、异步,阻塞、非阻塞的解释
在windows socket api 下:异步方式指的是发送方不等接收方响应,便接着发下个数据包的通信方式;而同步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。阻塞套接字是指执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直挂在recv()这个函数调用上,直到读到一些数据转载 2008-05-05 17:57:00 · 1629 阅读 · 1 评论 -
unix/linux socket设置非阻塞io
UNIIX BSD下SOCKET主要是同步的,但有阻塞和非阻塞两种方式。阻塞方式定义与前面定义相同,要解决阻塞有两种方法:一种是设置SOCKET属性,设置为非阻塞(fcntl()函数),sockfd = socket(AF_INET, SOCK_STREAM, 0); fcntl(sockfd, F_SETFL, O_NONBLOCK); 通过设置套接字为非阻塞,你能够有效地"询问"套接字以获原创 2007-12-23 15:59:00 · 4135 阅读 · 0 评论 -
网络编程中参数的获得与设置
取得本地主机名: int gethostname(char *hostname, size_t size); 获得主机名存到hostname中。 取得本地的信息: int getsockname(int sockfd, struct sockaddr *addr, int *addrlen); addr存有返回的主机信息。 示例: struct sockaddr_in sa; int len转载 2009-09-04 20:03:00 · 588 阅读 · 0 评论