Android 网络编程: SOCKET的简单使用。

来源:互联网 发布:软件无法放大缩小 编辑:程序博客网 时间:2024/05/18 01:48

本文介绍SOCKET 的服务端和客户端的开发。 在本文中并没有使用异步来对数据进行接收。 因为网上太多有关异步、存储客户端SOCKET的例子了, 但是他们的代码都非常的多, 非常的繁琐, 所以这里就去掉了异步数据接收等。

首先介绍服务端: 这里代码实现的是服务端打开后就等待客户端的连接, 当客户端连接上后就接收消息, 并发消息回去后马上关闭链接。

如果需要做类是聊天室软件的话需要加上“异步处理”

public class SocketServer{private ServerSocket mServerSocket;private static final int SERVER_PORT = 6000;//端口public SocketServer(){}public boolean startServer(){boolean bRet = false;try{//创建一个SOCKET 服务器mServerSocket = new ServerSocket(SERVER_PORT);bRet = true;} catch (Exception e){// TODO: handle exception}return bRet;}public void recv(){try{Socket socket = mServerSocket.accept();//拿到客户端的输入输出(读取,发送)InputStream is = socket.getInputStream();PrintWriter pw = new PrintWriter(socket.getOutputStream());//这里读取客户端第一次发来的消息     调试来看吧byte buffer[] = new byte[1024];int reCount = is.read(buffer);String msgString = EncodingUtils.getString(buffer, "GB2312");//我们发回一个"aa"给客户端pw.print("aa");pw.flush();//关掉这个连接socket.close();} catch (Exception e){// TODO: handle exception}}public void close(){try{mServerSocket.close();} catch (Exception e){// TODO: handle exception}}}


客户端:

public class SocketClient{private Socket socket;private InputStream mInputStream;private PrintWriter mPrintWriter;private static final StringSERVER_IP = "192.168.1.24";private static final int SERVER_PORT= 6000;public SocketClient(){}public boolean connection(){boolean bRet = false;try{//创建一个客户端连接InetAddress ia = InetAddress.getByName(SERVER_IP);socket = new Socket(ia, SERVER_PORT);//获取这个客户端连接SOCKET的输入输出mPrintWriter = new PrintWriter(socket.getOutputStream(), true);mInputStream = socket.getInputStream();bRet = true;} catch (Exception e){// TODO: handle exception}return bRet;}//发送消息public void sendMsg(String msg){mPrintWriter.print(msg);mPrintWriter.flush();}//读取消息public String readMsg(){String msgString = "";try{byte buffer[] = new byte[1024];int reCount = mInputStream.read(buffer);msgString = EncodingUtils.getString(buffer, "GB2312");} catch (Exception e){// TODO: handle exception}return msgString;}public void close(){try{socket.close();} catch (Exception e){// TODO: handle exception}}}


主:

private android.view.View.OnClickListener btnClickListener = new android.view.View.OnClickListener(){@Overridepublic void onClick(View v){int id = v.getId();switch (id){case R.id.btn:{SocketClient socketClient = new SocketClient();socketClient.connection();socketClient.sendMsg("123");socketClient.sendMsg("123");socketClient.sendMsg("123");socketClient.sendMsg("123");String r = socketClient.readMsg();socketClient.close();Toast.makeText(SocketActivity.this, r, Toast.LENGTH_LONG).show();}break;case R.id.btn_server:{SocketServer socketServer = new SocketServer();socketServer.startServer();socketServer.recv();socketServer.close();}break;default:break;}}};


那么我们如果写了一个服务端或者客户端就像验证一下怎么办呢?

那就可以用到TCP/IP测试工具

下载地址: http://download.csdn.net/detail/knowheart/4448598

工程源码: http://download.csdn.net/detail/knowheart/4448592

原创粉丝点击