我是Android和Java的新手,对我的服务器应用程序通信有疑问.我的服务器总是返回带有"Code","Message"和"Data"的JSON输出.像这样:
e.g: {"code":200,"msg":"success","data":[{"track_id":123},{"track_id":124},{"track_id":125}]}
e.g: {"code":200,"msg":"success","data":[{"type":"car","length":100},{"type":"train","length":500},{"type":"foot","length":3}]}
Run Code Online (Sandbox Code Playgroud)
我想使用这样的类来处理数据:
public class ServerResponse {
private int code;
private String msg;
private List<> data;
}
Run Code Online (Sandbox Code Playgroud)
但这是我的问题.我不想给列表中的"car","login"等特定类型.根据我的要求,我想创建一个带有List-Type"car"的ServerResponse-class,另一个带有List-Type"Locations"等.
有没有办法将类ServerResponse与多种类型的ArrayLists一起使用,或者我是否必须为我想要使用的每个列表类型多次复制此类?
对不起,如果这里已有解决方案,但我不知道我要搜索什么.而对于我搜索的内容,我找不到适合的解决方案.
最好的问候Michael
我有简单的C服务器和Java客户端.我从服务器到客户端逐行发送文本文件:
do {
send(sockfd, line, strlen(line), 0);
printf("%s\n", line);
} while ((fgets(line, 100, fp)) != NULL);
Run Code Online (Sandbox Code Playgroud)
并在Java客户端中读取它:
Client.getCl().getInputStream().read(inmsg);
do{
decoded = new String(inmsg, "UTF-8");
System.out.println(decoded);
}while(Client.getCl().getInputStream().read(inmsg) > 0);
Run Code Online (Sandbox Code Playgroud)
我的问题是我不知道如何从服务器向客户端发送"读取结束".客户端在上次读取时冻结.我知道,read()当没有任何东西需要读取时,methode 返回带有接收字节数的整数,当缓冲区长度为零时,返回0.返回-1到客户端的唯一解决方案是关闭服务器端的套接字,但我不能使用它.我也尝试过:
1)在发送方法结束时发送0长度告诉客户端,长度为零:
send(sockfd, NULL, NULL, 0);
Run Code Online (Sandbox Code Playgroud)
2)定义标志并发送:
#define MSG_FIN 0x200
#define MSG_EOR 0x0080
Run Code Online (Sandbox Code Playgroud)
并再次使用两个标志:
send(sockfd, NULL, NULL, MSG_FIN);
send(sockfd, NULL, NULL, MSG_EOR);
Run Code Online (Sandbox Code Playgroud)
任何人请帮助我在这里做错了什么?谢谢
我正在开发一个 C++ 应用程序,它应该处理多种通信协议(以太网、串行等)。每个通信协议都作为一个特定的类进行处理。为了暴露尽可能少的有关上述类和协议的内部结构和组织的信息,我想以某种方式包装所有这些功能,并提供一些通用的 API,用于通过选定的协议发送数据。
基本上,API应该提供什么(参数不限于此,而是总体思路):
bool sendData(uint8_t* buffer, const size_t& bufferSize);
void receiveData(uint8_t* dataBuffer, size_t& bufferSize);
Run Code Online (Sandbox Code Playgroud)
为上述功能创建通用 API 的最佳方法是什么?如果可能的话,涉及一些设计模式?
问候。
我有以下Java servlet执行我称之为" 添加服务 ":
public class AdditionService extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) {
// The request will have 2 Integers inside its body that need to be
// added together and returned in the response.
Integer addend = extractAddendFromRequest(request);
Integer augend = extractAugendFromRequest(request);
Integer sum = addend + augend;
PrintWriter writer = response.getWriter();
writer.write(sum);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图让GWT的RequestFactory做同样的事情(在应用服务器上添加两个数字并将总和作为响应返回)使用ValueProxy和AdditionService,并且遇到了一些问题.
这是AdditionRequest(客户端层),它是一个包含两个要添加的整数的值对象:
// Please note the "tier" (client, shared, server) I have placed …Run Code Online (Sandbox Code Playgroud) 您好我正在尝试使用BinaryReader/BinaryWriter建立聊天,我陷入了死胡同,我无法弄清楚如何让我的服务器将消息发送给所有连接的客户端..
我已经尝试将所有客户端添加到列表中并在列表上运行foreach循环,以将消息发送到每个连接的客户端,但没有进行锻炼.
服务器:
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace server {
internal class Program {
public static int counter = 0;
//List<Client> clientList = new List <Client>();
private static readonly IPAddress sr_ipAddress = IPAddress.Parse("127.0.0.1");
public TcpListener Listener = new TcpListener(sr_ipAddress, 8888);
public static void Main(string[] args) {
Program server = new Program();
server.Start();
Console.ReadKey();
}
public void Start() {
Listener.Start();
Console.WriteLine("Server started");
StartAccept();
}
private void StartAccept() {
Listener.BeginAcceptTcpClient(HandleAsyncConnection, Listener);
}
public void HandleAsyncConnection(IAsyncResult res) …Run Code Online (Sandbox Code Playgroud) java ×3
android ×1
ansi ×1
arraylist ×1
binaryreader ×1
binarywriter ×1
c ×1
c# ×1
c++ ×1
gwt ×1
inputstream ×1
tcpclient ×1