我有好几个问题,希望高手给我思路:
我做个简单的模型:
//服务器端程序
static int a ;
main()
{
    while(1)
   { 
           accept//一直等待客户端数据传输请求
           如果请求成功则发送数据a;  
    }}ONTIMER//定时器:0.1秒运行一次
{
         a+=1;}
问题:
1.当程序运行的时候,定时器已经触发,但进不去,程序在accept的地方死了。我问了别人要用多线程,如果不用多线程还能怎么解决吗?
2.怎么确定客户端接受的a是对的?另外绑定一个数据b,但b设定为定值,在客户端检验b对不对然后推倒a对不对?

解决方案 »

  1.   

    1. 这个我没明白 定时器 和主线程不在一个线程里啊 应该能进去,难倒是抢不到CPU时间
    2. TCP传输是可靠的 需要再检查a值么 还是a值在你的逻辑上 可能有要求
      

  2.   

    accept是阻塞了,和timer消息共用了一个线程
      

  3.   

    当然可以不适用多线程
    一种方式是在创建Socket的时候使用非阻塞方式,
    另外一种是使用MFC的CSocket.
    PS:如果是简单的网络服务 CSocket 完全可以满足需要.对于大数据量多客户端,复杂的网络服务还是使用SOCKET,将Accept放在独立线程中,
    每个连接建立一个独立线程,更复杂的情况可以考虑使用客户端的连接池.