package cn.edu.neu.Door;
import javax.swing.*;
import java.awt.*;
import java.io.DataInputStream;
import java.net.Socket;
/**
* 任意门的客户端
*/
public class Client {
public static void main(String[] args) {
try {
//询问框,showConfirmDialog()方法是展现询问框
int choice = JOptionPane.showConfirmDialog(null, "掌控对方电脑?", "霍格沃茨魔法学院秦皇岛分院", JOptionPane.YES_NO_CANCEL_OPTION);
//判断点击的按钮是什么 NO_OPTION这个就是一个常量
//如果点击了否
if (choice == JOptionPane.NO_OPTION || choice == JOptionPane.CANCEL_OPTION) {
return;
}
//输入ip地址和端口号
String input = JOptionPane.showInputDialog("请输入你要连接服务器的ip地址及端口号", "127.0.0.1:8888");
//获取服务器的主机 substring()方法用以截取字符串
String host = input.substring(0, input.indexOf(":"));
//端口
String port = input.substring(input.indexOf(":") + 1);
//链接服务器 Integer.parseInt()方法是将string包装成int
Socket client = new Socket(host, Integer.parseInt(port));
//创建输入流
DataInputStream dataInputStream = new DataInputStream(client.getInputStream());
//创建显示面板
JFrame jFrame = new JFrame();
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.setTitle("任意门");
jFrame.setSize(1024, 768);
//读取服务端的分辨率
double height = dataInputStream.readDouble();
double width = dataInputStream.readDouble();
Dimension ds = new Dimension((int) width, (int) height);
jFrame.setSize(ds);
//创建面板
JLabel jLabel = new JLabel();
JPanel jPanel = new JPanel();
//设置滚动条
JScrollPane jScrollPane = new JScrollPane(jPanel);
jPanel.setLayout(new FlowLayout());
jPanel.add(jLabel);
jFrame.add(jScrollPane);
jFrame.setVisible(true);
jFrame.setLocationRelativeTo(null);
jFrame.setAlwaysOnTop(true);
while (true) {
//获取流的长度
int len = dataInputStream.readInt();
byte[] imageData = new byte[len];
dataInputStream.readFully(imageData);
ImageIcon image = new ImageIcon(imageData);
jLabel.setIcon(image);
//重新绘制面板
jFrame.repaint();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}