怎样来实现服务器的循环接收客户端的连接
最近刚开始学习socket编程,遇到了一个问题:
我用对话框来实现服务器的接收客户端的连接和发送过来的数据。一对话框上有一个Edit控件接收客户端发送的数据, 有一个Button控件来运行服务,也就是点击一下按钮服务器开始运行。我与到的问题是我点击一下按钮,只能接收一个客户端的连接。我想把accept放在while(TRUE)里来实现循环不断接收。当按下按钮时,发生了对话框不死在哪不会动了,连接没有响应,edit编辑框也不能接收到数据,当有窗口遮挡住这个对话框时编辑框和按钮都看不到变成了和窗体一样的颜色。不过客户端还是可以连接上,并可以接收到服务器返回的数据。这是怎么会事,我应该怎么用accept这个函数?
请各位指导!
[解决办法]
服务器端的接受循环放在一个线程中,在按下 button后 启动线程
如果在 button 函数中使用 while(ture) 循环 窗口就无法处理其他消息了。
[解决办法]
你不能影响windows的消息处理,
用WSAAsynSelect关注FD_ACCEPT就不错,有连接进来你的窗口就会收到你定义的消息,
然后你再accept,对于每个accpet后返回的套接字再起线程处理,在线程里接收该套接字的数据后再通过edit控件显示出来。