创建server.erl
-module(server).
-export([start/0,start/1,process/1]).
-define(defPort, 8888).
start() -> start(?defPort).
start(Port) ->
case gen_tcp:listen(Port, [binary, {packet, 0}, {active, false}]) of
{ok, LSock} -> server_loop(LSock);
{error, Reason} -> exit({Port,Reason})
end.
%% main server loop - wait for next connection, spawn child to process it
server_loop(LSock) ->
case gen_tcp:accept(LSock) of
{ok, Sock} ->
spawn(?MODULE,process,[Sock]),
server_loop(LSock);
{error, Reason} ->
exit({accept,Reason})
end.
%% process current connection
process(Sock) ->
Req = do_recv(Sock),
io:format("~p~n", [Req]),
{ok, D, []} = rfc4627:decode(Req),
{obj, [{"name", _Name}, {"age", Age}]} = D,
Name = binary_to_list(_Name),
io:format("Name: ~p, Age: ~p~n", [Name, Age]),
Resp = rfc4627:encode({obj, [{"name", 'Hideto2'}, {"age", 24}]}),
do_send(Sock,Resp),
gen_tcp:close(Sock).
%% send a line of text to the socket
do_send(Sock,Msg) ->
case gen_tcp:send(Sock, Msg) of
ok -> ok;
{error, Reason} -> exit(Reason)
end.
%% receive data from the socket
do_recv(Sock) ->
case gen_tcp:recv(Sock, 0) of
{ok, Bin} -> binary_to_list(Bin);
{error, closed} -> exit(closed);
{error, Reason} -> exit(Reason)
end.
创建android项目
package com.test;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
String strJson = "26";
Thread thread;
private Map<String, String> handlerMap = new HashMap<String, String>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
thread = new ThreadLoadData();
thread.start();
}
// 点击搜索按钮后进入数据的加载
class ThreadLoadData extends Thread { // 一个线程变量只能用一次,所以要执行相同的动作时就必须定义一个Thread类而不是一个Thread变量
@Override
public void run() {
try {
// 联网下载指定数量的数据
Socket socket = new Socket("192.168.1.201", 8888);
// JSONObject json = new JSONObject();
OutputStreamWriter osw = new OutputStreamWriter(socket
.getOutputStream());
BufferedWriter writer = new BufferedWriter(osw);
System.out.println("true");
JSONObject param = new JSONObject();
param.put("yuky", strJson.replace("\n", " "));
System.out.println("true--->" + param.toString());
writer.write(param.toString());
writer.flush();
} catch (Exception ex) {
// this.destroy();
System.out.println("ERR-->" + ex.getMessage());
}
}
}
public JSONObject getJSON() throws JSONException {
return new JSONObject(strJson);
}
}
启动服务器
c(server).
server:start().
启动android访问服务器。
服务器接收到:
"{\"yuky\":\"26\"}"
分享到:
相关推荐
本软件是纸黄金、纸白银、纸铂金、纸钯金交易的得力助手; 主要功能有: 1、数据信息采用基于HTML5的... 4、终端要求在android2.1以上,在屏幕分辨率480*840,CPU800MHZ以上运行效果较佳;初次运行需加载数据而影响速度
Delphi是一款基于Object Pascal的集成开发环境(IDE),用于创建Windows、macOS、iOS和Android平台的应用程序。它以其高效的编译器和VCL(Visual Component Library)框架著称,允许开发者快速构建图形用户界面。在...
主要功能有: 1、数据信息采用基于HTML5的大负载架构设计(Erlang)的长连接推送技术,高效且节省资源;...4、终端要求在android2.1以上,在屏幕分辨率480*840,CPU800MHZ以上运行效果较佳;初次运行需加载数据而影响速度
用于Android分析信息的Visualizer( ) AFlame是一种无需使用从Android方法跟踪文件中提取数据的工具。 为了生成一些跟踪文件,将您的代码包装在测试中,如下所示: Debug.startMethodTracing("traceName", 128 *...
【标题】"Aurora-Server:Erlang编写的Android聊天服务器详解" 【描述】"极光(Aurora)是一款使用Erlang编程语言开发的专为Android设计的聊天服务器。它利用了Erlang强大的并发处理能力和Mnesia作为其内存数据库,...
Erlang实现的百度云推送Android服务端实例旨在帮助开发者集成百度云推送服务,以便向Android设备发送消息和通知。百度云推送是一个跨平台的推送服务,支持Android和iOS,但iOS的集成相对复杂,通常建议Android使用...
作者还提到,在后续的职业生涯中,曾涉足多种编程语言(如Java、C++、PHP、JavaScript、Erlang等)的开发,并从编译原理的角度理解这些语言。这种跨领域的知识积累使得作者能够在更高层次上理解不同语言与操作系统...
- **ejabberd**: Erlang编写,性能优秀,支持大规模用户并发,广泛应用于企业级环境。 - **Prosody**: 基于Lua,轻量级且模块化,适合小型到中型的部署。 3. **Android客户端集成**: - **Smack库**: 开源的Java...
3. **EMQX(Erlang MQTT Broker)**:EMQX是基于Erlang构建的一款高可用、高性能的MQTT消息代理。MQTT是一种轻量级的发布/订阅协议,常用于物联网设备之间的通信。在这个项目中,EMQX作为中央消息服务器,接收并分发...
Erlang 编程规则.epub Githug 通关攻略.epub Glide v4 中文版.epub Groovy 入门.epub Hibernate 高级教程.epub iOS IAP 教程.epub Java 微信开发.epub PaddlePaddle 深度学习入门.epub Spring Boot Cookbook 中文版....
EMQX(原名EMQ,Erlang MQTT Broker)是一个开源的MQTT消息中间件,专门针对物联网应用设计。MQTT是一种轻量级的发布/订阅协议,适用于低带宽、高延迟或不可靠的网络环境。在智能家居系统中,EMQX作为消息代理,可以...
1. **安装RabbitMQ**: 在服务器上安装RabbitMQ,通常是在Linux环境下,通过下载并运行Erlang(RabbitMQ的依赖)和RabbitMQ Server的二进制包。 2. **启动服务**: 安装完成后,使用命令行工具启动RabbitMQ服务,确保...
Cuttlefish是Erlang应用程序的库,希望在Erlang app.config和类似sysctl的语法之间走得更好。 这个名字是“ sysctl”发音的双关语,笑话也能更好地解释。 Riak免责声明 尽管此自述文件和测试套件具有大量的Riak知识...
包括Enigma密码机的软件模拟、使用Enter或Ctrl+Enter进行登录操作、Erlang进程间的监听通信、Excel2007将数据导入SQL生成新表、使用Expect的Shell脚本示例、Fancybox图片弹窗的实现、Flexslider图片轮播插件(支持...
4. **EMQX (Erlang MQTT Broker)**: EMQX是基于Erlang构建的开源MQTT消息代理,它支持大规模连接和高并发,提供了丰富的插件系统,便于扩展和定制。在这个项目中,EMQX作为MQTT服务器,接收和分发ESP32发送的数据。 ...
StackOverflowE-Books\stack_overflow_erlang.mobi StackOverflowE-Books\stack_overflow_f#.mobi StackOverflowE-Books\stack_overflow_flash.mobi StackOverflowE-Books\stack_overflow_flex.mobi StackOverflowE-...
N2N协议是基于IP网络的边缘网络技术,由Erlang/OTP开发人员设计。它利用了IPv4和IPv6的特性,提供了一种在局域网和广域网中构建安全、高效的对等网络的方法。N2N协议的v3版本相比早期版本可能引入了更多性能优化和...