001.【笔记】android socket 初步认识
来源:互联网 发布:mac磁盘清理软件排名 编辑:程序博客网 时间:2024/06/05 09:08
socket 又称套接字
socket 和ServerSocket都在java.net包中,ServerSocket 用于服务端, socket通信是平等的
过程:
1.服务器监听
2.客户端发出请求
3.建立链接
4.通讯
特点:
1.socket基于Tcp链接,数据传输有保障;
2.适用于长时间链接
3.通常应用于即时通讯
-------------------------------------------------------------------------------------------------------------
使用:
//ServerListener.java
package com.zlw.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.net.Socket;public class ChatSocket extends Thread {Socket socket;public ChatSocket(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {// 读取内容BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8"));String line = null;while ((line = br.readLine()) != null) {ChatManager.getChatManager().publish(this, line);}br.close();} catch (UnsupportedEncodingException e1) {e1.printStackTrace();} catch (IOException e1) {e1.printStackTrace();}}public void out(String s) {try {socket.getOutputStream().write(s.getBytes("utf-8"));} catch (UnsupportedEncodingException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
<pre name="code" class="java">//ServerListener.java
package com.zlw.socket;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JOptionPane;public class ServerListener extends Thread {@Overridepublic void run() {// 1-65535之间Socket socket;try {ServerSocket serverSocket = new ServerSocket(12345);while (true) {// 进行阻塞线程(应当在子线程执行),进行监听12345端口socket = serverSocket.accept();// 当访问端口时取消阻塞,显示信息JOptionPane.showMessageDialog(null, "有客户端连接到12345端口!");// 将socket传递给新线程ChatSocket chatSocket = new ChatSocket(socket);chatSocket.start();ChatManager.getChatManager().add(chatSocket);}} catch (IOException e) {e.printStackTrace();}}}
<pre name="code" class="java">//ChatManager 管理所有的Socket
package com.zlw.socket;import java.util.Vector;public class ChatManager {private ChatManager() {}private static final ChatManager chatSocket = new ChatManager();public static ChatManager getChatManager() {return chatSocket;}// 集合Vector<ChatSocket> vector = new Vector<ChatSocket>();public void add(ChatSocket chatSocket) {vector.add(chatSocket);}/** * 集体发送 * * @author zlw QQ:739043667 * @param * @return */public void publish(ChatSocket chatSocket, String out) {for (int i = 0; i < vector.size(); i++) {ChatSocket cs = vector.get(i);if (!cs.equals(chatSocket)) {cs.out(out);}}}}
测试:
在命令行中 敲入 : telnet localhost 12345 进行测试
0 0
- 001.【笔记】android socket 初步认识
- Android初步认识02
- android 的初步认识
- 初步认识android databinding
- Android初步认识ToolBar
- Android Glide 初步认识
- android studio 初步认识
- android Templates初步认识
- Android RxJava初步认识
- Unix网络编程学习笔记(一)初步认识socket编程
- 初步认识 TCP IP HTTP HTTPS SOCKET
- android 重力感应初步认识
- Android之GridView初步认识
- Android的初步认识01
- 【Android安全】初步认识Drozer
- android进程的初步认识
- Android Material Design初步认识
- Android广播的初步认识
- Java新特性
- 一位夜深人静后码农的心里独白
- 关于ARC的介绍和ARC与MRC混编解决
- 单例模式分析
- 中控服务器accesstoken
- 001.【笔记】android socket 初步认识
- jquery插件的编写
- 消除Bitmap图片的锯齿
- Tsinsen A1134 Cantor表
- Head First Python 学习札记 2016-04-06
- [IOS]NSObject--用于传值
- Android 控件和其基本属性1
- placeholder 的兼容问题
- 腾讯4月3号机试