2025年2月27日12:22:05 sokcet 连接断开异常处理
parent
89025e4c34
commit
3b19085717
|
|
@ -34,6 +34,7 @@ public class DataPackImpl implements DataPack {
|
|||
dataMsg.setSequenceId(0);
|
||||
dataMsg.setData(msg.GetData());
|
||||
dataMsg.setDataLen(msg.GetDataLen());
|
||||
dataMsg.setMsgId(msg.GetMsgId());
|
||||
|
||||
try {
|
||||
ByteBuf out = Unpooled.buffer();
|
||||
|
|
@ -93,6 +94,7 @@ public class DataPackImpl implements DataPack {
|
|||
Message message = new MessageImpl();
|
||||
message.SetData(dataMsg.getData());
|
||||
message.SetDataLen(dataMsg.getDataLen());
|
||||
message.SetMsgId(dataMsg.getMsgId());
|
||||
return message;
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
// throw new RuntimeException(e);
|
||||
|
|
@ -107,6 +109,16 @@ public class DataPackImpl implements DataPack {
|
|||
private byte[] data;
|
||||
private int dataLen;
|
||||
|
||||
private int msgId;
|
||||
|
||||
public int getMsgId() {
|
||||
return msgId;
|
||||
}
|
||||
|
||||
public void setMsgId(int msgId) {
|
||||
this.msgId = msgId;
|
||||
}
|
||||
|
||||
public int getSequenceId() {
|
||||
return sequenceId;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,12 +19,12 @@ public class HelloRouter extends BaseRouterImpl {
|
|||
|
||||
@Override
|
||||
public void Handle(Request request) {
|
||||
log.info("Call HelloZinxRouter Handle");
|
||||
log.info("Call HelloRouter Handle");
|
||||
//先读取客户端的数据,再回写ping...ping...ping
|
||||
log.info("recv from client : msgId={}, data={}", request.GetMsgID(), new String(request.GetData(), StandardCharsets.UTF_8));
|
||||
try {
|
||||
OutputStream outputStream = request.GetConnection().GetTCPConnection().getOutputStream();
|
||||
ByteBufferUtil.sendMsg(1, "Hello Zinx Router V0.6".getBytes(), outputStream);
|
||||
ByteBufferUtil.sendMsg(1, "Hello Router V0.6".getBytes(), outputStream);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,12 +22,16 @@ public class MsgHandleImpl implements MsgHandle {
|
|||
|
||||
@Override
|
||||
public void DoMsgHandler(Request request) {
|
||||
if (request != null){
|
||||
Router handler = this.apis.get(request.GetMsgID());
|
||||
if (handler != null ){
|
||||
//执行对应处理方法
|
||||
handler.PreHandle(request);
|
||||
handler.Handle(request);
|
||||
handler.PostHandle(request);
|
||||
}
|
||||
}
|
||||
|
||||
Router handler = this.apis.get(request.GetMsgID());
|
||||
//执行对应处理方法
|
||||
handler.PreHandle(request);
|
||||
handler.Handle(request);
|
||||
handler.PostHandle(request);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -47,6 +47,9 @@ public class RequestImpl implements Request {
|
|||
}
|
||||
|
||||
public int GetMsgID() {
|
||||
return this.message.GetMsgId();
|
||||
if (this.message != null) {
|
||||
return this.message.GetMsgId();
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.zhangmeng;
|
||||
|
||||
import com.zhangmeng.utils.ByteBufferUtil;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.Socket;
|
||||
|
|
@ -22,22 +24,20 @@ public class AppTest {
|
|||
//创建 Socket 对象,指定服务器端的 IP 与端口
|
||||
socket = new Socket(InetAddress.getLocalHost(), 9999);
|
||||
//获取 scoket 的输入输出流接收和发送信息
|
||||
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
out = new BufferedWriter(new
|
||||
OutputStreamWriter(socket.getOutputStream()));
|
||||
OutputStream outputStream = socket.getOutputStream();
|
||||
InputStream inputStream = socket.getInputStream();
|
||||
//获取 scoket 的输入输出流接收和发送信息
|
||||
in = new BufferedReader(new InputStreamReader(inputStream));
|
||||
out = new BufferedWriter(new OutputStreamWriter(outputStream));
|
||||
br = new BufferedReader(new InputStreamReader(System.in));
|
||||
|
||||
while (true) {
|
||||
//发送信息
|
||||
String str = br.readLine();
|
||||
out.write(str + "\n");
|
||||
out.flush();
|
||||
//如果输入的信息为“end”则终止连接
|
||||
if (str.equals("end")) {
|
||||
break;
|
||||
}
|
||||
//否则,接收并输出服务器端信息
|
||||
System.out.println("服务器端说:" + in.readLine());
|
||||
// Thread.sleep(1000);
|
||||
//发送信息
|
||||
ByteBufferUtil.sendMsg(0, str.getBytes(), outputStream);
|
||||
//接收信息
|
||||
ByteBufferUtil.recvMsg(inputStream, -1);
|
||||
}
|
||||
} catch (UnknownHostException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
|||
Loading…
Reference in New Issue