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

select客户端的使用

    来源: 互联网  发布时间:2016-04-05

    本文导语:  环境:RedHat Enterprise Linux AS 4 + C(C语言) 我想请问一下,客户端如何使用select呢?客户的功能是发送一条数据给服务端,然后等待接收服务端的返回数据。 是不是要监视某个描述符是否可写,可写就发送数据?那...

环境:RedHat Enterprise Linux AS 4 + C(C语言)
我想请问一下,客户端如何使用select呢?客户的功能是发送一条数据给服务端,然后等待接收服务端的返回数据。
是不是要监视某个描述符是否可写,可写就发送数据?那是在什么情况下就可以写了呢?
我在connect之后就监听描述符,但是不行,没有可写的描述符。
谢谢!

|
一个简单例子:
Socket Programming


#include 
#include 
#include 
#include 
#include 
#include 


#define buflen 512
unsigned int portno = 3333;
char hostname[] = "192.168.100.2";

char *buf[buflen];     /* declare global to avoid stack */

void dia(char *sz) { printf("Dia %sn", sz); }

int printFromSocket(int sd, char *buf)
  {
  int len = buflen+1;
  int continueflag=1;
  while((len >= buflen)&&(continueflag)) /* quit b4 U read an empty socket */
    {
    len = read(sd, buf, buflen);
    write(1,buf,len);
    buf[buflen-1]='';  /* Note bug if "Finished" ends the buffer */
    continueflag=(strstr(buf, "Finished")==NULL); /* terminate if server says "Finished" */ 
    }     
  return(continueflag);
  }


main() 
   {
   int sd = socket(AF_INET, SOCK_STREAM, 0);  /* init socket descriptor */
   struct sockaddr_in sin;
   struct hostent *host = gethostbyname(hostname);
   char buf[buflen];
   int len;

   /*** PLACE DATA IN sockaddr_in struct ***/
   memcpy(&sin.sin_addr.s_addr, host->h_addr, host->h_length);
   sin.sin_family = AF_INET;
   sin.sin_port = htons(portno);

   /*** CONNECT SOCKET TO THE SERVICE DESCRIBED BY sockaddr_in struct ***/
   if (connect(sd, (struct sockaddr *)&sin, sizeof(sin)) 

    
 
 

您可能感兴趣的文章:

  • select+read 读服务器发送过来的数据, 假设服务器调用close后, 客户端的select是否返回这个socket可读?
  • select 处理客户端的问题
  • 服务器端关闭,客户端select 会一直可读, 读的长度是-1,怎么在不关闭客户端socket下,清除可读
  • 我做了个socket服务器,但是客户端接收数据的时候用select()函数????可接受不到
  • 一个未连接的客户端socket套接字在select处的奇怪行为
  • 各位大虾,请给我来个SELECT检测一服务器/客户端有效否,且有TIMEOUT限制的例子!!!
  • 求助!ntp协议客户端实现时,select超时
  • 多个客户端使用select的FD_ISSET问题
  • 对socket使用select(max_fd,&rd_set,&wr_set,&er_set,&timeout);当服务端断开TCP连接,客户端就会崩溃。怎么解决?谢谢
  • 服务器将select查询出来的数据直接向客户端发送,怎么改?
  • 紧急求救:select轮循,单进程处理多个客户连接问题(TCP/IP),那为大大指教,小弟不胜感激!!代码如下:
  • 多客户端Socket的select问题,高手帮忙!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • insert into select和select into的使用和区别介绍
  • Select() 是否只能在非阻塞IO里使用,在阻塞IO里可以使用吗?
  • 在多线程中使用select
  • socket通讯使用select的问题
  • 请问使用SELECT()函数怎么监测串口发送数据?
  • 请教select的使用问题
  • 如何使用select实时监听串口通信?
  • 问Linux下select() 的使用
  • socket的select使用超时的问题
  • pycharm 使用心得(九)解决No Python interpreter selected的问题
  • 关于select()函数的使用问题
  • 使用select 定时的问题
  • insert select与select into 的用法使用说明
  • pc和开发板上使用select多路复用,不同的现象问题请教。
  • mysql中insert与select的嵌套使用解决组合字段插入问题
  • mysql中insert与select的嵌套使用方法
  • zf框架的db类select查询器join链表使用示例(zend框架)
  • 解析MySQL中INSERT INTO SELECT的使用
  • select使用返回值,一个让我困惑的现象.
  • 使用Java获取html中Select,radio多选的值方法
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selected定义及介绍
  • 究竟怎么样取得的<select name="select_user" size="8" multiple>值
  • java命名空间javax.accessibility类accessiblestate的类成员方法: selectable定义及介绍
  • man select 结果返回 No manual entry for select
  • java命名空间javax.swing.tree类defaulttreeselectionmodel的类成员方法: selection定义及介绍
  • select <0时调用exit(0),为什么程序没有退出,而是继续执行select了?
  • java命名空间javax.swing.tree类defaulttreecellrenderer的类成员方法: selected定义及介绍
  • JDBC里select sum和select返回的字段类型不一样
  • java命名空间java.awt.event类itemevent的类成员方法: selected定义及介绍
  • sql代码:select database select all table
  • java命名空间javax.swing类defaultbuttonmodel的类成员方法: selected定义及介绍


  • 站内导航:


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

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

    浙ICP备11055608号-3