| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1909 人关注过本帖
标题:VC中socket编程中recv()运行不了,求解!!!
只看楼主 加入收藏
enjoy迷星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2011-11-5
结帖率:80%
收藏
已结贴  问题点数:5 回复次数:6 
VC中socket编程中recv()运行不了,求解!!!
{   
    WSADATA wsaData;
    //初始化Socket库
    WSAStartup(MAKEWORD(2,0),&wsaData);
    //创建一根电线
    SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    SOCKADDR_IN sa;
    sa.sin_family=AF_INET;
    //设置电线连接服务器端的端口 www.time.国家授时中心
    sa.sin_port = htons(IPPORT_TIMESERVER);//授时服务器是37端口IPPORT_TIMESERVER。210.72.145.8
    sa.sin_addr.S_un.S_addr = inet_addr("210.72.145.8");  //Time.nist.gov   192.43.244.18
    //为什么不用设置客户端的端口,难道不需要客户端的端口吗?(一般为动态生成!)
    if(connect(sock,(SOCKADDR *)&sa,sizeof(sa))==SOCKET_ERROR)
    {
         MessageBox(NULL,TEXT("连接失败!!!"),"",MB_ICONERROR);
        ShowError();
        return;
    }
    MessageBox(NULL,TEXT("连接成功!!!"),"",MB_OK); ////////////测试用
    TCHAR buff[256];
    ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
    unsigned long ulTime=-999990;
    MessageBox(NULL,buff,TEXT("1"),MB_OK);/////////////此句还可以运行!!!!测试用

                 recv(sock,(char *)&ulTime,sizeof(unsigned long),0);/////////////此句运行有问题!!!!

    MessageBox(NULL,buff,TEXT("2"),MB_OK);/////////////此句已不能运行!!!!测试用   
    wsprintf(buff,"%i",ulTime);
    closesocket(sock);
    WSACleanup();
}

当程序执行到:【recv(sock,(char *)&ulTime,sizeof(unsigned long),0);/////////////此句运行有问题!!!!】时,
程序就走不了了,在网上搜说是socket阻塞,可我不懂。。。急急急!!!
搜索更多相关主题的帖子: 服务器 电线 Socket 中心 
2011-11-07 22:44
wuyunxong
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:148
注 册:2011-10-26
收藏
得分:1 
兄弟,你放错地了!
2011-11-07 23:12
RunGame
Rank: 2
等 级:论坛游民
帖 子:20
专家分:48
注 册:2011-10-26
收藏
得分:1 
确定当与服务器建立链接后,服务器就会向客户端发送消息吗?
当接收缓冲区没数据时,recv为锁定buffer
2011-11-07 23:49
Toomj
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:257
专家分:1826
注 册:2011-5-17
收藏
得分:2 
socket阻塞是说recv()函数没收到消息,程序会在这里停止直到收到消息。测试客户端要先开服务器并让服务器发送消息呀。。。
不过一般都不会这样写,会用多线程另开一个线程用来接收消息,这样即使没有消息到来也可以继续运行程序;或者是用异步套接字
2011-11-08 09:24
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:1 
初学时写阻塞socket就可以,练习,熟悉原理。
建议不要先学连人家的服务器,先自己写个,能通讯的。
TCP,UPD都试下,然后一步步写阻塞多线程,异步,重叠IO,完成端口等等

为游戏狂~~!!    大家努力编哈!
2011-11-08 09:47
enjoy迷星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2011-11-5
收藏
得分:0 
回复 3楼 RunGame
是的,当与授时服务中心服务器建立链接后,服务器就会自动向客户端发送消息;
而且我在视频上看到的,他就可以接受数据...
所以费解~~~
2011-11-08 19:01
enjoy迷星
Rank: 2
等 级:论坛游民
帖 子:18
专家分:42
注 册:2011-11-5
收藏
得分:0 
回复 2楼 wuyunxong
应该怎么放呢?是那一句放错地儿了呢???
2011-11-08 19:02
快速回复:VC中socket编程中recv()运行不了,求解!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018777 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved