0
public class Client {
/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException {
    Socket sock = new Socket();
    sock.connect(new InetSocketAddress(InetAddress.getLocalHost(), 43594));

    DataOutputStream out = new DataOutputStream(sock.getOutputStream());
    DataInputStream in = new DataInputStream(sock.getInputStream());

    out.writeByte(255);
    out.writeLong(133713371337L);

    System.out.println("Response: " + in.readByte() + ", " + in.readLong());

    sock.close();
}

PHPサーバーは、Javaクライアントに対して読み取りと書き込みを行うことを目的としています。

<?php
require 'Stream.php';
$stream = new Stream();

$address = '127.0.0.1';
$port = 43594;
$sock = socket_create(AF_INET, SOCK_STREAM, 0);
socket_bind($sock, 0, $port) or die('Could not bind to address');
socket_listen($sock);
echo "Server listening on port " . $port . "...";
$client = socket_accept($sock);

$data = socket_read($client, 1, PHP_BINARY_READ);
$byte_array = unpack('C*', $data);
$stream->setStream($byte_array);
$b2 = $stream->readUnsignedByte();

$l1 = socket_read($client, $stream->readQWord());
echo $b1 . " " . $l1;
socket_write($client, 0);
socket_write($client, $stream->writeQWord(2148000000));

使用されているストリームクラス:http://pastebin.com/p1vc9aPG

サーバーと接続し、サーバーとの間でデータを送受信するJavaでクライアントを作成しようとしています。サーバーはPHPで記述され、CLIを介して実行されますが、クライアントはJavaで記述されます。できれば助けてください、おそらくこの問題を助けることができる人はあまりいないでしょう。

プロトコルはすでに確立されており、PHPで実装しようとしています。PHPページからJavaクライアントへの読み取り/書き込みができないようです。

Javaのクライアント側は、私がどのようになりたいかを定義しています。私が探しているのはPHPの同等のサーバーであり、それを機能させることができないようです。

4

2 に答える 2

0

.flush()まず、 Javaコードでソケットに書き込んだ後に呼び出す必要があります。それ以外の場合、データはサーバーに送信されません。

次に、ネットワークエンドポイント間の通信は、使用されるプロトコルに関するほぼ合意です。ここには特定の言語はありません...

于 2013-01-14T01:06:08.207 に答える
0

私は実際にこれを逆に書いています。クライアントはPHPWebアプリであり、サーバーはjsvcの下のJavaデーモンでした。

2つの言語のタイプとオブジェクト表現は異なり、数値表現が異なるハードウェアで実行されている可能性があるため、最初の考慮事項は転送プロトコルの定義です。JSONまたはXMLをお勧めします。

その後、サーバーはおそらく複数の接続を処理できる必要があるため、スレッド化または非ブロッキングソケットI/Oが必要になります。

于 2013-01-14T01:11:57.943 に答える