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>

更多相关文章

  1. Android手机访问web服务器(post请求)
  2. Android 导出数据库到Excel表格功能
  3. android中listview分批加载数据
  4. Android本地数据搜索实现
  5. Android studio连接Bmob云数据库教程
  6. Android Looper中的MessageQueue消息处理机制
  7. Android清除本地数据缓存代码案例
  8. android通过httpClient请求获取JSON数据并且解析
  9. Android的SMS短消息格式和主要字段

随机推荐

  1. AIDL笔记
  2. Android Studio 编译提示 aapt.exe finis
  3. android中处理json最佳方法
  4. android 后台长时间执行周期性定时任务
  5. Algorithm_String: 字符串与EditText_01
  6. Android与ok6410板子tcp通信
  7. Android Studio中debug和release模式默认
  8. Android(安卓)- Activity 篇一
  9. Android ListView 效果美化
  10. Android(安卓)巧用 flexboxLayout 布局