我一直在编写简单的 Java 服务器。我要把这段代码部署到我学生的服务器上并在那里运行。
public class Demo {
public static void main(String[] args) {
String port = "50000";
ServerAttributes attr = new ServerAttributes();
attr.setPort(Integer.parseInt(port));
Socket socket = null;
ServerSocket serverSocket= null;
try {
serverSocket = new ServerSocket(attr.getPort());
System.out.println("Waiting for accept...");
while(true) {
socket = serverSocket.accept();
// TODO
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
我想创建简单的客户端代码,它将与我的服务器“对话”。通信客户端->服务器很容易。我的服务器对客户端可见。但是我应该怎么做才能以另一种方式提供通信呢?
也许 REST 是个好主意?那么,我如何“教”我的服务器回答 REST 查询?
我有一段代码可以将数据发送到我的 GAE 服务器:
package enceladus.server.trash.rest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class RESTGAEServer {
static String httpAddress = "http://*********.appspot.com/sign";
public static void main(String[] args) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(httpAddress);
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("guestbookName", "default"));
nameValuePairs.add(new BasicNameValuePair("content", "TEST"));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
@SuppressWarnings("unused")
HttpResponse response = client.execute(post);
} catch (IOException e) {
e.printStackTrace();
}
}
}
提前致谢
最佳答案
如果您尝试从服务器提供 RESTFul 服务,这不是一件容易的事。您可能想要做的是使用 ReSTLet 之类的东西来引导您的 RESTFul 服务器和客户端。
有关更多信息,请参阅 http://wiki.restlet.org/docs_2.0/13-restlet/21-restlet/318-restlet.html
关于java - 我的 Java 服务器和本地客户端之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845176/