[英]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.