请问高手一个VB编程问题
可以看看这个,另外可以使用百度搜索一下,推荐"中国代码网",以下的内容大致差不多了主要是看你如何设计传输的东西(的格式)和整体应用
Microsoft的Windows Sockets API是Windows下的网络应用程序接口,为了适用于Windows下的消息机制和异步的I/O选择操作,Windows Sockets API在功能上扩充了将近20个函数,其中扩充的部分均冠以前缀WSA(Windows Sockets Asynchronous),如WSAStartup、WSAClean等,充分体现了Widnows的优越性。此外,Windows Sockets API有16位版和32位版两种,16位版是单进程的,32位版则提供了多线程下的安全保护。
Microsoft Visual Basic提供了用于Windows Sockets编程的可用控件——Winsock控件。该控件为用户提供了访问TCP和UDP网络的极其方便的途径。并且适用于Microsoft Access、Visual Basic、Visual C++和Visual FoxPro等多种可视化环境。通过Winsock控件编制C/S程序,程序员无须了解TCP或低级Winsock APIs调用实现的细节,如用户无须考虑网络字节顺序与本机字接顺序便可直接进行数据的传送。用该控件实现网间进程通信极其方便。
在TCP应用中,为了建立一个网络连接实例(Instance)的服务器端,只需设置本地服务端口号,然后服务器调用方法Listen进入阻塞状态,等待来自客户的连接请求。与此对应的客户端不但要将Winsock的属性RemoteHost置为服务器的名称(IP地址或网络代号),还应设置服务器所监听的相应服务的端口号(RemotePort),如FTP服务在21号端口,HTTP在81号端口等。然后调用方法WinsockConnect向服务器发出请求。服务器接收到客户请求时,事件ConnectionRequest将被触发。如服务器愿意提供服务,则可调用Accept方法接受连接。
一旦连接建立,两端均可使用SendData或GetData进行数据的发送或接收。事件DataArrival将在另一端数据准备就绪时被触发。
UDP协议的实现与TCP不同的是,调用Sockets的两端无需建立连接便可进行数据的传输。因此,一个UDP应用可以同时担任服务器或客户的角色。
以下程序代码为Visual Basic Windows Sockets编程的基本框架。
'服务器方
Private Sub Command1Click()
'设置本地服务端口号
Winsock1localport=2048
'服务器进入监听状态
Winsock1listen
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'收到客户连接请求
'检查Socket状态
If Winsock1State <> sckClosed Then Winsock1Close
'接受客户请求
Winsock1Accept requestID
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'对方数据已准备好
'可用GetData()/SendData()接收/发送数据
'处理客户数据
……
End Sub
Private Sub Form_Unload(Cancel As Integer)
Winsock1Close
End Sub
'客户方
Private Sub Command1Click()
'设置服务器网络名
Winsock1RemoteHost=“193168140”
'设置服务器相应服务端口号
Winsock1RemotePort=2048
'向服务器发出连接请求
Winsock1Connect
End Sub
Private Sub Winsock1_Connect()
'服务器响应连接
'可以进行GetData()/SendData()进行数据传输
……
End Sub
Private Sub Form1Unload()
Winsock1Close
End Sub
该段程序演示了用Visual Basic建立TCP连接的基本过程。因本文重在讲解Sockets编程,故文中未涉及VB自己封装的故障处理函数Winsock1Erroe(),读者可自行编制。以上程序段可作为一般TCP应用的基本框架加以扩展使用。
Microsoft Visual C++实现过程与前述的VB实现类同。具体实例可见Microsoft Visual C++ Samples中的chatsrv与chater程序。
随着Internet的逐步兴起,Sockets编程必将成为流行的网络编程接口之一。也许您会发问:ISO的OSI模型又是何等地位呢?笔者的观点是:ISO的OSI模型必将成为网络应用的统一界面,Sockets接口的广泛应用则为OSI模型开拓了更广泛的应用前景
这个办法能实施的前提是你们盟至少有1-2个与对方兵种质量和数量旗鼓相当的盟友,假如对方22级,你们全部都16级以下,那么神也帮不了你。
好了,看下面这幅
图中有三个高级城堡,其中点火的是我方盟友,他家中有大量资源,但是却不在线。图中左方的韩国狗在拼命的狂抢他。
这时我出现两种尴尬的局面,我没法一个人打韩国狗,那样我会全军覆没,但是如果我把兵一直放在盟友家里,我自己又容易有危险,而且韩国狗即使不打我,我一直把兵放队友家里,我还不得不一直盯着。最重要的是,韩国狗的战争技能已经点满,最后一个主动技能,攻击不死亡只转化成伤兵,对我的威胁很大。他如果点开主动技能,就可以直接跟我硬磕,我是不占任何优势的。
这个时候,我先观察他持续的抢几波。要知道,他家里几十万兵力,如果抢一个城堡,是可以4-5队满兵同时出动。而我,无动于衷,就是要让他麻痹。
当他麻痹后,我就退出联盟,也跟着他一起抢,正所谓肥水不流外人田。他也一直跟着我拼命地抢,比赛谁抢的多。
然而,后手在这里,我让联盟的R4给我一个邀请函
我在他派出5波兵一刹那。。我加回联盟,也同时出动一支精锐部队。。
在这种情况下,很少有人能够发觉。因为双方在紧挨着拼命抢的时候,都是不断的派兵,视角很少切换到不相干城堡上面,他不会发现我的城堡已经加上了队标。他仍然以为我在跟他一起抢夺资源。
还有一个致命的问题,虽然他有几十万部队,但是近卫军的数量是有限的,他派兵的时候是连续派出5支部队,不一定会每只部队都配置好兵力,很有可能是一队近战,几队后排。
然后,战斗报告一出,他就傻眼了。。。
这时候他已经没法再抢夺了。。。甚至保护自己都困难,于是开了保护。。
我呢,担心他秒伤兵,也不敢贸然进攻,于是我还是把我盟友的资源抢干了算了。
这种办法是非常有效的,而且即使对方有意留心观察你的城堡标志变化,他也非常有效,为什么?几个原因:
这游戏延迟特严重。(不是服务器问题,就是程序写的有问题,有待优化)
如果他每次出发之前他都要留意我的城堡变化,那么他的抢劫效率会大打折扣
即使他观察了,但是,我的兵也可以出很多波,我可以把每波兵交错开,不是一起出发,他就很难派兵,只能一队满兵一队满兵的抢。
然而,即便如此,我还有加速呢,依然可以阴到他。
就算我不用加速,我加盟退盟可以快捷操作,而且是无成本的,他的召回总有成本吧?
如果不是我一个人采取这种方式来阴他呢?假如再有一个,他必然应接不暇。
即使是小号,比如13堡,大使馆依然容纳一定数量,我伤他死,我永远不亏。
0条评论