📄 socketmessagemanager.java
字号:
//SocketMessageManager通过Sockets和MulticastSockets和FishServer通信。
package fish.client;
import java.net.*;
import java.io.*;
import fish.*;
public class SocketMessageManager implements MessageManager {
private Socket socket;
private String serverAddress;
private PacketReceivingThread receivingThread;
private boolean connected = false;
public SocketMessageManager(String address)
{
serverAddress = address;
}
public void connect(MessageListener listener)
{
//如果已经连接了则快速返回
if ( connected )
return;
try {
socket = new Socket(
InetAddress.getByName(serverAddress),
FishConstants.SERVER_PORT );
receivingThread = new PacketReceivingThread(listener);
receivingThread.start();
connected = true;
}
catch ( IOException ioException ) {
ioException.printStackTrace();
}
}
public void disconnect( MessageListener listener )
{
if ( !connected )
return;
try {
Thread disconnectThread = new SendingThread( socket, "",
FishConstants.DISCONNECT_STRING );
disconnectThread.start();
disconnectThread.join(10000);
receivingThread.stopListening();
socket.close();
}
catch ( IOException ioException ) {
ioException.printStackTrace();
}
catch ( InterruptedException interruptedException ) {
interruptedException.printStackTrace();
}
connected = false;
}
public void sendMessage(String from, String message)
{
if ( !connected )
return;
new SendingThread(socket,from,message).start();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -