当前位置:  技术问答>linux和unix

套接字操作的疑惑

    来源: 互联网  发布时间:2016-06-18

    本文导语:  套接字创建之后,并没有连接,我用select测试该套接字的可读写状态,结果是可读可写,我没弄懂为什么会是这样哦,我用的是 centOS 内核是2.6.9的,,,,下面红色的几行是我添加的测试代码,希望有人帮忙解答一...

套接字创建之后,并没有连接,我用select测试该套接字的可读写状态,结果是可读可写,我没弄懂为什么会是这样哦,我用的是 centOS 内核是2.6.9的,,,,下面红色的几行是我添加的测试代码,希望有人帮忙解答一下。

#include 
#include 
#include 
#include 
#include 

char *hostName = "127.0.0.1";
int port = 8030;

void main(int argc,char **argv)
{
    char buf[8192];
    char msg[256];
    int sc;
    struct sockaddr_in pin;
    struct hostent *srvHostName;
    char *str = "A default test string";
    fd_set rset, wset;
    
    if(argch_addr))->s_addr;
    pin.sin_port = htons(port);
    
    sc = socket(AF_INET,SOCK_STREAM,0);    
    if(sc==-1){
perror("Error opening socketn");
exit(1);
    }
/////如下几行是我添加的测试代码,,,,运行的结果令人很不解。。。。。。。。。
    FD_ZERO(&wset);
    FD_SET(sc,&wset);
    rset = wset;
    printf("select ret=%dn",select(sc+1,&rset,&wset,0,0));
    if(FD_ISSET(sc,&rset)) printf("readablen");
    if(FD_ISSET(sc,&wset)) printf("writeablen");

    if(connect(sc,(struct sockaddr *)&pin,sizeof(pin))==-1){
perror("Error connecting to servern");
exit(1);
    }
    FD_ZERO(&rset);
    FD_SET(sc,&rset);
    while(1){
    select(sc+1,&rset,0,0,0);
    if(FD_ISSET(sc,&rset)){
      if(recv(sc,buf,8192,0)==0){
        printf("socket is closedn");
        FD_CLR(sc,&rset);
        exit(1);
      }
    }
    printf("Sending message %s to server...n",str);
    if(send(sc,str,strlen(str),0)==-1){
perror("Error in sendn");
exit(1);
    }
    printf("..sent message.. wait for response...n");
    if(recv(sc,buf,8192,0)==-1){
perror("Error in receiving response from servern");
exit(1);
    }
    printf("nResponse from server:nn%sn",buf);
   }
    close(sc);
}

|
select描述符同时可读写问题:
http://bbs.chinaunix.net/archiver/?tid-169252.html

    
 
 

您可能感兴趣的文章:

  • TCP连接中创建的监听描述字和已连接描述字(套接字)对应的是同一个套接口么,如果是的话,读写数据时系统怎么区分是哪个套接字的?
  • 监听套接字listenfd 已连接套接字connectfd 中fd什么意思
  • 请问原始套接字的绑定和一般都的套接字的绑定有什么区别吗
  • 非阻塞套接字
  • 关于linux套接字的问题
  • TCP套接字抓包的问题
  • 是否可以通过消息队列在进程之间传递套接字?
  • socket套接字群发?
  • linux下原始套接字创建失败
  • SOCKET 编程之从容关闭套接字如何实现????
  • Linux 套接字的问题
  • 如何判断套接字是被关闭了。
  • 请问linux下套接字读就绪产生什么信号
  • Linux下如何在普通用户下创建原始套接字(实现ping)
  • 多线程close() socket套接字的问题
  • udp套接字能否设定成非阻塞模式?
  • 套接字
  • 关于数据报套接字的使用
  • 请教高手:linux原始套接字问题
  • 请问各位大侠:如何将标准输出定位到套接字?
  • 套接字的疑惑
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • [求助]关于unix域套接字
  • 关于子进程间共享套接字描述符的问题?
  • write函数往套接字文件描述符写入数据的时候数据存储在哪里 ?
  • 套接字是进程私有的资源吗?
  • 类unix系统编写大规模响应网络服务程序使用什么套接字模型
  • 使用原始套接字来发送一个icmp包,不适用setsockopt做控制会怎么样?
  • 请问一般套接字的绑定和原始套接字的绑定有什么区别吗
  • Unix Domain套接字的Java包 junixsocket
  • socket(套接字)怎么传输二进制数据?急
  • 高分求教:有关套接字建立ftp的问题
  • select 处理套接字文件描述符
  • 请教套接字中的select()函数问题
  • 套接字中,第二个参数SOCK_RAW 与SOCK_PACKET 有什么区别
  • 请教高人:同一个套接字(做客户端)连接到server后在不同子进程里使用能否不采取互斥措施收发?
  • 如果使用套接字编程,增样控制连接超时?
  • 高分求高手赐教-关于linux下进程共享TCP套接字的问题
  • 一个未连接的客户端socket套接字在select处的奇怪行为
  • 请问在Unix/Linux上的套接字模型有那些,那些比较常用,Apache使用的是那个,谢谢?!如果能和Windows上的作对比就更好了
  • 请问在vmware虚拟机下的UBUNTU系统里,原始套接字sock_raw能否正常收发数据
  • 求助!如何使用同一个套接字和端口实现反复下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3