【发布时间】:2018-08-24 15:20:24
【问题描述】:
全部 我创建了简单的 android 应用程序,它应该通过套接字连接到 Python 3.6 服务器并发送数据。它不起作用。我已经失去理智,检查什么不起作用。你可以帮帮我吗?
主要活动
public class Test extends AppCompatActivity {
public Button but1;
int Ra;
public void init(){
but1 = (Button)findViewById(R.id.button_id);
but1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Client Connection = new Client();
Connection.execute();
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.INTERNET},Ra);
init();
}}
第二个文件
public class Client extends AsyncTask<Void ,Void , Void > {
@Override
protected Void doInBackground(Void... voids)
{
final String adress = "192.168.1.3";
final int Port = 70;
Log.d("Connection","trying to create connection");
try {
Log.d("Connection", "Creating socket");
Socket connect = new Socket(adress, Port);
Log.d("Connection","Connected");
DataOutputStream dout = new DataOutputStream(connect.getOutputStream());
DataInputStream din = new DataInputStream(connect.getInputStream());
dout.writeUTF("Hello");
dout.flush();
Log.d("Connection","Sent");
dout.close();
din.close();
connect.close();
}catch (IOException e){
{
e.printStackTrace();
Log.d("connection",e.getMessage());
}}
return null;
}}
Python 服务器
import socket
_Connection = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#Creating socket
#binding socket to port
_ADDRESS = ('localhost', 70)
print('Starting Server on {} port {}'.format(*_ADDRESS))
_Connection.bind(_ADDRESS)
_Connection.listen(1)
while True:
conn, addr = _Connection.accept()
print("Connection from ", addr)
msg = _Connection.recv(1024)
print(msg)
日志
08-24 17:31:43.950 32614-1203/com.example.marcin.tcpiptest D/连接:无法从 /::(端口 47696)连接到 /192.168.1.3(端口 70):连接失败: ETIMEDOUT(连接超时)
如果有人知道我做错了什么,他们会告诉我,我将不胜感激
【问题讨论】:
-
不工作不是一个好的错误描述。有什么错误吗?例外?崩溃。告诉我们发生了什么,什么没有发生。
-
您的应用在哪里运行?
-
我愿意,但什么也没发生。服务器没有发现任何连接。
-
我询问了客户。你看到了哪些日志?
-
@greenapps 我的应用程序第一次在 Android Studio 的 android 虚拟设备上运行,但我发现这可能是问题所在。然后我在我的手机上安装了连接到我的 WiFi 的应用程序,然后什么也没发生。