QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 793|回复: 5

问一个编程方法

[复制链接]
发表于 2005-1-19 23:08:45 | 显示全部楼层 |阅读模式
我想编一个双向互通的程序
使用socket,实现:
1,一端发现终端有字符输入,就把字符发出,
2,若收到字符就把收到的在终端显示

我想问的是,怎么样实现1,2 的调节?就是两者互相不干涉?

我想select函数能不能实现这个?但是select函数返回值是发生变化的文件个数,我还是不知道怎么确定到底是哪个变化了。

请帮忙指点一二。用select怎么确定两个read到底是哪个变化了?
或者还有别的方法实现?

谢谢
发表于 2005-1-20 00:26:01 | 显示全部楼层
改变一下终端模式好像就能马上相应键盘输入,或者你在论坛里找找kbhit。输出倒好办,fflush(stdout)就行了。是进程间的通讯还是机器间?
你说的互不干涉是指什么方面?
回复

使用道具 举报

 楼主| 发表于 2005-1-20 12:00:00 | 显示全部楼层
互不干涉,就是驱除read的阻塞
我用if是不行的
就是说在判断有没有键盘输入的时候就阻塞了,无法判断读socket。反之也是一样的
回复

使用道具 举报

 楼主| 发表于 2005-1-21 12:39:03 | 显示全部楼层
我用select函数,结果可以从server端往client端发,也可以从client端往server发,但是,只能单向——就是说第一次是什么方向就是什么方向,反方向就不行了:(

我回头再看看问题出在什么地方
回复

使用道具 举报

发表于 2005-1-22 16:47:40 | 显示全部楼层
你用FD_ISSET()来判断哪个文件描述符可以读即可。如果返回为真,则从键盘或者socket来读取数据,反之则不要进行此操作。 所以使用select是可行的,只是你不知道下一步怎么处理而已。
回复

使用道具 举报

发表于 2005-2-1 15:02:15 | 显示全部楼层
select +command模式+线程,再参考mfc的异步socket源码,可以自己出来一个自己的异步socket(实现了OnSend, OnReceive, OnClose, OnAccept).
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-6 16:34 , Processed in 0.037761 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表