随后的工作中,我发现因为自己各种基础知识的薄弱,每前进一步都会遇到n个节外生枝的问题。
整理下代码,建立自己的MyWinsock.h和MyWinsock.cpp。
遇到个重复定义的问题,解决见下:
关于WINSOCK.H与winsock2.h中的重定义解决办法分析
http://eggbucket.iteye.com/blog/1140232
然后我试图不利用消息框,直接在画面中显示IP。
定义一个返回指针的函数,将获得的IP地址字符串头指针存储在全局变量char *ip中,在游戏显示调试信息时一并显示出来。顺利实现。
常识:
当一个非void函数有可能不返回值时会警告warning C4715: 不是所有的控件路径都返回值。只要将函数写的完备些就ok了。
下一步我想实现对远程客户端的控制。
先不要搞太复杂,初步打算做一个运行后就不断试图和我的IP建立连接的客户端,而我这边的主机已经早早打开等待着,一旦收到请求就同意连接,成功后显示,而后对方的操控动作会在我这边反映出来。
对着书一句句抄服务端程序,编译中先后遇到LNK2005和LNK2001问题。
常识:
不管是变量还是函数,都要先申明再定义,让编译器自动在定义同时申明的做法并不规范。
相关文章如下:
VC++的链接错误LNK2005
http://bbs.csdn.net/topics/70346371
extern的用法
http://blog.csdn.net/henry_sea/article/details/6185454
发现自己对监听、连接、接收的机制还不是很理解,比如listen之后,服务端程序是不是就一直自动等待客户端的connect申请?假如在一个子函数中listen,跳出子函数后能否再建立连接?
不管这些了,先试试看,机制设置为用while循环让服务端和客户端不断互连,连成功了才跳出。
在本机开两个端测试暂时达到目的。不过用了while循环后程序很容易不响应像死机一样,这里就有一个如何让程序等待而不占用cpu的问题。