//サーバーがクライアントに公開鍵を送信するように要求するコードは次のとおりです
package gameserver;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.net.Socket;
import java.io.*;
import javax.swing.JFrame;
import java.awt.*;
import javax.swing.*;
public class GameClient extends JFrame implements ActionListener {
private JButton b1 = new JButton("press");
public GameClient () {
GridLayout layout = new GridLayout(3, 0, 0, 0);
setLayout(layout);
setSize(320,150);
add(b1);
b1.addActionListener(this);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
GameClient frame = new GameClient();
frame.setVisible(true);
}
});
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == b1) {
Socket socket = null;
ObjectInputStream in = null;
ObjectOutputStream out = null;
Scanner console = new Scanner(System.in);
try {
socket = new Socket("127.0.0.1", 12346);
in = new ObjectInputStream(socket.getInputStream());
out = new ObjectOutputStream(socket.getOutputStream());
Object result;
result = in.readObject();
System.out.println(result);
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
}
}
// サーバー コード。クライアントが接続したときに公開鍵をクライアントに送信します。
package gameserver;
import java.io.*;
import java.net.*;
import java.security.*;
import javax.crypto.*;
public class GameServer {
public static void main(String arg[]) {
try {
ServerSocket ss = new ServerSocket(12346);
while(true) {
Socket s = ss.accept();
ClientHandler ch = new ClientHandler(s);
ch.start();
}
}
catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
class ClientHandler extends Thread {
Socket socket;
KeyPair keyPair = null;
public ClientHandler(Socket socket) {
this.socket = socket;
}
public KeyPair genKeyPair () {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
keyPair = keyGen.generateKeyPair();
//PrivateKey privateKey = keyPair.getPrivate();
//PublicKey publicKey = keyPair.getPublic();
} catch (NoSuchAlgorithmException e) {
System.out.println(e.getMessage());
}
return keyPair;
}
public void run() {
try {
ObjectInputStream Ois = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream Oos = new ObjectOutputStream(socket.getOutputStream());
keyPair = genKeyPair ();
PublicKey publicKey = keyPair.getPublic();
Oos.writeObject(publicKey);
socket.close();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
問題は、ボタンを押すと、クライアントがサーバーに接続していないようで、何も受信しないことです。アイデアはありますか? ありがとう