使用联通SGIP协议服务器端接收客户端程序,客户端发送1000条信息,服务器端接收400多条信息后,在客户端提示拒绝SOCKET连接。
下面是服务器端程序,请大家帮忙看看import sgip.*;
import java.net.*;
import java.io.*;public class recv {
public int i = 0;
public static void main(String[] args) {
recv atestprocesse = new recv();
} public recv() {
ServerSocket serversocket = null;
Socket so = null;
OutputStream output = null;
InputStream input = null;
SGIP command = null; try {
serversocket = new ServerSocket(8999);
so = serversocket.accept();
input = so.getInputStream();
output = so.getOutputStream();
command = new SGIP();
SGIP tmpCMD = null;
Deliver deliver = null;
DeliverResp deliverresp = null; Report report = null;
ReportResp reportresp = null;
Userrpt userrpt = null;
UserrptResp userrptresp = null; OrderResp orderresp = null;
Order order = null; CONTENT_CHECK check = null;
CONTENT_CHECK_RESP checkres = null; Bind active = null;
Unbind term = null;
BindResp resp = null;
UnbindResp Unresp = null;
boolean loop = true; while (loop) {
tmpCMD = command.read(input);//接收sgip消息
switch (command.getCommandID()) {
case SGIP.ID_SGIP_BIND: {
System.out.println("SGIP.ID_SGIP_BIND";
active = (Bind) tmpCMD;//强制转换
int result = active.readbody();//解包
resp = new BindResp(0,//node id 3+CP_id
0);
resp.SetResult(0);
int a = resp.write_seq(output, tmpCMD.getSeqno_1(), tmpCMD
.getSeqno_2(), tmpCMD.getSeqno_3());
//int a = resp.write(output);
break;
}
case SGIP.ORDER: {
System.out.println("SGIP.ORDER";
order = (Order) tmpCMD;//强制转换
int result = order.readbody(); //解包
i = i + 1;
orderresp = new OrderResp(0, 1);
orderresp.SetResult(1);
orderresp.write_seq(output, tmpCMD.getSeqno_1(), tmpCMD
.getSeqno_2(), tmpCMD.getSeqno_3());
break;
}
}
}
output.close();
input.close();
so.close();
serversocket.close();
} catch (Exception e) {
System.out.println("ee" + e.toString());
} finally {
try {
System.in.read();
//it just for debug
} catch (Exception s) {
System.out.println("eee" + s.toString());
}
} }}
下面是服务器端程序,请大家帮忙看看import sgip.*;
import java.net.*;
import java.io.*;public class recv {
public int i = 0;
public static void main(String[] args) {
recv atestprocesse = new recv();
} public recv() {
ServerSocket serversocket = null;
Socket so = null;
OutputStream output = null;
InputStream input = null;
SGIP command = null; try {
serversocket = new ServerSocket(8999);
so = serversocket.accept();
input = so.getInputStream();
output = so.getOutputStream();
command = new SGIP();
SGIP tmpCMD = null;
Deliver deliver = null;
DeliverResp deliverresp = null; Report report = null;
ReportResp reportresp = null;
Userrpt userrpt = null;
UserrptResp userrptresp = null; OrderResp orderresp = null;
Order order = null; CONTENT_CHECK check = null;
CONTENT_CHECK_RESP checkres = null; Bind active = null;
Unbind term = null;
BindResp resp = null;
UnbindResp Unresp = null;
boolean loop = true; while (loop) {
tmpCMD = command.read(input);//接收sgip消息
switch (command.getCommandID()) {
case SGIP.ID_SGIP_BIND: {
System.out.println("SGIP.ID_SGIP_BIND";
active = (Bind) tmpCMD;//强制转换
int result = active.readbody();//解包
resp = new BindResp(0,//node id 3+CP_id
0);
resp.SetResult(0);
int a = resp.write_seq(output, tmpCMD.getSeqno_1(), tmpCMD
.getSeqno_2(), tmpCMD.getSeqno_3());
//int a = resp.write(output);
break;
}
case SGIP.ORDER: {
System.out.println("SGIP.ORDER";
order = (Order) tmpCMD;//强制转换
int result = order.readbody(); //解包
i = i + 1;
orderresp = new OrderResp(0, 1);
orderresp.SetResult(1);
orderresp.write_seq(output, tmpCMD.getSeqno_1(), tmpCMD
.getSeqno_2(), tmpCMD.getSeqno_3());
break;
}
}
}
output.close();
input.close();
so.close();
serversocket.close();
} catch (Exception e) {
System.out.println("ee" + e.toString());
} finally {
try {
System.in.read();
//it just for debug
} catch (Exception s) {
System.out.println("eee" + s.toString());
}
} }}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货