Android网络编程之Socket

        生活像一只蝴蝶,没有破茧的勇气,哪来飞舞的美丽。生活像一只蜂,没有勤劳和努力,怎能尝到花粉的甜蜜,越努力越幸运!

       Android开发肯定离不开网络编程,首先说说网络编程的三要素

一、IP地址

  • 网络中host的标识
  • 不易记忆,可用主机名或域名
  • 本地回环地址,localhost:127.0.0.1

二、端口号

  • 用于标识进程的逻辑地址
  • 有效端口号:0-65535
  • 系统保留端口号:0-1024

三、传输协议

通讯的规则 

常见协议:HTTP,TCP,UDP,RTP,SMTP

这里主要讲tcp协议下的网络编程,tcp协议是通过三次握手建立连接来通信,所以基本步骤如下

1.创建客户端socket对象,建议对象创建时就明确目的地

2.如果连接建立成功,说明数据通道(socket流)已建立, 可以通过getInputStream或getOutputStream来获取。

3.用输出流将数据写出


服务端代码

ServerSocket serverSocket = new ServerSocket(port, 5);
while (true) {
            mSocket = serverSocket.accept();
            System.out.println("server started... http:/"+ mSocket.getLocalSocketAddress());
            synchronized (ServerSocket.class) {
                ServerThread serverThread = new ServerThread(mSocket);
                serverThread.start();
            }
        }
try {
                    // 读取客户端数据 由Socket对象得到输入流
                    InputStream inPut = socket.getInputStream();
                    if (inPut.available() > 0) {
                        // 读取客户端数据
                        BufferedReader br =new BufferedReader(new InputStreamReader(inPut));
                        String inStr = br.readLine();
                        receiveClientMsg(inStr);
                        // 模拟处理3秒
                        Thread.sleep(3000);
                        // 向客户端回复信息
                        if (inStr != null) {
                            mOutPrint = new PrintWriter(socket.getOutputStream());
                        }
                        // input.close();
                    }
                } catch (Exception e) {
                    e.getStackTrace();
                    overThis();
                }
 /**
     * 处理客户端数据
     * socket服务端得到返回数据并发送到主界面
     *
     * @param inStr
     * @return 返回解析的数据
     */
    public void receiveClientMsg(String inStr) {
        Message msg = new Message();
        msg.obj = inStr;
        mHandler.sendMessage(msg);
    }

客户端代码

//serverIp为服务端IP,port 端口号
socket = new Socket(serverIp, port);
//获取输出流,向服务端发送消息
PrintWriter   pw = new PrintWriter (socket.getOutputStream());
pw.println(msg);

// 读取服务器端数据
InputStream in = socket.getInputStream();BufferedReader  br = new BufferedReader (new InputStreamReader(in));					String inStr=br.readLine();																br.close();											



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值