java - 从android到PC的TCP无法使用java工作

标签 java android tcp

我正在尝试通过 TCP 从我的 android 手机(使用 java 应用程序)向我的计算机发送一条简单消息。我的计算机上有一个正在监听的套接字,但只要我运行这个应用程序,它就会崩溃。我真的是 Android 开发的新手,所以请多多包涵...

这是我的 Java 代码:

package com.scorekeep.clienttcp;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;

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 MainActivity extends Activity {

    EditText textOut;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Socket socket = null;
        try {
            socket = new Socket("10.0.0.10",5000);
            DataOutputStream DOS = new DataOutputStream(socket.getOutputStream());
            DOS.writeUTF("HELLO_WORLD");
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

最佳答案

根据要求扩展示例:

import android.app.*;
import android.os.*;
import android.util.*;
import java.io.*;
import java.net.*;

public class MainActivity extends Activity 
{
    @Override
     protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        new connection().execute();
    }
}

 class connection extends AsyncTask<String,String,String> {
public static PrintWriter out;
BufferedReader in;
public static boolean running = true;
    @Override
    protected String doInBackground(String... message) {

        try
        {
            InetAddress serverAddr = InetAddress.getByName("localhost");
            Socket socket = new Socket(serverAddr, 8008);
            // send the message to the server
            out = new PrintWriter(new BufferedWriter(
                              new OutputStreamWriter(socket.getOutputStream())), true);

            in = new BufferedReader(new InputStreamReader(
                                    socket.getInputStream()));

        while(running) {
            String msgfromserver = in.readLine();
        }
        }
        catch (Exception e)
        {}

        return null;
    }

    public static void sendmsg(String msg){
        if(out!=null){
            out.println(msg);
            out.flush();
        }
    }
}

用法: 从按钮的 OnClick 方法调用 connection.sendmsg("some text");

并设置 connection.running = false; onbackpress。 (或在完成 Activity 之前)

关于java - 从android到PC的TCP无法使用java工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306100/

相关文章:

java - 如何指定字体属性的通用映射?

java - Android - 超过 3g 使用哪些端口以及 TCP 最佳连接方法?

java - 无法启动 Activity ,行读取器中的 ArrayIndexOutOfBounds

SO_KEEPALIVE 的 C 套接字编程

java - 计算 3D 空间中相对于另一个点的点

java - 使用 'for' 循环时出现“找不到符号”错误

java - 以编程方式从 server.xml 读取解密值

java - JSON POST 请求使用 Php 从 Android 中的 HttpClient 从服务器端接收?

c++ - IOCP - 发布重叠或读取数据包?

c - c中的tcp客户端发送和监听: concept