android - Android studio:Socket.io 服务器和客户端
问题描述
我试图在android studio中运行一个简单的客户端-服务器socket.io,我基本上使用socket.io作为客户端,在服务器线程上我使用https://github.com/mrniko/netty-socketio . 但是客户端无法连接(但我成功连接到其他人未在android上实现的另一台服务器)。这是我的客户端和服务器代码:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.test_class_activity);
findViewById(R.id.connect_socket).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Thread clientThread = new Thread(new Runnable() {
@Override
public void run() {
if (mSocket==null || !mSocket.connected()) {
try {
mSocket = IO.socket("http://127.0.0.1:" + PORT);
} catch (URISyntaxException e) {
System.out.print(e.getMessage());
}
if(mSocket!=null) {
mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
@Override
public void call(Object... args) {
Log.d("ActivityName: ", "socket connected");
//socket.disconnect();
}
}).on(Socket.EVENT_MESSAGE, new Emitter.Listener() {
@Override
public void call(final Object... args) {
Log.d("ActivityName: ", "msg received: " + args[0].toString());
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView)findViewById(R.id.response_server)).setText(args[0].toString());
}
});
mSocket.emit(Socket.EVENT_MESSAGE, "salut Sam c est Adrien. J ai recu ton message: \"" + args[0].toString() + "\"");
}
});
mSocket.connect();
}
}
}
});
clientThread.start();
}
});
findViewById(R.id.start_server).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
server();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
});
private static void server() throws InterruptedException, UnsupportedEncodingException {
if(server!=null) {
Configuration config = new Configuration();
config.setHostname("localhost");
config.setPort(PORT);
server = new SocketIOServer(config);
server.addEventListener("toServer", String.class, new DataListener<String>() {
@Override
public void onData(SocketIOClient client, String data, AckRequest ackRequest) {
client.sendEvent("toClient", "server recieved " + data);
}
});
server.addEventListener("message", String.class, new DataListener<String>() {
@Override
public void onData(SocketIOClient client, String data, AckRequest ackRequest) {
client.sendEvent("toClient", "message from server " + data);
}
});
server.start();
}
}
}
您知道为什么我的客户无法连接吗?
解决方案
尝试使用 0.0.0.0 而不是 127.0.0.1,它接受所有接口上的请求
mSocket = IO.socket("http://0.0.0.0:" + PORT);
推荐阅读
- docker - Docker 不强制执行 apparmor 配置文件
- python - tf-idf sickitlearn 将“单词”与单词分开
- azure - Azure 订阅事件未能创建资源组“未定义”
- google-cloud-platform - 为什么 RDP 选项在 Windows VM 的 GCP 控制台中不可见?
- string - 通过使用折叠函数在它们之间放置分隔符将列表中的字符串连接成单个字符串(无递归)
- json - jq使用相同对象的值进行比较
- javascript - 淘汰赛组件更新可观察的父模型,但随后又恢复到旧值
- node.js - 未满足的依赖nodejs 8
- c# - 序列化为 JSON 时可以使用 c# 方法吗
- sapui5 - 显示没有图像的蓝色碎石