Android Socket(TCP/IP) 通信
main.xml 代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:id="@+id/MsgText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello Server!"
/>
<Button
android:id="@+id/BnSend"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="发送信息到服务器"
/>
<TextView
android:id="@+id/RevText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="服务器发来的消息:"
/>
</LinearLayout>
程序代码
package pqw.socket;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class SocketActivity extends Activity {
/** Called when the activity is first created. */
Button BnSend;
EditText EtSend;
TextView TvRev ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
BnSend = (Button) findViewById(R.id.BnSend);//得到布局中的按钮引用
EtSend = (EditText) findViewById(R.id.MsgText);
TvRev = (TextView) findViewById(R.id.RevText);
BnSend.setOnClickListener(BnSendListen);
}
private View.OnClickListener BnSendListen=new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Socket s=null;
DataOutputStream dout=null;
DataInputStream din =null;
try
{
s =new Socket("192.168.1.145",5000);
dout =new DataOutputStream(s.getOutputStream());
din =new DataInputStream (s.getInputStream());
Thread.sleep(50, 0); //实际中刚连上后发数据需要一定延时 确保双方链接初始化完成
dout.writeBytes(EtSend.getText().toString());
dout.flush(); //刷新缓存 发送数据
/*5秒内等待反馈*/
for(int i=0;i<10;i++)
{
if(din.available()>0)
{
byte[] buffer=new byte[din.available()];
System.out.println(din.available());
din.read(buffer);
TvRev.setText("服务器发来的消息:"+(new String(buffer)));
break;
}
else Thread.sleep(500, 0);
};
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try{
if(dout != null){
dout.close();
}
if(din != null){
din.close();
}
if(s != null){
s.close();
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
};
}
设置权限 AndroidManifest.xml
在manifest内加入
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
更多相关文章
- Android手机访问web服务器(post请求)
- Android 导出数据库到Excel表格功能
- android中listview分批加载数据
- Android本地数据搜索实现
- Android studio连接Bmob云数据库教程
- Android Looper中的MessageQueue消息处理机制
- Android清除本地数据缓存代码案例
- android通过httpClient请求获取JSON数据并且解析
- Android的SMS短消息格式和主要字段