易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux下select的使用小记

今天使用select编程,问题很多,以前真的没有仔细研究过。
出现了以下几个问题
1 recvfrom在接收时,提供给系统调用的最后一个参数,客户端的地址结构,其长度必须进行初始化,如果为0,则不能接收数据。
2 select的第一个参数为所有监视的文件描述符的最大值+1,而不是监视的文件描述符个数+1。
3 不要监视那些经常可用的文件描述符,如果这样做,select会一直返回。
4 在select返回后,如果监视的文件描述符没有状态改变,则在fd_set中此文件描述符会被清0,因此在select的循环中,每次进入都要重新设置我们所关注的文件描述符。
5 如果select使用了超时操作,每次返回select都会修改计时器,将计时器设为余下的时间,因此如果使用了计时器,每次进入循环都要重置计时器。pselect没有这个毛病。
下面是linux下的基于select的一个UDP反射服务器的示例代码:
 #include <sys/select.h>
#include <sys/types.h>
#include <sys/time.h>
#include <unistd.h>
#include <stdio.h>
#include <error.h>
#include <stdio.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <assert.h>
int
main()
{
int sockfd = socket(AF_INET,SOCK_DGRAM,0);
assert(sockfd>0);

struct sockaddr_in local;
local.sin_family = AF_INET;
local.sin_port = htons(8000);
local.sin_addr.s_addr = INADDR_ANY;
int err = bind(sockfd,(struct sockaddr*)&local,sizeof(local));
assert(err==0);
fd_set sets[3];
for(int i=0;i<3;i++)
{
FD_ZERO(&sets[i]);
}

timeval tv;
char buf[1024];
while(1)
{

FD_SET(sockfd,&sets[0]);

//register
tv.tv_sec = 1;
//monitor and handle
int nfds = select(sockfd+1,&sets[0],&sets[1],&sets[2],&tv);
if(nfds<0)
{
perror("select");
exit(-1);
}
printf("evnet num = %d\n",nfds);
//handle
for(int i=0;i<nfds;i++)
{
struct sockaddr_in remo


相关文档:

手动配置linux的IP地址

 linux的网卡IP地址是存放在文档中的,这个配置文档在/etc/sysconfig/network-scripts下,名称分别为ifcfg-eth0,ifcfg-eth1....假如您有一块网卡,就只有ifcfg-eth0一个文档,假如您有两块或两块以上的网卡,就会有ifcfg-eth1、ifcfg-eth2等文档的出现。
文档结构:
DEVICE=eth0        &n ......

linux 执行后台命令

nohup命令用法简介
nohup
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用n o h u p命令。该命令可以在你退出帐户之后继续运行相应的进程。n o h u p就是不挂起的意思( no hang up)。
该命令的一般形式为:
代码:
nohup command &
使用nohup命令提交作业
如果使用n o h u p� ......

Linux下使用Qt编程中文乱码的解决


在QT中可以直接使用QTextCodec来转换字符串的编码。
例如,我们想在程序中使用中文,类似tr(“喂,你好吗?”)。我们要在main函数中增加以下几条语句,重新设置一下默认的编码器。
先调用下面两个函数之一
QTextCodec *codec=QTextCodec::codecForName(”gbk”);
QTextCodec *codec=QTextCodec ......

Linux常用名令 1文件操作命令

1. ls:列出文件列表
       格式: ls  option,option可以是: -a 列出隐藏文件,-l 列出文件详细信息
2. pwd:查看当前目录
3. mkdir: 创建目录
4. touch: 创建文件
5. cd: 切换目录
6. cp: 拷贝文件/目录
      格式: cp  srcfile desfi ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号