简体   繁体   English

服务器套接字在android中没有正确响应

[英]Server socket doesn't respond properly in android

In my project server socket doesn't respond properly in android.在我的项目中,服务器套接字在 android 中没有正确响应。 I don't know what's wrong in that?我不知道这有什么问题? My server side code is stuck in serversocket.accept().我的服务器端代码卡在 serversocket.accept() 中。

In manifest file i have given internet and foreground service permission.在清单文件中,我已授予 Internet 和前台服务权限。 I am beginner and I am trying this for past 3 days and I have spent too much time in that.我是初学者,过去 3 天我都在尝试这个,我在这方面花了太多时间。

This is my server side code:这是我的服务器端代码:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;



public class MainActivity extends AppCompatActivity {
    Socket s;
    ServerSocket serverSocket;
    TextView textView;
    Button button;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView=findViewById(R.id.texview);
        button=findViewById(R.id.buttonstart);
        connect();


    }

    public void connect(){
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                
                button.setEnabled(false);
                Thread thread=new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            
                            serverSocket=new ServerSocket(8888);
                            
                            while (true){
                               
                                s=serverSocket.accept();

                               
                                DataInputStream datainput=new DataInputStream(s.getInputStream());
                                String txt=(String)datainput.readUTF();
                                textView.setText(txt);

                            }
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                });
                thread.start();

            }
        });
    }

    public void stop(View view) {
        try {
            s.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

And this is client side code for testing in java format这是用于以 java 格式进行测试的客户端代码

import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.util.Scanner;

public class client {
    public static void main(String[] args) {
        try {
            Socket s=new Socket("192.168.43.24", 9999);//for bind by ip & port 1
            DataOutputStream m=new DataOutputStream(s.getOutputStream());// for send msg
            Scanner scan= new Scanner(System.in);
            while(true){
                System.out.print("Type you msg here :- ");
                String send=scan.nextLine();
                m.writeUTF(send);
                m.flush();
            }
        } catch (Exception e) {
            System.out.println(e);//print error
            //TODO: handle exception
        }
    }
    
}

Confirm your client is connecting to the correct IP and port.确认您的客户端正在连接到正确的 IP 和端口。 For starters, your server is set to port 8888, but your client is attempting to connect to server port 9999?对于初学者,您的服务器设置为端口 8888,但您的客户端试图连接到服务器端口 9999?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM