📄 myclient.java
字号:
package client;
import java.io.EOFException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ConnectException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Random;
import rule.Embody;
import rule.Order;
public class MyClient {
private Socket socket = null;
private InetAddress mip = null;
private int mUPort = 0;
private ObjectOutputStream oos = null;
private ObjectInputStream ois = null;
private boolean b_t = false;
private Controller controller = null;
public MyClient() {
}
/**
* 启动客户端并生成UDP的端口号
*
* @param controller
*/
public MyClient(Controller controller) {
this.controller = controller;
startTCP();
mUPort = new Random().nextInt(1000) + 8000;
try {
mip = InetAddress.getByName("localhost");
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
/**
* 启动TCP
*
*/
public void startTCP() {
try {
socket = new Socket(Order.SERVER_IP, Order.SERVER_PORT);
oos = new ObjectOutputStream(socket.getOutputStream());
ois = new ObjectInputStream(socket.getInputStream());
new Thread(new AcceptObj()).start();// 开启一个线程用来接收服务端发来的信息
} catch (ConnectException e) {
System.out.println("怎么搞的,服务器还不启动!");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 定义一个方法用来向服务端发送信息
*
* @author st0816003
*/
public void send(Embody embody) {
try {
oos.writeObject(embody);
oos.flush();
} catch (SocketException e) {
System.out.println("服务器死了怎么发...!?");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 定义一个内部类作线程用来接收server发来的信息
*
* @author st0816003
*
*/
public class AcceptObj implements Runnable {
public void run() {
b_t = true;
try {
while (b_t) {// 不停接收数据并交给parseEmbody(obj)去解析
Object obj = ois.readObject();
if (obj != null) {
controller.parseEmbody(obj);
}
}
} catch (EOFException e) {
System.out.println("服务器死了.......!?");
b_t = false;
} catch (SocketException e) {
System.out.println("服务器死了怎么读!?");
b_t = false;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
public ObjectInputStream getOis() {
try {
if (ois == null) {
ois = new ObjectInputStream(socket.getInputStream());
}
} catch (IOException e) {
}
return ois;
}
public void setOis(ObjectInputStream ois) {
this.ois = ois;
}
public ObjectOutputStream getOos() {
if (oos == null) {
try {
oos = new ObjectOutputStream(socket.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
}
return oos;
}
public void setOos(ObjectOutputStream oos) {
this.oos = oos;
}
public Socket getSocket() {
return socket;
}
public void setSocket(Socket socket) {
this.socket = socket;
}
/**
* 定义一个关闭所有连接的方法,当关闭窗口时调用
*
* @author st0816003
*/
public void closeConnect() {
try {
b_t = false;
if (oos != null) {
oos.close();
}
if (ois != null) {
ois.close();
}
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public InetAddress getMip() {
return mip;
}
public void setMip(InetAddress mip) {
this.mip = mip;
}
public int getMUPort() {
return mUPort;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -