繁体   English   中英

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

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

在我的项目中,服务器套接字在 android 中没有正确响应。 我不知道这有什么问题? 我的服务器端代码卡在 serversocket.accept() 中。

在清单文件中,我已授予 Internet 和前台服务权限。 我是初学者,过去 3 天我都在尝试这个,我在这方面花了太多时间。

这是我的服务器端代码:

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();
        }
    }
}

这是用于以 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
        }
    }
    
}

确认您的客户端正在连接到正确的 IP 和端口。 对于初学者,您的服务器设置为端口 8888,但您的客户端试图连接到服务器端口 9999?

暂无
暂无

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

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