其他代码省略, 一个使用Socket客户端从网上Socket服务器得到时间 更新到本地程序的代码:
...........
unsigned long ulTime ;
.................
recv (sock, (char *) &ulTime, 4, MSG_PEEK) ;
...............................里面的 (char *) &ulTime 是什么意思? ulTime是一个long型的数据,这里他先取得这个long型数据的地址,然后强行转换成一个指针???recv的第二个参数定义为:"指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据". 不理解这里的用法,问的比较初级,请讲的细一点,谢谢!
...........
unsigned long ulTime ;
.................
recv (sock, (char *) &ulTime, 4, MSG_PEEK) ;
...............................里面的 (char *) &ulTime 是什么意思? ulTime是一个long型的数据,这里他先取得这个long型数据的地址,然后强行转换成一个指针???recv的第二个参数定义为:"指明一个缓冲区,该缓冲区用来存放recv函数接收到的数据". 不理解这里的用法,问的比较初级,请讲的细一点,谢谢!
解决方案 »
- 如何将MFC图像控件中显示的帧数据保存?
- 【老问题求解】多线程调用同一个dll
- 如何限制最大连接数,即使达到最大连接数后,客户端在连接后返回不接受,而服务器正常工作
- 高分求关于线程阻塞的问题
- 求tabcontol的例子
- 请教一个问题,关于makefile的,希望帮忙解决
- 请问怎么将_variant_t 变量转换为char *
- 100分征求PDF文件的合并工具!谢谢
- 关于多视图的问题?解决送高分?
- 24、 程序何时进入dllmain的消息循环?是在主程序利用AfxLoadLibrary("ebdk_com.dll")导入dll函数时,还是在调用dll中的函数时,自动进入dllmain()循环?
- 棋牌服务器,请指点一下新人,谢谢
- 对话框消息传递问题!!求教高手!
我以前用 Java,直接声明用long ulTime;
就行了,为什么在windows C中,一定要用这个 unsigned 呢,都什么情况下必须用unsigned 这种无符号型(是不是变量有正负的时候)? 是不是只要我不使用位运算,就没必要用unsigned ?
觉得楼主对C++得基本概念很不熟悉,不能靠java那点知识来理解C++,虽然他们很象。如果你真想搞C++,至少买本C++ Prime钻研几个星期再说,不要因为看到和java类似得语法就跳过几个章节,这是非初学者常遇到得问题,总以为自己懂了,一些自以为无关紧要得章节就跳过不学了。楼主所说得什么时候用unsigned得问题,这哪有定规?你至少需要理解unsigned是干吗的,是否定义unsigned到底有什么不同(仅仅知道它有正负是不够的,还要知道有没有正负到底会导致那些结果的不同),这点我相信你在java里也没有学透
case WM_CREATE:
iRetval = WSAStartup(wVersion,&wsaData);
wVersion = MAKEWORD(1,1);
sockLisnId=socket(AF_INET,SOCK_STREAM,0);
socketaddr.sin_port=htons(9999);
socketaddr.sin_family=AF_INET;
socketaddr.sin_addr.s_addr= htonl(INADDR_ANY);
iResBind=bind(sockLisnId,(LPSOCKADDR)&socketaddr,sizeof(socketaddr));
iLisnRes=listen(sockLisnId,SOMAXCONN);
while(TRUE){
sockAccpt=accept(sockLisnId,(struct sockaddr*)&socketaddr,sizeof(socketaddr));
iRevRes=recv(sockAccpt,szBuffer,1024,0);
closesocket(sockAccpt);
}
closesocket(sockLisnId);
WSACleanup();好像在 WM_CREATE里面没办法触发 WM_PAINT事件,难道必须调用 InvalidateRect这些函数吗
不是写在哪里都可以的
case WM_CREATE:
iRetval = WSAStartup(wVersion,&wsaData);
wVersion = MAKEWORD(1,1);
sockLisnId=socket(AF_INET,SOCK_STREAM,0);
socketaddr.sin_port=htons(9999);
socketaddr.sin_family=AF_INET;
socketaddr.sin_addr.s_addr= htonl(INADDR_ANY);
iResBind=bind(sockLisnId,(LPSOCKADDR)&socketaddr,sizeof(socketaddr));
iLisnRes=listen(sockLisnId,SOMAXCONN);
while(TRUE){
sockAccpt=accept(sockLisnId,(struct sockaddr*)&socketaddr,sizeof(socketaddr));
iRevRes=recv(sockAccpt,szBuffer,1024,0);
closesocket(sockAccpt);
}
closesocket(sockLisnId);
WSACleanup();好像在 WM_CREATE里面没办法触发 WM_PAINT事件,难道必须调用 InvalidateRect这些函数吗
不是写在哪里都可以的