您的位置:首页 > 理论基础 > 计算机网络

Android网络编程之Socket

2018-03-05 17:47 239 查看
        生活像一只蝴蝶,没有破茧的勇气,哪来飞舞的美丽。生活像一只蜂,没有勤劳和努力,怎能尝到花粉的甜蜜,越努力越幸运!
       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.g
4000
etInputStream();BufferedReader br = new BufferedReader (new InputStreamReader(in)); String inStr=br.readLine(); br.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Socket