grgw_wdcj_java/wsdjc/.svn/pristine/b4/b4904d329f31dd0d729d3a6ccc0...

94 lines
2.2 KiB
Plaintext
Raw Normal View History

2025-07-02 09:18:59 +08:00
package com.surfbird.socket.server.service;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Map;
import com.surfbird.socket.server.bean.Client;
import com.surfbird.util.convert.DataHandle;
import com.surfbird.util.convert.Recordable;
public class MultiSocket implements Runnable {
private int size;
private byte[] buffer;
private Client client;
private Socket socket;
private InputStream reader;
private OutputStream writer;
private Map<String, MultiSocket> mclient;
public MultiSocket(Socket socket, Map<String, MultiSocket> mclient){
//<2F>ͻ<EFBFBD><CDBB>˼<EFBFBD><CBBC><EFBFBD>.
this.mclient = mclient;
//<2F><><EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>.
this.socket = socket;
//<2F><><EFBFBD>ÿͻ<C3BF><CDBB>ζ<EFBFBD><CEB6><EFBFBD>.
this.client = new Client();
//<2F><><EFBFBD>ÿͻ<C3BF><CDBB>˵<EFBFBD>ַ.
client.setAddress(socket.getInetAddress().getHostAddress());
//<2F><><EFBFBD>ÿͻ<C3BF><CDBB>˶˿<CBB6>.
client.setPort(String.valueOf(socket.getPort()));
//<2F><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־.
Recordable.record("<22>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>" + client.getAddress() + "<22><>" + client.getPort() + ".");
}
/**
* <20>ر<EFBFBD>ͨ<EFBFBD>š<EFBFBD><C5A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
**/
public void close(){
try {
if(writer != null)
writer.close();
if(reader!=null)
reader.close();
if(socket!=null)
socket.close();
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF>Ŀͻ<C4BF><CDBB><EFBFBD>.
mclient.remove(client.getAddress() + ":" + client.getPort());
//<2F><>¼<EFBFBD>Ͽ<EFBFBD><CFBF>ҽӿͻ<D3BF><CDBB><EFBFBD>.
Recordable.record("<22>ͻ<EFBFBD><CDBB>˶Ͽ<CBB6><CFBF><EFBFBD><EFBFBD>ӣ<EFBFBD>" + client.getAddress() + "<22><>" + client.getPort() + ".");
} catch (IOException e) {
e.printStackTrace();
}
}
private void initialize()throws IOException{
this.buffer = new byte[1024];
this.reader = socket.getInputStream();
this.writer = socket.getOutputStream();
}
public void run() {
try {
this.initialize();
while(true){
if((size = reader.read(buffer))>=0){
String receive = new String(buffer, 0, size);
String analysis = DataHandle.toHexString(buffer, size);
DataHandle.toParseData(writer, client, receive, analysis, size);
} else {
this.close();
break;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
this.close();
}
}
public Client getClient() {
return client;
}
public Socket getSocket() {
return socket;
}
public OutputStream getWriter() {
return writer;
}
}