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

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

2012-07-24 12:50 519 查看
本文介绍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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息