首页 > 技术文章 > 安卓使用socket建立通信客户端不显示数据

ithuangqing 2017-03-02 18:25 原文

socket是通信的桥梁,(=@__@=)拿手机和电脑来说,通过socket可以建立两者之间的通信,一般在电脑上是服务器端,写一段java代码如下
public class MySocket {

	public static void main(String[] args) 
			throws IOException
	{
		// TODO Auto-generated method stub
		ServerSocket serverSocket = new ServerSocket(32345);
		while(true){
        Socket s = serverSocket.accept();
        OutputStream os = s.getOutputStream();
        os.write("你好".getBytes("utf-8"));
       // JOptionPane.showMessageDialog(null, "有客户端连接到了本机的1235端口");
        os.close();
        s.close();}
        
	}

}
这里需要注意JOptionPane.showMessageDialog(null, "有客户端连接到了本机的1235端口");要放在代码最后,不然会出现手机端数据不显示的情况。然后手机端是建立一个安卓项目,
public class MainActivity extends Activity
{
	EditText show;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		show = (EditText) findViewById(R.id.show);
		new Thread()
		{
			@Override
			public void run()
			{
				try
				{
					// 建立连接到远程服务器的Socket
					Socket socket = new Socket("192.168.1.106" , 32345);  // ①
					// 将Socket对应的输入流包装成BufferedReader
					BufferedReader br = new BufferedReader(
							new InputStreamReader(socket.getInputStream()));
					// 进行普通I/O操作
					String line = br.readLine();
					show.setText("来自服务器的数据:" + line);
					// 关闭输入流、socket
					br.close();
					socket.close();
				}
				catch (IOException e)
				{
					e.printStackTrace();
				}
			}
		}.start();
	}
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
<EditText
	android:id="@+id/show"  
	android:layout_width="match_parent" 
	android:layout_height="wrap_content" 
	android:editable="false"
	android:cursorVisible="false"
	android:textColor="#000"
	/>
</LinearLayout>



推荐阅读