概述
在网上找了一些socket连接的博客,客户端和服务器端要么都是java,要么都是python,像我这么奇葩的好像没见着,所以写个博客记录一下自己踩过的坑。。。
客户端:
首先,需要给app访问网络的权限:
在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.INTERNET" />
然后就是老老实实的敲代码实现自己要的界面
我这里想要实现的是点击前进,后退,左转,右转按钮,服务器能分别收到对应的字符串 “upward”,“back”,“left”,“right”
这里就要给对应的按钮添加事件监听了:
但是切记不要直接调用socket,而是用线程去做:
在主线程中请求网络操作,会抛出 android.os.NetworkOnMainThreadException
这里参考了:
https://blog.csdn.net/llixiangjian/article/details/72910557 这篇博客,感谢大佬!!!
back_btn.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
new Thread(new Runnable() {
@Override
public void run() {
try {
msocket = new Socket(ip,port); # 这里的ip是公网ip
} catch (IOException e) {
e.printStackTrace();
}
try {
PrintWriter printWriter = new PrintWriter(msocket.getOutputStream(),true);
printWriter.println("back");
msocket.close();
}
catch (Exception e)
{
Log.d("connect error", "run: ");
}
}
}).start();
}
});
再次强调,这里的ip是公网ip(血泪教训),阿里云服务器上的ip是内网ip
port 是端口号,和服务器中的要保持一致,当然我们还需要去打开端口
这里参考了:
https://blog.csdn.net/u014043213/article/details/80228495 这篇博客,感谢大佬!!!
服务器端:
这里还要写上:
host = xxx.xxx.xxx.xxx # 你的阿里云服务器的内网ip
port = xxxx # 你开的端口号,要和客户端保持一致!
阿里云服务器开放端口的博客很多,请自行搜索(这里很简单,偷个懒)
然后就是最振奋人心的运行结果了:
运行客户端和服务器端代码
分别点击四个按钮
然后:
完结撒花
最后
以上就是灵巧朋友为你收集整理的Android安卓客户端通过socket连接阿里云服务器(python)的全部内容,希望文章能够帮你解决Android安卓客户端通过socket连接阿里云服务器(python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复