安卓的Socket通信

一、基于TPC的Socket通信服务端

1、使用ServerSocket实例化一个服务端Socket对象,参数为监听的端口号

2、调用ServerSocket.accept方法监听客户端的请求

该方法会在收到客户端请求前一直阻塞,直到收到了客户端消息,并且该方法的返回值是一个Socket对象

3、实例化一个InputStream对象用于接收来自客户端消息,并使用接受到的Socket对象的Socket.getInputStream方法获取,在和客户相对应的是OutputStream对象所发送

4、利用bytes将InputStream 对象转化为String字符串

5、实例化一个OutputStream 对象用于向客户端发送消息,并用上文接收到的Socket对象的Socket.getOutputStream 方法进行初始化,在客户端对应是InputStream 所接收到

6、使用OutputStream.write 方法将想要发送消息的bytes写入并发送,发送完成后使用OutputStream.close关闭对象

可以将上述逻辑写在一个循环中以便持续接收消息

二、基于TCP的Socket通信客户端

1、使用socket首先需要声明网络权限,即android.permission.INTERNET ,否则无法正常使用Socket

2、由于安卓中主线程是无法联网的,所以需要将socket逻辑写在新创建的线程中

3、使用Socket实例化一个Socket对象

4、实例化一个SocketAddress对象,并用InetSocketAddress 初始化,其参数为ip地址和通信端口,这里的端口为服务端监听端口

5、使用Socket.connect 方法连接服务器,参数分别为上面实例化的SocketAddress对象和超时时间,并且使用Socket.isConnected可以检查是否连接成功

也可以使用直接把ip和端口作为参数直接实例化Socket对象,但是这种方式如果连接失败将阻塞很长时间,使用connect进行连接的好处是可以设置超时时间,避免长时间阻塞

6、实例化一个OutputStream对象,并使用上面初始化的socket对象的Socket.getOutputStream 方法初始化实例,并使用OutputStream.write方法想服务端发送消息

7、实例化一个BufferedReader对象,并用BufferedReader来进行初始化,其参数InputStreamReader对象,并以Socket.getInputStream作为参数来获取服务端消息

8、使用上面实例化的BufferedReader对象的BufferedReader.readLine方法获取服务端发来的消息。该方法时阻塞的,也就是说直到服务端发来消息才会继续执行

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇