0

这是我的任务:使用套接字通信连接 PC 和手机。我在发送我在套接字连接中键入的消息时遇到问题。我使用 Eclipse 将程序从 PC 运行到手机。我在文本框中输入我的文本。当我按下发送按钮时,我无法发送文本并让它反映在手机上。程序代码不再有错误。这是我得到的代码链接:http ://android-er.blogspot.sg/2011/01/simple-communication-using.html

这些是我没有错误的代码:

public class AndroidClient extends Activity {

EditText textOut;
TextView textIn;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.socket_client);

    textOut = (EditText)findViewById(R.id.textout);
    Button buttonSend = (Button)findViewById(R.id.send);
    textIn = (TextView)findViewById(R.id.textin);
    buttonSend.setOnClickListener(buttonSendOnClickListener);
}

Button.OnClickListener buttonSendOnClickListener
= new Button.OnClickListener(){

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        Socket socket = null;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;

        try {
            socket = new Socket("10.217.137.207", 8888);
            dataOutputStream = new DataOutputStream(socket.getOutputStream());
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream.writeUTF(textOut.getText().toString());
            textIn.setText(dataInputStream.readUTF());
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            if (socket != null){
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataOutputStream != null){
                try {
                    dataOutputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataInputStream != null){
                try {
                    dataInputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }};
}
4

1 回答 1

0

从代码看来,您正试图打开从您的设备到具有给定 IP [10.217.137.207] 的外部设备的套接字连接。

仅当您使用正在测试它的设备的 ip 时,此代码才应该有效。尝试使用 127.0.0.1

dataInputStream.readUTF();

当且仅当它是从具有 IP [10.217.137.207] 的设备写入时才会返回任何内容。

如果您使用的是设备的 IP 地址,那么

dataInputStream.readUTF();

将返回您所写的所有内容

dataOutputStream.writeUTF()

我相信一定很清楚。

于 2012-08-17T08:40:17.780 回答