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

本文介绍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 String	SERVER_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()
	{
		
		@Override
		public 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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值