2636|5

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

[求助]Socket问题 [复制链接]

小弟最近初学Socket编程,自己在windows mobile6.0上编了一个读取服务端时间的例子,不能成功;因为初学,其中肯定有很多错误,请大家指教。谢谢!

1.先创建两个菜单按钮;一个"server",一个"client";
2.这两个按钮的单击事件分别创建一个线程,线程的回调函数是ServerMain和ClientMain
3.先点击“server”按钮,启动server线程
4.在单击“client”按钮,启动client线程
问题:为什么没有读到服务器端事件??

代码如下:
“server”按钮事件:
void Server()
{
    DWORD dwId;
    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ServerMain, 0, 0, &dwId);
}

“client”按钮事件:
void Client()
{
    DWORD dwId;
    CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)&ClientMain, 0, 0, &dwId);
}

static DWORD WINAPI ServerMain(LPVOID lpvParam)
{
        int listenId,connId;
        sockaddr_in serveraddr;
        SYSTEMTIME time;
        char buff[128];

        listenId = socket(AF_INET, SOCK_STREAM, 0);

        memset(&serveraddr, 0x00, sizeof(sockaddr_in));

        serveraddr.sin_family = AF_INET;
        serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);
        serveraddr.sin_port = htons(13);

        bind(listenId, (sockaddr*)&serveraddr, sizeof(sockaddr));
        listen(listenId, SOMAXCONN);

        for( ; ;)
        {
                connId = accept(listenId, NULL, NULL);

                GetSystemTime(&time);
                sprintf(buff, "\n%04d年%02d月%02d日\n", time.wYear, time.wMonth, time.wDay);
                send(listenId, buff, strlen(buff), 0);
        }

        return 0;
}

static DWORD WINAPI ClientMain(LPVOID lpvParam)
{
        int  sockfd;
        char buff[128];
        sockaddr_in servaddr;

        socket(AF_INET, SOCK_STREAM, 0);

        memset(&servaddr, 0, sizeof(sockaddr_in));
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(13);
        servaddr.sin_addr.s_addr = inet_addr("127.0.0.1");   

        connect(sockfd, (sockaddr*)&servaddr, sizeof(sockaddr));

        while(recv(sockfd, buff, sizeof(buff), 0) > 0)
        {
                WCHAR wBuff[256];
                MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, buff, -1, wBuff, sizeof(wBuff));
                MessageBox(NULL, wBuff, L"Socket", 1);

        }
       
        return 0;
}
请高手赐教,为什么没有取到服务器段传过来的时间?谢谢:)

最新回复

eeworld上有源码,这个应该够了。  详情 回复 发表于 2008-6-4 12:02
点赞 关注

回复
举报

60

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
看看EVC高级编程,那本书,
里面有示例。
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 wbcp2000 的回复:
看看EVC高级编程,那本书,
里面有示例。

谢谢楼上的:)
 
 
 

回复

48

帖子

0

TA的资源

禁止发言

4
 
有人有 EVC高级编程 这本书的电子书吗,给发一份,谢谢!
jin.guo08@163.com
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

5
 
太大了,不太好发,网上很好找的,你搜《evc高级编程及应用开发》应该能找到
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

6
 
eeworld上有源码,这个应该够了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表