f_fd = fd; printf("start_connect for %s, fd %dn", fptr->f_name, fd); ....">

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

请教大家一个问题,关于UNIX网络编程第16章非阻塞I/O中的一段代码

    来源: 互联网  发布时间:2016-09-07

    本文导语:  #include "web.h" int main(int argc, char **argv) { int i, fd, n, maxnconn, flags, error; char buf[MAXLINE]; fd_set rs, ws; if (argc ai_protocol); fptr->f_fd = fd; printf("start_connect for %s, fd %dn", fptr->f_name, fd); /* 4Set socket nonblocking */ flags = F...

#include	"web.h"

int
main(int argc, char **argv)
{
int i, fd, n, maxnconn, flags, error;
char buf[MAXLINE];
fd_set rs, ws;

if (argc ai_protocol);
fptr->f_fd = fd;
printf("start_connect for %s, fd %dn", fptr->f_name, fd);

/* 4Set socket nonblocking */
flags = Fcntl(fd, F_GETFL, 0);
Fcntl(fd, F_SETFL, flags | O_NONBLOCK);

/* 4Initiate nonblocking connect to the server. */
if ( (n = connect(fd, ai->ai_addr, ai->ai_addrlen)) f_flags = F_CONNECTING;
FD_SET(fd, &rset); /* select for reading and writing */
FD_SET(fd, &wset);
if (fd > maxfd)
maxfd = fd;

} else if (n >= 0) /* connect is already done */
write_get_cmd(fptr); /* write() the GET command */
}

#include	"web.h"

void
write_get_cmd(struct file *fptr)
{
int n;
char line[MAXLINE];

n = snprintf(line, sizeof(line), GET_CMD, fptr->f_name);
Writen(fptr->f_fd, line, n);
printf("wrote %d bytes for %sn", n, fptr->f_name);

fptr->f_flags = F_READING; /* clears F_CONNECTING */

FD_SET(fptr->f_fd, &rset); /* will read server's reply */
if (fptr->f_fd > maxfd)
maxfd = fptr->f_fd;
}

|
是的,使flags & F_CONNECTING为假。
两种状态,前者表示socket正处于链接过程中,后者表示socket处于读写过程中。

    
 
 

您可能感兴趣的文章:

  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • 请教:线程中调用一个阻塞的方法后,进程及其它线程会阻塞么?
  • 请教大家:有关阻塞模式的实现
  • 在线等待回音,请教各位同仁如何中断I/O阻塞问题
  • 请教一下网络通讯非阻塞巨难的问题
  • 请教:用select进行多I/O操作的时候,这些I/O是否阻塞,是不是已经意义不大了?
  • 关于TCP阻塞问题请教
  • 请教Socket select 无法延时 阻塞 问题
  • 新手请教,linux网络编程。
  • 请教LINUX下的网络编程?
  • 菜鸟请教linux下的网络编程
  • 请教一个网络编程问题,accept函数的,在线等,急。。。
  • 请教linux下网络编程学习方法
  • 请教一个linux网络编程问题
  • 向高手请教linux网络编程的问题!
  • 请教关于LINUX的网络编程的问题
  • 请教各位一个关于linux网络编程的问题
  • 请教一个网络编程的问题
  • 请教看过stevens的unix网络编程的哥哥进来看看
  • 在java网络编程中,传递数据时,如何把二维数组从客户端传递到服务器端?请教大家,谢了
  • 请教:编译《unix网络编程(第2版)》出现下面的错误,谢谢!
  • 继续请教,网络编程问题,服务器端读取后文件里没数据? 大虾们看看。。在线等。
  • 请教java网络编程!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教终端编程&curses编程高手
  • 请教一个shell编程的问题,就是如何在shell编程中读一个文件的内容?谢谢啦!
  • 请教linux下的编程的选择:我听说有gtk+gnome的编程,也有kde里的 什么编程,到底应该选择哪个呢?好象一个是技术好一点,一个是市场占有
  • 请教:我想在unix编程领域发展,我应该在哪些方面努力?
  • 请教Linux下的编程工具
  • 请教一个多进程编程问题
  • 请教高手:如何学习内核编程?
  • 请教gcc编程 问题 关于调用中断 实现 图形模式
  • 请教linux下c编程的一个问题!
  • 急!!请教关于linux socket编程的一个问题!!
  • 请教:想学LINUX内核编程,请指点
  • 请教:Linux下的C++编程和Windows下有什么不同,要注意什么?
  • 请教一下哪里有UNIX下C编程标准下载?
  • 请教串口通信的编程
  • 请教一下:Linux下如何编程制作系统托盘
  • arm串口缓冲和c编程请教
  • 请教如何学习Linux上的编程
  • 请教一个socket编程问题
  • 请教linux 编程问题!!!
  • 请教各位达人什么是编程demo ,怎么做的呢
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)


  • 站内导航:


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

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

    浙ICP备11055608号-3