用C语言进行SOCKET网络通信编程时怎么用回调函数实现及时信息通知.谢谢兄弟们.
日期:2007-05-21 荐:
用C语言进行SOCKET网络通信编程时怎么用回调函数实现及时信息通知.谢谢兄弟们.就是怎么知道当网络发生中断或者从SERVER端发送一个信息到CLIENT端,那么CLIENT端可以马上调用这个函数来把信息进行处理.最好能有个例子.在VC里是用消息处理的.在C里怎么用回调函数实现呢?把你的想接通知的类如CMyDialog定义一个全局指针放的MyDialog.h中extern CMyDialog* pMyDialog;在MyDialog.cpp中:CMyDialog* pMyDialog=NULL;在CMyDialog::CMydialog(..){pMyDialog = this;}然后负责通讯的cpp包含MyDialog.h当recv()到数据时候if(pMyDialog)pMyDialog->OnRecv();注意pMyDialog在CMyDialog的onclose里设置为NULL;开一个线程不就行了!!pthread_create(pid,NULL,&func,NULL);C and C are different.....Linux and windows are different, tooto qin_wei(烤毛蛋):我只用C不用C 来实现.to EmbraceTM() :假如在func()里实现将收到的数据打印,那么我在程序里设置一个共享变量然后在func里做循环检查么?如果有信息那么先上锁,写共享变量,然后解锁,发信号,这时让func去显示么?这好象没用到回调函数的概念吧.就是由事件触发执行func.select模式~~~~~~~recv调用完后执行处理函数~我想做个中间件,他是个EXE文件,然后再做一些API供我的应用程序调用.这个中间件和应用程序还有API函数在同一台机器上.就是说应用程序调用API函数和中间件用TCP/IP通信,然后中间件再连接到外面的SERVER上.在API函数中我想用回调函数来实时处理中间件获得的任何信息,包括网络断掉,已经收到SERVER返回的数据,用回调函数的意思就是要用事件通知的方式处理网络中信息.还有.无论是SERVER还是CLIENT怎么能实时检查出网络断掉这个信息.包括出现网络故障和对方主动关闭SOCKET.两个进程间用回调函数好像不行吧那可以CreateEvent创建几个事件句柄hEventDisconn,hEventRecv,hEventSend你的中间件负责signled这些事件,应用程序Waitforsingleobject等待我前段时间编写的C/S还没有成功呢!现在就是在两个进程间.因为中间件是一个进程,对于APPLICATION它就相当于SERVER.应用程序又是一个进程.相当于一个客户端.也就是关键在中间件收到信息后怎么触发WINDOWS事件,然后这个事件通知APPLICATION去执行在APPLICATION侧已经注册好的回调函数.在MFC中也许挺好做的吧.他有FD_READ,FD_CLOSE这些事件通知APPLICATION.可现在在C中怎么实现.liunx和unix下可以使用select()函数,监听网络数据.根据定义的协议判断采用相应的处理函数来处理!int select(int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);如果在windows下,也有这样的函数~如 bitzilla(桃之夭夭) ( ) 所说:C and C are different.....Linux and windows are different, too不同的平台,程序也会不一样,所以楼主还是自己看看吧.网上这种例子也不少.选择适合自己的~select函数一般只用在SERVER端呀,回复人: flyinghawk_79(天之子) ( ) 信誉:99 2005-04-15 17:08:00 得分: 0 select函数一般只用在SERVER端呀, ==================谁说的?
标签: