Android实现TCP客户端
1.添加相关权限,使得android app可以访问网络
在AndroidManiffest.xml中添加
<uses-permission android:name="android.permission.INTERNET"/>
2.socket的连接
由于android平台的限制,与网络相关的操作只能在子线程中进行,所以这里我们单独建立一个线程用于socket的连接
//子线程中进行网络相关操作
class connectthread extends Thread {
OutputStream outputStream=null;
InputStream inputStream=null;
@Override
public void run() {
//连接
try {
socket=new Socket(a, b);
runOnUiThread(new Runnable()//不允许其他线程直接操作组件,用提供的此方法可以
{
public void run()
{
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"连接成功",Toast.LENGTH_SHORT).show();
}
});
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
runOnUiThread(new Runnable()//不允许其他线程直接操作组件,用提供的此方法可以
{
public void run()
{
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_SHORT).show();
}
});
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
runOnUiThread(new Runnable()//不允许其他线程直接操作组件,用提供的此方法可以
{
public void run()
{
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this,"连接失败",Toast.LENGTH_SHORT).show();
}
});
}
}
socket=new socket(a,b)这一方法可以建立一个tcp连接,其中,a为ip地址,b为端口号
如果连接成功,我们及通过Toast在屏幕中显示“连接成功”,若连接失败,则会转到异常中,我们通过Toast显示“连接失败”。
3.通过输出流发送消息
在子线程中添加以下代码,获取socket的输出流对象
并通过输出流对象的write()方法向服务器发送“123”
try {
outputStream=socket.getOutputStream();
outputStream.write(123);
} catch (IOException e) {
e.printStackTrace();
}
以上就是最简单的消息发送,下面我们通过edittext获取输入的内容,并将输入的内容发送给服务器
//发送
send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//子线程中进行网络操作
new Thread(new Runnable()