大家在socket编程时如果select函数出现错误,返回为-1时怎么出来啊 我的程序这两天不知为啥老是select出错,原因有:connect reset by peer,illegal sequence 我程序里没有处理错误,直接break进入下次循环,结果老是出错,直到日志文件撑到2G,郁闷啊 不知道大家是怎么处理,把socket关掉重新建立连接是不是一种方法,能彻底解决问题吗
by happytgrape - C/C++ - 2006-03-09 20:12:12 阅读(3715) 回复(8)
socket编程中select的使用 来源: http://www.uumbbs.com/show_topic.aspx?topicId=3084&forumId=208 select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使...
一个简单的程序:
Server端使用select监听多个Client,Client发数据给Server,Server把受到的数据打印出来。
出现的问题是:当只有一个Client连接时,无法收到Client端发来的数据,多个Client连接时则正常。
我是使用telnet做Client来测试的。
代码如下,各位老大帮看一下:
#include
我想在server端侦听不同的输入,例如键盘和client端的输入。 代码如下: while(1) { FD_ZERO(&readset); FD_SET(0, &readset); FD_SET(pr_sock, &readset); val = select(2, &readset, NULL, NULL, NULL); if( val == -1) { perror("select"); exit(1); } else { if( FD_ISSET(pr_sock, &readset) ) { if((npr_sock=accept(pr_sock, NULL, NULL)) < 0 ) { perror("accepting connec...
翻看了论坛差不多两百来篇帖子也不得其解,实在没辙了,才发帖询问,不然这半夜三更的,谁不愿意睡觉啊。 好吧我承认这是作业,但不是我的,写这个是想提高一下编程水平,谁让我是半调子呢,不过Linux到是用了几年了,以前从未接触过socket编程,临危受命,不求源代码了,希望各位给指点指点,目前我能接受到服务器传回的数据,但是对于使用select进行命令处理还是很多地方不太明白,下面贴出代码,这个代码是我根据作业框架修改的...
作者: redfans 出自: http://www.linuxdiyf.com 在linux下使用mysql(特指MySQL的客户端工具)进行查询,当数据比较多时,很快就一页一页的翻过去了,无法看清数据。 在Linux下是有办法看清每一页的数据的。可以用--pager参数 比如mysql --pager=more 或者mysql --pager=less 这样每显示满一页,就会等待你按键来翻页,比如按空格键。按q则退出此查询,不用等到全部显示完。 如果使用了--pager=less还可以按B键来往前翻页,看...
各位大虾,请给我来个select检测一服务器/客户端有效否,且有TIMEOUT限制的例子!!! 对TIMEOUT,select始终理解的不透彻!! 望帮忙!!谢谢!!
各位大虾,请给我来个select检测一服务器/客户端有效否,且有TIMEOUT限制的例子!!! 对TIMEOUT,select始终理解的不透彻!! 望帮忙!!谢谢!!
网络编程select函数的第三个参数有点不懂,请大家解释以下。 select的第三个参数是 侦听对写事件感兴趣的fd集合。 什么情况下写事件集合中的fd被置?书上说是在内核中的发送缓冲区中有数据时,就表示可写,但还是不明白。 一般对写事件的操作如下 ioctl(fd, FIONBIO, 1);//设置为非阻塞。 FD_SET(fd, &writeset); ret = select(maxfd+1, &readset, &writeset, NULL, NULL); if(ret > 0) { if(FD_ISSET(fd, &writeset))...
在socket编程时使用select模型,如何判断对方主机已经关闭?
[code]
// sockselect.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include
以前在32位unix运行一直正常的软件,最近移植到HP-UX 11.23 for 安腾. 在HP-UX核心 FD_SETSIZE=2048 备的机器上运行正常, 但是 FD_SETSIZE=4096 (因为种种原因ORACLE rac 10g 要求修改内核使然), 记过在 ret=select(nfds+1,&revfd,0,0 )函数返回出错,errno=9,是bad file 描述符的意思. 估计FD_SETSIZE增大以后造成 FD_SET 的问题,请问高手们如何下手.