0
package com.example.its.dem;


import android.os.AsyncTask;
import android.util.Log;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;

public class MessageSender extends AsyncTask<String,Void,Void> {

    PrintWriter pw;

    //    BufferedReader in ;
    @Override
    protected Void doInBackground(String... strings) {

        String message = strings[0];

        try {

            pw = new PrintWriter(MainActivity.s.getOutputStream());
            pw.write(message);
            pw.flush();
            pw.close();
        } catch (IOException e) {
            Log.i("oii",e.toString());
            e.printStackTrace();
        }

        return null;
    }
}


it is the messagesender class in which i want to write the msg in background task.

////////////////////////////////////////////////////////////////

MAIN_ACTIVITY



package com.example.its.dem;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;

import java.io.IOException;
import java.net.Socket;

public class MainActivity extends AppCompatActivity {
    public static Socket s;
    EditText ipaddresse,porte,msz;
    public static String string;
    public int connected=0;
    MessageSender  messageSender = new MessageSender();
    String ipaddress;
    int port;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ipaddresse = (EditText)findViewById(R.id.e);
        porte = (EditText)findViewById(R.id.e1);
        msz = (EditText)findViewById(R.id.e2);
        }
    public void send(View v){
        if(connected==1) {
            string = msz.getText().toString();
            Toast.makeText(this, string, Toast.LENGTH_SHORT).show();
            messageSender.execute(string);
        }
        else{
            Toast.makeText(this,"please establish connection first",Toast.LENGTH_SHORT).show();
        }
    }

    public void connect(View view) {
        ipaddress = ipaddresse.getText().toString();
      port = Integer.parseInt(porte.getText().toString());

        try {
            s = new Socket("192.168.0.102", 80);
            messageSender.execute("Connection Established");
            Toast.makeText(this, "connection stablished....", Toast.LENGTH_SHORT).show();
            connected =1;
        } catch (IOException e) {
            Log.i("poii",e.toString());
            e.printStackTrace();
        }
    }

    public void disconnect(View view) {
        if(connected==1) {
            messageSender.execute("Connection terminated");
            Toast.makeText(this, "connection terminated.....", Toast.LENGTH_SHORT).show();
            try {
                s.close();
                connected = 0;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

////////////////////////////////////////////
activity.xml


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.its.dem.MainActivity">

    <EditText
        android:id="@+id/e"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="ip address"
        />

    <EditText
        android:id="@+id/e1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="port"
        />


    <EditText
        android:id="@+id/e2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="msg"
        />

    <Button
        android:id="@+id/send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="send"
        android:text="send" />

    <Button
        android:id="@+id/connect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="connect"
        android:text="connect" />

    <Button
        android:id="@+id/disconnect"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="disconnect"
        android:text="disconnect" />

</LinearLayout>


/////////////////////////////////
error show



06/02 15:22:41: Launching app
$ adb install-multiple -r -t -p com.example.its.dem G:\android project\dem\app\build\outputs\apk\debug\app-debug.apk 
Split APKs installed
$ adb shell am start -n "com.example.its.dem/com.example.its.dem.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Client not ready yet..Waiting for process to come online
Connected to process 17753 on device xiaomi-redmi_3s-192.168.0.101:5555
Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
W/art: Before Android 4.1, method android.graphics.PorterDuffColorFilter android.support.graphics.drawable.VectorDrawableCompat.updateTintFilter(android.graphics.PorterDuffColorFilter, android.content.res.ColorStateList, android.graphics.PorterDuff$Mode) would have incorrectly overridden the package-private method in android.graphics.drawable.Drawable
D/AccessibilityManager: current package=com.example.its.dem, accessibility manager mIsFinalEnabled=false, mOptimizeEnabled=false, mIsUiAutomationEnabled=false, mIsInterestedPackage=false
D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
I/Adreno: QUALCOMM build                   : 10c9f68, I74772a33ad
          Build Date                       : 02/07/17
          OpenGL ES Shader Compiler Version: XE031.07.00.01
          Local Branch                     : 
          Remote Branch                    : refs/tags/AU_LINUX_ANDROID_LA.UM.5.1_RB1.06.00.01.192.038
          Remote Branch                    : NONE
          Reconstruct Branch               : NOTHING
I/OpenGLRenderer: Initialized EGL, version 1.4
W/art: Before Android 4.1, method int android.support.v7.widget.ListViewCompat.lookForSelectablePosition(int, boolean) would have incorrectly overridden the package-private method in android.widget.ListView
W/IInputConnectionWrapper: beginBatchEdit on inactive InputConnection
                           getSelectedText on inactive InputConnection
W/IInputConnectionWrapper: endBatchEdit on inactive InputConnection
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection
D/AndroidRuntime: Shutting down VM
E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.example.its.dem, PID: 17753
                  java.lang.IllegalStateException: Could not execute method for android:onClick
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
                      at android.view.View.performClick(View.java:5215)
                      at android.view.View$PerformClick.run(View.java:21193)
                      at android.os.Handler.handleCallback(Handler.java:742)
                      at android.os.Handler.dispatchMessage(Handler.java:95)
                      at android.os.Looper.loop(Looper.java:157)
                      at android.app.ActivityThread.main(ActivityThread.java:5571)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635)
                   Caused by: java.lang.reflect.InvocationTargetException
                      at java.lang.reflect.Method.invoke(Native Method)
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
                      at android.view.View.performClick(View.java:5215) 
                      at android.view.View$PerformClick.run(View.java:21193) 
                      at android.os.Handler.handleCallback(Handler.java:742) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:157) 
                      at android.app.ActivityThread.main(ActivityThread.java:5571) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) 
                   Caused by: android.os.NetworkOnMainThreadException
                      at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                      at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:110)
                      at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
                      at libcore.io.IoBridge.connect(IoBridge.java:122)
                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
                      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
                      at java.net.Socket.startupSocket(Socket.java:592)
                      at java.net.Socket.tryAllAddresses(Socket.java:128)
                      at java.net.Socket.<init>(Socket.java:178)
                      at java.net.Socket.<init>(Socket.java:150)
                      at com.example.its.dem.MainActivity.connect(MainActivity.java:45)
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                      at android.view.View.performClick(View.java:5215) 
                      at android.view.View$PerformClick.run(View.java:21193) 
                      at android.os.Handler.handleCallback(Handler.java:742) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:157) 
                      at android.app.ActivityThread.main(ActivityThread.java:5571) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:745) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:635) 
I/Process: Sending signal. PID: 17753 SIG: 9
Application terminated.
/////////////////////////////////
Manifest_file

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.its.dem">
    <uses-permission-sdk-23 android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission-sdk-23 android:name="android.permission.INTERNET"/>
<uses-permission-sdk-23 android:name="android.permission.CHANGE_WIFI_STATE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

//////////////////////////////////
Please help me solve this error quickly 

第1步:当客户端单击连接按钮然后连接t服务器和toast时,我想将客户端连接到服务器。单击之前我想输入服务器的IP地址和端口号。第2步:连接后我们要单击发送按钮并发送消息。第 3 步:最后,我想通过单击断开连接按钮断开连接。

4

0 回答 0