加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

使用swoole进行消息推送通知,配合vb.net进行客户端开发一样爽[

发布时间:2020-12-13 14:01:45 所属栏目:Linux 来源:网络整理
导读:在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品。所谓?识不足则多虑,威不足则多怒、所以就是怕,只能跟领导说了运用极光的推送功能,而且还说出了一定的理由,领导自然也只有相信了

  在以前的项目中,就曾听说过swoole的大名,想用来进行消息推送,但是当时只是有了初步的了解,并不敢大胆的运用到线上产品。所谓?识不足则多虑,威不足则多怒、所以就是怕,只能跟领导说了运用极光的推送功能,而且还说出了一定的理由,领导自然也只有相信了,那就用极光推送吧!

  最近闲来无事,又重新温习了一下swoole的消息通知功能,虽然在项目开发当时,也曾实现过简单的操作的,但是这次温习更加深了学习,配合vb.net进行开发,感觉还是棒棒哒,下面是一套实现过程,如有需要参考,请拿去,不谢!

  首先,我的开发平台是windows,虽然本人也装有virtual box虚拟机,但是那玩意儿太耗内存cpu了,开起来搞实在不想搞。所以,就用了cygwin进行配置开发环境搭建,这里我就不说具体安装步骤了,给个链接吧,一步步按着操作就行了。 。 ps: 如果你win系统里已经安装了一套wamp环境,在cygwin中使用php或其他和win有相同名称命令时,请记得使用全路径 如:/bin/php index.php,/bin/find / -name "init*"

  第二步、编写php服务端程序,命名 test_tcp_server.php,代码如下:

= swoole_server("127.0.0.1",9501->set('worker_num' => 2, true,//是否作为守护进程,玩玩就不要开启这东西了,不然你都不知道跑到哪里去了 ->on('connect','my_onConnect'->on('receive','my_onReceive'->on('close','my_onClose' "swoole_server is running on 127.0.0.1 9501 n"-></span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt;receive msg respond</span> <span style="color: #0000ff;"&gt;function</span> my_onReceive (<span style="color: #800080;"&gt;$serv</span>,<span style="color: #800080;"&gt;$fd</span>,<span style="color: #800080;"&gt;$from_id</span>,<span style="color: #800080;"&gt;$data</span><span style="color: #000000;"&gt;) { </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; var_dump($serv);</span> <span style="color: #800080;"&gt;$data</span> = <span style="color: #008080;"&gt;trim</span>(<span style="color: #800080;"&gt;$data</span><span style="color: #000000;"&gt;); </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; 发送给谁,如:@id msg...,最好的当然是使用redis或者数据库存入号码并生成一个映射了,不过玩玩就不要认真了</span> <span style="color: #0000ff;"&gt;if</span>(<span style="color: #008080;"&gt;substr</span>(<span style="color: #800080;"&gt;$data</span>,1) == '@'<span style="color: #000000;"&gt;){ </span><span style="color: #800080;"&gt;$splitStart</span> = <span style="color: #008080;"&gt;strpos</span>(<span style="color: #800080;"&gt;$data</span>,' '<span style="color: #000000;"&gt;); </span><span style="color: #800080;"&gt;$toUserId</span> = <span style="color: #008080;"&gt;substr</span>(<span style="color: #800080;"&gt;$data</span>,1,<span style="color: #800080;"&gt;$splitStart</span> - 1<span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;echo</span> 'Send to:' . <span style="color: #800080;"&gt;$toUserId</span> . ';'<span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$content</span> = <span style="color: #008080;"&gt;substr</span>(<span style="color: #800080;"&gt;$data</span>,<span style="color: #800080;"&gt;$splitStart</span> + 1<span style="color: #000000;"&gt;); </span><span style="color: #0000ff;"&gt;if</span>(<span style="color: #008080;"&gt;is_numeric</span>(<span style="color: #800080;"&gt;$toUserId</span><span style="color: #000000;"&gt;)){ </span><span style="color: #800080;"&gt;$serv</span>->send(<span style="color: #800080;"&gt;$toUserId</span>,"From Client[<span style="color: #800080;"&gt;$fd</span>@<span style="color: #800080;"&gt;$from_id</span>]:" . <span style="color: #800080;"&gt;$content</span><span style="color: #000000;"&gt;); }</span><span style="color: #0000ff;"&gt;elseif</span>(<span style="color: #008080;"&gt;strtolower</span>(<span style="color: #800080;"&gt;$toUserId</span>) == 'all'<span style="color: #000000;"&gt;){ broadcast(</span><span style="color: #800080;"&gt;$serv</span>,<span style="color: #800080;"&gt;$content</span><span style="color: #000000;"&gt;); }</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;{ </span><span style="color: #800080;"&gt;$serv</span>->send(<span style="color: #800080;"&gt;$fd</span>,'Swoole: Unkown to user ' . <span style="color: #008080;"&gt;strtolower</span>(<span style="color: #800080;"&gt;$toUserId</span>) . ' infomation.'<span style="color: #000000;"&gt;); } }</span><span style="color: #0000ff;"&gt;else</span><span style="color: #000000;"&gt;{ </span><span style="color: #0000ff;"&gt;echo</span> "From Client[<span style="color: #800080;"&gt;$fd</span>@<span style="color: #800080;"&gt;$from_id</span>],received data: " . <span style="color: #800080;"&gt;$data</span> . <span style="color: #ff00ff;"&gt;PHP_EOL</span><span style="color: #000000;"&gt;; </span><span style="color: #800080;"&gt;$serv</span>->send(<span style="color: #800080;"&gt;$fd</span>,'Swoole: '.<span style="color: #800080;"&gt;$data</span><span style="color: #000000;"&gt;); } </span><span style="color: #008000;"&gt;//</span><span style="color: #008000;"&gt; $serv->close($fd);</span>

<span style="color: #000000;"> }
<span style="color: #008000;">//<span style="color: #008000;">connect action
<span style="color: #0000ff;">function my_onConnect (<span style="color: #800080;">$serv,<span style="color: #800080;">$fd<span style="color: #000000;">){
<span style="color: #0000ff;">echo "Client:Connect. id:{<span style="color: #800080;">$fd}n"<span style="color: #000000;">;
}
<span style="color: #008000;">//<span style="color: #008000;">close action
<span style="color: #0000ff;">function my_onClose (<span style="color: #800080;">$serv,<span style="color: #800080;">$fd<span style="color: #000000;">) {
<span style="color: #0000ff;">echo "Client: Close. id:{<span style="color: #800080;">$fd}n"<span style="color: #000000;">;
}
<span style="color: #008000;">//<span style="color: #008000;">broadcast except me,只会广播from_id相同的用户,再研究了
<span style="color: #0000ff;">function broadcast(swoole_server <span style="color: #800080;">$serv,<span style="color: #800080;">$fd = 0,<span style="color: #800080;">$data = "hello"<span style="color: #000000;">)
{
<span style="color: #800080;">$start_fd = 0<span style="color: #000000;">;
<span style="color: #800080;">$sendNum = 0<span style="color: #000000;">;
<span style="color: #0000ff;">echo "broadcast to "<span style="color: #000000;">;
<span style="color: #800080;">$from = "From Client[<span style="color: #800080;">$fd]:"<span style="color: #000000;">;
<span style="color: #0000ff;">while(<span style="color: #0000ff;">true<span style="color: #000000;">)
{
<span style="color: #800080;">$conn_list = <span style="color: #800080;">$serv->connection_list(<span style="color: #800080;">$start_fd,10<span style="color: #000000;">);
<span style="color: #0000ff;">if(<span style="color: #800080;">$conn_list === <span style="color: #0000ff;">false<span style="color: #000000;">)
{
<span style="color: #0000ff;">break<span style="color: #000000;">;
}
<span style="color: #008080;">var_dump(<span style="color: #800080;">$conn_list<span style="color: #000000;">);
<span style="color: #800080;">$start_fd = <span style="color: #008080;">end(<span style="color: #800080;">$conn_list<span style="color: #000000;">);
<span style="color: #0000ff;">foreach(<span style="color: #800080;">$conn_list <span style="color: #0000ff;">as <span style="color: #800080;">$conn<span style="color: #000000;">)
{
<span style="color: #0000ff;">if(<span style="color: #800080;">$conn === <span style="color: #800080;">$fd) <span style="color: #0000ff;">continue<span style="color: #000000;">;
<span style="color: #800080;">$ret1 = <span style="color: #800080;">$serv->send(<span style="color: #800080;">$conn,<span style="color: #800080;">$from . <span style="color: #800080;">$data<span style="color: #000000;">);
<span style="color: #800080;">$sendNum ++<span style="color: #000000;">;
}
}
<span style="color: #0000ff;">echo <span style="color: #800080;">$sendNum . ' numbers.'<span style="color: #000000;">;
}

  记得把它跑起来哦

/bin/php test_tcp_server.php

  第三步,你可以编写一个客户端程序,也可以不用编写,因为其他工具也完全可以连接进行的呢!如果要定,可以参考swoole官网的tcp_client代码,如下:

= swoole_client(SWOOLE_SOCK_TCP, ->on("connect",(->send("hello worldn"->on("receive",(, "Received: ".."n"->on("error",( "Connect failedn"->on("close",( "Connection closen" ->connect('127.0.0.1',9501,0.5);

  正常的话,运行这个脚本,你就可以收到消息了如:

  第四步、你肯定不满足于使用php语言去连接服务器端,你当然不应该满足!你还可以使用windows的cmd命令行嘛,如下:

telnet .

然后,你会发现,怎么只输入了一个字符就发送了。原因是什么win的telnet协议之类的,使用send命令,就可以了。操作为:按键 ctrl + ] ,进入telnet 命令行模式,输入send aaaddd

ok,多开几个客户端,看起来会话就可以了呢(要查看返回的内容,直接按Enter键即可,切换回来使用ctrl + ]),来看看服务端都什么样子吧:

都是有响应的吧,ok了,现在再试试一个功能,send @10 hello,10,you ok ? ,则另一个客户端就收到消息了

ok,到此为止,基本上测试完成了。但是使用cmd毕竟看起来不爽,于是想到用vb.net去实现一个客户端。代码就简要的贴出来,看看吧。

  第五步,使用vb.net实现客户端访问:

<span style="color: #0000ff;">Public <span style="color: #0000ff;">Class<span style="color: #000000;"> SynchronousSocketClient
<span style="color: #0000ff;">Protected
<span style="color: #0000ff;">Shared
port <span style="color: #0000ff;">As
<span style="color: #0000ff;">Integer
= <span style="color: #800080;">9501
<span style="color: #0000ff;">Protected <span style="color: #0000ff;">Shared host <span style="color: #0000ff;">As <span style="color: #0000ff;">String = <span style="color: #800000;">"<span style="color: #800000;">localhost<span style="color: #800000;">"

<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Shared</span> sender <span style="color: #0000ff;"&gt;As</span><span style="color: #000000;"&gt; Socket
</span><span style="color: #0000ff;"&gt;Public</span> <span style="color: #0000ff;"&gt;Shared</span> bytes(<span style="color: #800080;"&gt;1024</span>) <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;Byte</span>
<span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; A way to the connect to the server</span>
<span style="color: #0000ff;"&gt;Public</span> <span style="color: #0000ff;"&gt;Shared</span> <span style="color: #0000ff;"&gt;Sub</span><span style="color: #000000;"&gt; Main()
    </span><span style="color: #0000ff;"&gt;If</span> (<span style="color: #0000ff;"&gt;IsNothing</span>(sender)) <span style="color: #0000ff;"&gt;OrElse</span> <span style="color: #0000ff;"&gt;Not</span> sender.Connected <span style="color: #0000ff;"&gt;Then</span>
        <span style="color: #0000ff;"&gt;If</span> <span style="color: #0000ff;"&gt;Not</span> <span style="color: #0000ff;"&gt;IsNothing</span>(Form1.TextBox1.Text) <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
            host </span>=<span style="color: #000000;"&gt; Form1.TextBox1.Text
        </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>
        <span style="color: #0000ff;"&gt;If</span> (Form1.TextBox2.Text) <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
            port </span>=<span style="color: #000000;"&gt; Form1.TextBox2.Text
        </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span><span style="color: #000000;"&gt;
        sender </span>=<span style="color: #000000;"&gt; ConnectSocket(host,port)
    </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>

<span style="color: #0000ff;"&gt;End Sub</span>
<span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; send something to server</span>
<span style="color: #0000ff;"&gt;Public</span> <span style="color: #0000ff;"&gt;Shared</span> <span style="color: #0000ff;"&gt;Sub</span><span style="color: #000000;"&gt; send()
    </span><span style="color: #0000ff;"&gt;If</span> (<span style="color: #0000ff;"&gt;IsNothing</span>(sender)) <span style="color: #0000ff;"&gt;OrElse</span> <span style="color: #0000ff;"&gt;Not</span> sender.Connected <span style="color: #0000ff;"&gt;Then</span>
        <span style="color: #0000ff;"&gt;If</span> <span style="color: #0000ff;"&gt;Not</span> <span style="color: #0000ff;"&gt;IsNothing</span>(Form1.TextBox1.Text) <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
            host </span>=<span style="color: #000000;"&gt; Form1.TextBox1.Text
        </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>
        <span style="color: #0000ff;"&gt;If</span> (Form1.TextBox2.Text) <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
            port </span>=<span style="color: #000000;"&gt; Form1.TextBox2.Text
        </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span><span style="color: #000000;"&gt;
        sender </span>=<span style="color: #000000;"&gt; ConnectSocket(host,port)
    </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>
    <span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; Encode the data string into a byte array.</span>
    <span style="color: #0000ff;"&gt;Dim</span> msg <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;Byte</span>() =<span style="color: #000000;"&gt; Encoding.ASCII.GetBytes(Form1.myContent.Text)

    </span><span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; Send the data through the socket.</span>
    <span style="color: #0000ff;"&gt;Dim</span> bytesSent <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;Integer</span> =<span style="color: #000000;"&gt; sender.Send(msg)

    </span><span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; Receive the response from the remote device.</span>
    <span style="color: #0000ff;"&gt;Dim</span> bytesRec <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;Integer</span> =<span style="color: #000000;"&gt; sender.Receive(bytes)
    Console.WriteLine(</span><span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;ServerReturn = {0}</span><span style="color: #800000;"&gt;"</span>,Encoding.ASCII.GetString(bytes,<span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;,bytesRec))
    Form1.infoText.Text </span>&amp;= <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;ServerReturn = </span><span style="color: #800000;"&gt;"</span> &amp; Encoding.ASCII.GetString(bytes,<span style="color: #800080;"&gt;0</span>,bytesRec) &amp;<span style="color: #000000;"&gt; vbNewLine
</span><span style="color: #0000ff;"&gt;End Sub</span>
<span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; connect initialize</span>
<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Shared</span> <span style="color: #0000ff;"&gt;Function</span> ConnectSocket(<span style="color: #0000ff;"&gt;ByVal</span> host <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;String</span>,<span style="color: #0000ff;"&gt;ByVal</span> port <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;Integer</span>) <span style="color: #0000ff;"&gt;As</span> Socket <span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt;创建连接 </span>
    <span style="color: #0000ff;"&gt;Dim</span> s <span style="color: #0000ff;"&gt;As</span> Socket = <span style="color: #0000ff;"&gt;Nothing</span>
    <span style="color: #0000ff;"&gt;Dim</span> hostEntry <span style="color: #0000ff;"&gt;As</span> IPHostEntry = <span style="color: #0000ff;"&gt;Nothing</span>

    <span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt;address = System.Net.IPAddress.Parse(host)</span>
    <span style="color: #0000ff;"&gt;Dim</span> ipHostInfo <span style="color: #0000ff;"&gt;As</span> IPHostEntry =<span style="color: #000000;"&gt; Dns.Resolve(host)
    </span><span style="color: #0000ff;"&gt;Dim</span> address <span style="color: #0000ff;"&gt;As</span> IPAddress = ipHostInfo.AddressList(<span style="color: #800080;"&gt;0</span><span style="color: #000000;"&gt;)
    </span><span style="color: #0000ff;"&gt;Dim</span> endPoint <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;New</span><span style="color: #000000;"&gt; IPEndPoint(address,port)
    </span><span style="color: #0000ff;"&gt;Dim</span> tempSocket <span style="color: #0000ff;"&gt;As</span> <span style="color: #0000ff;"&gt;New</span><span style="color: #000000;"&gt; Socket(endPoint.AddressFamily,SocketType.Stream,ProtocolType.Tcp)
    tempSocket.Connect(endPoint)

    </span><span style="color: #0000ff;"&gt;If</span> tempSocket.Connected <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
        s </span>=<span style="color: #000000;"&gt; tempSocket
        Console.WriteLine(</span><span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Socket connected to {0}</span><span style="color: #800000;"&gt;"</span><span style="color: #000000;"&gt;,tempSocket.RemoteEndPoint.ToString())
        Form1.infoText.Text </span>&amp;= <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Socket connected to </span><span style="color: #800000;"&gt;"</span> &amp;<span style="color: #000000;"&gt; tempSocket.RemoteEndPoint.ToString()
    </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>
    <span style="color: #0000ff;"&gt;Return</span><span style="color: #000000;"&gt; s
</span><span style="color: #0000ff;"&gt;End Function</span>
<span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt; close socket</span>
<span style="color: #0000ff;"&gt;Public</span> <span style="color: #0000ff;"&gt;Shared</span> <span style="color: #0000ff;"&gt;Sub</span><span style="color: #000000;"&gt; closeSocket()
    </span><span style="color: #0000ff;"&gt;If</span> (sender.Connected) <span style="color: #0000ff;"&gt;Then</span><span style="color: #000000;"&gt;
        Form1.infoText.Text </span>&amp;= <span style="color: #800000;"&gt;"</span><span style="color: #800000;"&gt;Socket closed : </span><span style="color: #800000;"&gt;"</span> &amp; sender.RemoteEndPoint.ToString() &amp;<span style="color: #000000;"&gt; vbNewLine
        sender.Shutdown(SocketShutdown.Both)
        sender.Close()
    </span><span style="color: #0000ff;"&gt;End</span> <span style="color: #0000ff;"&gt;If</span>
<span style="color: #0000ff;"&gt;End Sub</span>

<span style="color: #0000ff;">End Class <span style="color: #008000;">'<span style="color: #008000;">SynchronousSocketClient

如上是访问连接服务器的代码,触发代码则是在另一个页面进行的,界面如下:

运行后效果如下:

触发事件的代码就比较简单了,还是贴一下吧:

</span><span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Sub</span> Button1_Click(<span style="color: #0000ff;"&gt;ByVal</span> sender <span style="color: #0000ff;"&gt;As</span> System.Object,<span style="color: #0000ff;"&gt;ByVal</span> e <span style="color: #0000ff;"&gt;As</span> System.EventArgs) <span style="color: #0000ff;"&gt;Handles</span><span style="color: #000000;"&gt; Button1.Click </span><span style="color: #008000;"&gt;'</span><span style="color: #008000;"&gt;Console.WriteLine("console ",Rnd) ' 无法读取最后一行console其实</span>

<span style="color: #000000;"> SynchronousSocketClient.Main()
<span style="color: #008000;">'<span style="color: #008000;">AsynchronousClient.Main() ' 异步功能并未实现呢
<span style="color: #0000ff;">End Sub

<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Sub</span> Form1_Load(<span style="color: #0000ff;"&gt;ByVal</span> sender <span style="color: #0000ff;"&gt;As</span> System.Object,<span style="color: #0000ff;"&gt;ByVal</span> e <span style="color: #0000ff;"&gt;As</span> System.EventArgs) <span style="color: #0000ff;"&gt;Handles</span> <span style="color: #0000ff;"&gt;MyBase</span><span style="color: #000000;"&gt;.Load

</span><span style="color: #0000ff;"&gt;End Sub</span>

<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Sub</span> Button2_Click(<span style="color: #0000ff;"&gt;ByVal</span> sender <span style="color: #0000ff;"&gt;As</span> System.Object,<span style="color: #0000ff;"&gt;ByVal</span> e <span style="color: #0000ff;"&gt;As</span> System.EventArgs) <span style="color: #0000ff;"&gt;Handles</span><span style="color: #000000;"&gt; Button2.Click
    infoText.Text </span>= <span style="color: #800000;"&gt;""</span>
<span style="color: #0000ff;"&gt;End Sub</span>

<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Sub</span> Button3_Click(<span style="color: #0000ff;"&gt;ByVal</span> sender <span style="color: #0000ff;"&gt;As</span> System.Object,<span style="color: #0000ff;"&gt;ByVal</span> e <span style="color: #0000ff;"&gt;As</span> System.EventArgs) <span style="color: #0000ff;"&gt;Handles</span><span style="color: #000000;"&gt; Button3.Click
    SynchronousSocketClient.send()
</span><span style="color: #0000ff;"&gt;End Sub</span>

<span style="color: #0000ff;"&gt;Private</span> <span style="color: #0000ff;"&gt;Sub</span> Button4_Click(<span style="color: #0000ff;"&gt;ByVal</span> sender <span style="color: #0000ff;"&gt;As</span> System.Object,<span style="color: #0000ff;"&gt;ByVal</span> e <span style="color: #0000ff;"&gt;As</span> System.EventArgs) <span style="color: #0000ff;"&gt;Handles</span><span style="color: #000000;"&gt; Button4.Click
    SynchronousSocketClient.closeSocket()
</span><span style="color: #0000ff;"&gt;End Sub</span>

<span style="color: #0000ff;">End Class

  到此,打完,收工。由于异步的调试没有成功,就此打住吧,以后有兴趣再去搞了!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读