- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我尝试在 Prolog 服务器应用程序和 Java 客户端应用程序之间实现 tcpip 连接。它有效,但我有一个问题,我没有正确收到德语变音符号(ä、ü 等)。这就是我所做的:
在 Java 中,客户端:
inputreader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(),"UTF-8" ));
...
StringBuilder sb = new StringBuilder();
String responseLine;
while ((responseLine = inputreader.readLine()) != null) {
// System.out.println("Server: " + responseLine);
// Character.toString ((char) i);
sb.append(responseLine);
if( responseLine.indexOf( ".") != -1 && responseLine.length() == 1 ){
break;
}
}
在 SWI Prolog 中,服务器端:
:- set_prolog_flag(encoding,utf8).
% based on http://swi-prolog.996271.n3.nabble.com/socket-communication-td1653.html
server(PortNumber) :-
setup_call_cleanup(tcp_socket(S), % no leaks, please
(true; fail),
tcp_close_socket(S)),
tcp_bind(S, PortNumber),
tcp_listen(S, 5),
format('listen to portnumber ~w~n', [PortNumber]),
server_loop(S).
server_loop(S) :-
tcp_accept(S, S1, From),
format('receiving traffic from: ~q~n', [From]),
setup_call_cleanup(tcp_open_socket(S1, In, Out),
server_operation(In, Out),
( writeln('closing...'),
close(In),
close(Out))), !,
server_loop(S).
server_operation(In, Out) :-
\+at_end_of_stream(In),
read_pending_input(In, Codes, []),
atom_codes(Text,Codes),
write('received from client: '),write(Text),nl,
% job which has to be done in Prolog
extract_fct_call( Text, Fname, ListOfIname, ListOfIcontent ),
call_fct( Fname, ListOfIname, ListOfIcontent, XMLreply ),
atom_codes( XMLreply, CodeReply ),
% append defined EOM as \n.\n
append( CodeReply, [10,46,10], CodeMessage ),
format(Out, '~s', [Message]),
flush_output(Out),
server_operation(In, Out).
server_operation(_In, _Out).
所以,我认为定义双方 UTF-8 编码就可以了,但事实并非如此。我从 SWI Prolog 端开始使用“Gemüse”并在 Java 端接收“Gemxse”。我尝试使用
发送 ASCII 码atom_codes( Message, CodeMessage ),
format(Out, '~s', [CodeMessage]),
在 Java 方面
inputreader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(),"US-ASCII" ));
或
inputreader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream(),"ASCII" ));
但结果并没有改变。我能做什么?
非常感谢!
解决方案:
在 CapelliC 的帮助下,通过添加解决了这个问题
set_stream(流,编码(utf8))
到
server_operation(In, Out) :-
set_stream(In, encoding(utf8)),
set_stream(Out, encoding(utf8)),
\+at_end_of_stream(In),
...
然后在 Java 应用程序中接收元音(确保在项目的属性中,文本的编码也设置为 UTF-8)。
最佳答案
stream_property (Stream, encoding(Encoding)) 将允许您检查和更改 Prolog 端的编码。但是一旦您确认 Prolog 实际上默认为 UTF-8,并且您对此感到满意,也许您应该调整 Java 接口(interface),也许在每个 IO 操作上指定编码
byte[] utf8Bytes = s.getBytes("UTF-8");
关于java - German Umlaute 的问题,从 SWI Prolog 到 JAVA 的 TCPIP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668458/
我正在寻找一个 API,它使我能够构建一个应用程序,其中包含一个用于三星智能电视的自定义 Remote 。 Samsung 中记录了一些 API。 ,但它们似乎都没有提供标准 Remote 所具有的功
我无法将我的 db2 应用程序连接到我的 localhost 数据库。 应用程序使用的 db2 API 需要 TCPIP 并尝试连接到主机“localhost”和端口“50001”。 我的错误是。
这个问题在这里已经有了答案: C: socket connection timeout (8 个回答) 5年前关闭。 它并没有真正复制。使用非阻塞套接字时,您必须使用 select 方法检查是否创建了
在每个 tcp 数据包中打包尽可能多的数据显然会降低开销的相对权重。增加缓冲区大小可提高对 CPU 使用率峰值的稳健性。 但是还可以做些什么来实现最高数据速率? 增加数据读取器线程的优先级是个好主意吗
我刚刚开始学习 TCP/IP。 我编写了一个简单的 TCP/IP 服务器,它监听端口 3000 并在收到连接时生成一个线程。那个新线程坐下来读取数据。我的客户端应用程序创建了 100 个到该服务器的连
我需要一个 java 7 TCP/IP 客户端,它将阻塞直到它接收到用户指定的字符序列(在我的例子中是消息终止符/分隔符——这会自动将数据“分 block ”为单独的消息以供进一步处理)。我预计这将是
客户有一个系统,可以读取多个视频图像的大文件(最大 1 GB)。访问是通过“指向”较大文件的索引文件进行的。这在 LAN 上运行良好。如果这些文件保存在远程服务器上,有人对我如何通过 Internet
为什么在 TCP 3 次握手的第 3 部分没有传输数据?例如 (A 到 B)同步 (B 到 A)ACK+SYN (A 到 B)ACK.... 为什么不能将数据与此 ACK 一起传输? 最佳答案 我一直
我编写了一个 TCPIP 服务器,它实现了一个 FileSystemWatcher 并用从 FSW 获取的新文件解析的数据填充队列。 单个客户端将连接到此服务器并从队列中请求数据(任何时候都不需要其他
我想通过网络使用 adb 连接到 Android 设备。我熟悉How can I connect to Android with ADB over TCP?和https://developer.and
希望我能解释一下。我是 C 编程新手,尝试使用 TCPIP 发送和接收二进制文件。当客户端发送时,服务器应该一次接收多个文件。我创建了一个bat文件用于发送到服务器。如果文件是 2 或 3 个,则没有
是否可以在 Linux(嵌入式 Linux)上启动多个已经可用的 tcpip 堆栈实例?如果有人有这方面的任何信息? 最佳答案 我认为您无法在 Linux 中运行两个完整且独立的 TCP/IP 堆栈。
是否有来自 Matlab 仪器控制工具箱的 tcpip() 命令的实现?我已经搜索过了,但直到现在都没有找到。 Matlab 上 tcpip() 命令的文档位于此处:http://www.mathwo
我正在尝试使用 .NET 编写一个 tcpip 服务器。查看此站点上的线程,普遍的共识似乎是使用 .NET 3.5 SocketArgs 类的一些变体来最大程度地扩展但是我也必须使用 SSL,唯一的方
我需要远程 ADB shell..我知道我们必须发出“ADB tcpip”.. 将 ADB 服务器更改为 TCP 监听模式。 但是,问题是我的手机没有 root,而且我没有 USB 数据线。我无法发出
我已经阅读了很多关于 adb 和 tcpip 模式的帖子,我可以创建无线 adb 连接,但只有在 USB 调试打开时才可以。 我的使用方式是这样的: 已启用 USB 调试 在电脑上调用adb tcpi
我是 Android 开发的新手,目前我面临一些有关使用 TCPIP 远程连接我的 Android 设备的问题,我们将不胜感激。提前致谢。 最佳答案 然后使用 adb firest 连接您的手机 ad
我正在尝试使用 PIC24F 构建服务器。 这是我正在发布的一段代码: switch(TCPServerState) { case SM_HOME:
大家好,感谢大家的宝贵时间。 我的问题如下:当使用这个微芯片 TCPIP 堆栈时,它是否应该安装在任何类型的调度程序/RTOS 上,或者这个堆栈是否已经包含它工作所需的处理。 最佳答案 Microch
我对 TCPIP 的连接函数有问题,因为 QT 有类似的连接函数。 no matching function for call to MainWindow::connect(SOCKET&, sock
我是一名优秀的程序员,十分优秀!