【发布时间】:2017-10-23 16:24:54
【问题描述】:
这是我的 java 服务器代码:
public class CaspSocket {
private Socket socket = null;
private PrintWriter out = null;
private BufferedReader in = null;
public CaspSocket(InetAddress caspAddress, int caspPort) throws IOException {
socket = new Socket(caspAddress, caspPort);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
我用“out”发送数据
out.print(1 + "|");
out.print(2 + "|");
out.print(3 + "|");
GameMaker Studio 会收到如下:
var in_buff = ds_map_find_value(async_load, "buffer");
test_string=buffer_read(in_buff, buffer_string);
这样一来,所有东西都将被放入一个字符串中
test_string="1|2|3|"
但是我想以连续的方式接收数据
var in_buff = ds_map_find_value(async_load, "buffer");
test_string=buffer_read(in_buff, buffer_string);
test_string2=buffer_read(in_buff, buffer_string);
test_string3=buffer_read(in_buff, buffer_string);
给予
test_string="1|" test_string2="2|" test_string3="3|"
如何以连续方式从 java 服务器发送数据,以便在 GameMaker Studio 中使用 buffer_read(in_buff, buffer_string); 单独读取每个数据块
编辑: 我已经阅读了使用缓冲区部分,问题是当我使用 GameMaker Studio 发送到服务器时:
buffer_seek(Buffer, buffer_seek_start, 0);
buffer_write(Buffer, buffer_string, string(1) + chr(10)); //chr(10) means new line
buffer_write(Buffer, buffer_string, string(2) + chr(10));
buffer_write(Buffer, buffer_string, string(3) + chr(10));
network_send_raw(Socket, Buffer, buffer_tell(Buffer));
java服务器只会发回一个字符串:
var in_buff = ds_map_find_value(async_load, "buffer");
buffer_read(in_buff, buffer_string);
我不知道这应该如何使用 java 服务器按顺序发送,就像它可以在 GM:S 中接收一样:
var in_buff = ds_map_find_value(async_load, "buffer");
test_string=buffer_read(in_buff, buffer_string);
test_string2=buffer_read(in_buff, buffer_string);
test_string3=buffer_read(in_buff, buffer_string);
我只会使用 buffer_string 让事情变得更简单。
【问题讨论】: