2

JSONを使用したPHPスクリプトを使用してサーバーと通信する方法を知っていますが、サーバーがJavaで記述されている場合、Javaプログラムを使用してサーバーと通信するにはどうすればよいですか。

それは同じでしょうか、それともJSONを除外するより簡単な方法がありますか?

私がこれを行うのに慣れている方法は、POSTリクエストを使用してから、JSONでエンコード/デコードすることです。

Webサーバーではありません

4

3 に答える 3

3

最も効率的な方法は、Socketsを使用することです。このチュートリアルは、クライアント/サーバーの例をうまく示しています。

于 2012-10-26T18:22:31.447 に答える
3

このようにコーディングできるクライアントとして、以下に示すサーバーソケットプログラミングを使用できます。

import java.io.*;
import java.net.*;
public class Client 
{
    public static void main(String args[])
    {
    try
        {
          Socket server;
          String str="";
          DataInputStream d=new DataInputStream(System.in);
          PrintStream toserver;
          BufferedReader fromserver;
          server=new Socket("117.198.219.36",1096);        //your ip to connect and port no through which you will connect to server
          InputStreamReader isr=new InputStreamReader(server.getInputStream());
          fromserver= new BufferedReader(isr);
          toserver=new PrintStream(server.getOutputStream());
          while(true)
           {
           str=":"+d.readLine();
           toserver.println(str);
           str=fromserver.readLine();
           System.out.println(str);
           }
        }
    catch(Exception e)
        {
         System.out.println(e);
        }
    }
}

これは、リクエストを送信するクライアント側のプログラムです。

これで、サーバー側のプログラムが以下に表示されます。クライアントに接続するために同じポート番号を指定します。

import java.io.*;
import java.net.*;
public class Server
{
    public static void main(String args[])
    {
        ServerSocket sc;
        Socket client;
        DataInputStream d;
        PrintStream toClient;
        BufferedReader fromClient;
        String str="";
        try
              {
               d=new DataInputStream(System.in);
               sc=new ServerSocket(1096);         //the same port no that we had given at client side
               System.out.println("ServerStarted");
               client=sc.accept();
               InputStreamReader isr=new InputStreamReader(client.getInputStream());
               fromClient=new BufferedReader(isr);
               toClient=new PrintStream(client.getOutputStream());
               while(true)
                {
                str=fromClient.readLine();
                System.out.println(str);
                str=":"+d.readLine();
                toClient.println(str);
                }
              }
       catch(Exception e)
              {
                System.out.println(e);
              }
    }
}

それらを使用してみてください。これを介して接続できるようになります。これがお役に立てば幸いです。

于 2012-10-26T18:39:47.890 に答える
0

必要に応じて通信できますが、Java開発者はrpc(http://en.wikipedia.org/wiki/Remote_procedure_call)を優先します。これは、一部のフレームワークで実装する最も簡単な方法ですが、メッセージを完全に制御する必要がある場合は、それを実行できます。 jsonを考えたり、ソケットを介して直接考えたりしました(ただし、これを行うことはお勧めしません)。

于 2012-10-26T18:29:44.753 に答える