注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

你想快速掌握安卓编程吗

 
 
 

日志

 
 

[原创]电脑与安卓相互发消息(一)  

2014-04-14 16:16:57|  分类: B.电脑手机互通 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 
电脑与安卓相互发消息(一) - 沉默蜂QQ793136625 - 沉默蜂
电脑端截图

 
电脑与安卓相互发消息(一) - 沉默蜂QQ793136625 - 沉默蜂
安卓端截图


电脑与安卓相互发消息(一) - 沉默蜂QQ793136625 - 沉默蜂
布局文件
 

下面是Main活动视图代码

#Region 代码说明

'版本:2014-04-14
'设计:馨聆小筑
'博客:http://silentbees.blog.163.com (B4A技术博客)

'在这个例程中电脑端是作为客户端的,手机端的安卓程序是作为服务端
'客户端需要知道服务器端的ip地址和端口才行,
'客户端一旦连接后,服务器端只需要操作套接字就行
'服务端只需要侦听端口,不需要知道客户端的IP

#End Region



#Region  Project Attributes 
#ApplicationLabel: B4A Example
#VersionCode: 1
#VersionName: 
'SupportedOrientations possible values: unspecified, landscape or portrait.
#SupportedOrientations: unspecified
#CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
#FullScreen: False
#IncludeTitle: True
#End Region

Sub Process_Globals

'异步套接字指的是异步请求的套接字传送方式,请求和接收分开处理,
'请求发出后不需要等待服务器的回应,服务器有回应的话会通知程序的处理函数。
'例如支持库的 服务器和客户 的请求属于同步套接字请求,
'网络服务器和网络客户端属于异步套接字请求。

'声明异步流变量(AsyncStreams异步流 )
    Dim AStreams As AsyncStreams
'声明服务器套接字
    Dim Server As ServerSocket
'声明一个套接字
    Dim Socket1 As Socket
End Sub


Sub Globals

'声明布局文件中的各种控件
    Dim EditText1,EditText2 As EditText
Dim btSend As Button
Dim label1 As Label
End Sub


Sub Activity_Create(FirstTime As Boolean)

'读取布局文件,载入控件时,系统已经对各种控件初始化,所以不需要再初始化
Activity.LoadLayout("1")
    If FirstTime Then
'首次创建活动时,以2222端口初始化服务器套接字
        Server.Initialize(2222, "Server")
'服务器端开始监听2222端口
        Server.Listen
        label1.Text="本机 IP =:"&Server.GetMyIP 
    End If
    
   
End Sub

'服务器端新建连接事件子程序
Sub Server_NewConnection (Successful As Boolean, NewSocket As Socket)

    If Successful Then
   '连接成功则显示已连接信息
        ToastMessageShow("Connected", False)
'取传递过来的Socket
        Socket1 = NewSocket
'初始化异步流,准备它的输出输入流,及事件处理子程序
        AStreams.Initialize(Socket1.InputStream, Socket1.OutputStream, "AStreams")

    Else
   '如果异常则显示异常信息
        ToastMessageShow(LastException.Message, True)
    End If
'服务端继续监听
    Server.Listen
End Sub

 '异步流新数据到达子程序,buffer()为字节数组,接收客户端传过来的数据
Sub AStreams_NewData (Buffer() As Byte)     

    Dim msg As String
'转换buffer()中的字节数据为字符
    msg = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
'在文本编辑框2中显示
  EditText2.Text=msg
End Sub

Sub AStreams_Error
    ToastMessageShow(LastException.Message, True)
End Sub

'press on the Done button to send text
Sub btSend_Click '发送按钮事件处理子程序
    If AStreams.IsInitialized = False Then Return '异步流初始化失败则返回
    If EditText1.Text.Length > 0 Then '文本编辑框中有字符则开始循环
        Dim buffer() As Byte
        buffer = EditText1.Text.GetBytes("UTF8") '转换文本编辑框1中的字符为字节并放到buffer()字节数组中
        AStreams.Write(buffer) '将buffer()字节数组写入异步流的输出流中
        EditText1.SelectAll '选择文本编辑框1中的全部文本,表示已经动作
ToastMessageShow("正在发送: " & EditText1.Text,False)'显示正在发送文本信息
    End If
End Sub

Sub Activity_Pause(UserClosed As Boolean)
'
'Sub Activity_Pause (UserClosed As Boolean) 事件的调用在下面三种情况之一下发生:
'1、当 Activity 从前台转换到后台时,就会调用 Activity_Pause 子程序。
'2、当 Activity 在前台,但是配置发生变化时 (这会导致 Activity 暂停并被销毁) 也会
'调用Activity_Pause子程序。
'3、当你在一个B4A软件的 Activity 窗体中打开另一个 Activity 时 (通过
'调用 StartActivity 方法, StartActivity 方法可实现在不同 Activity 之间切换 ) 当前的进程
'首先被暂停,同时调用 Activity_Pause子程序,然后另外的 Activity 将被建立(如果需要的话 ),
'最后当前进程会继续执行。
'
'每当 Activity 从前台切换到后台时,Activity_Pause 就会被调用. 这可能是以下原因造成的:
'1、启动了一个不同的 Activity 。
'2、Home 键被按了。
'3、配置改变事件被触发 ( 例如手机显示方向发生变化 )。
'4、Back 键被按了。
'
'在1和2的情况下, Activity 将会被暂停,并被保存到内存中以便以后再次使用。
'在3的情况下, Activity 将会被暂停、销毁,然后再建立(并继续)。
'
'在4的情况下,Activity 将会被暂停,然后销毁。按 Back 键类似于关闭 Activity 。 在这种情况下,
'你没必要保存任何实例特定的信息(例如PacMan游戏中的pacman的位置 )。
'这种情况下UserClosed 参数为true,其他情况下都是False。当你调用 Activity.Finish 时,
'UserClosed 参数也是true。Activity.Finish 方法暂停和销毁当前 Activity ,效果和Back键类似。
'你可以使用UserClosed 参数来决定需要保存哪些数据和重置任何相关的进程变量为初始
'化值(如果位置是进程变量的话,移动pacma n的位置到中间).
'
'
    If UserClosed Then
        AStreams.Close
        Socket1.Close
    End If
End Sub

  评论这张
 
阅读(582)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017