1. 登录系统
登陆消息使用的消息数据结构体是:
#define MSG_USER_NAME_LEN 24
#define MSG_PASSWD_LEN 24
typedef struct __msg_login_t
{
char user_name[MSG_USER_NAME_LEN];
char user_pwd[MSG_PASSWD_LEN];
char is_support_d1;
char unuserd;
short local_right;
int remote_right;
int device_type;
msg_time_t local_time;
}msg_login_t;
typedef struct _msg_time_t
{
int year;
int month;
int day;
int hour;
int minute;
int second;
}msg_time_t; 请求消息如下:
FieldName Value
msg_head.msg_type MSG_LOGIN
msg_head.msg_subtype 无效
msg_head.msg_size 数据包长度
msg_head.ack_flag 无效
msg_head
msg_head.unres[3] 保留值
user_name 用户名
user_pwd 密码
is_support_d1 无效
unuserd 保留值
local_right 无效
remote_right 无效
device_type 无效
msg_data
local_time 本地时间,用于校时 unuserd 保留值
local_right 无效
remote_right 无效
device_type 无效
msg_data
local_time 本地时间,用于校时 应答消息如下:
FieldName Value
msg_head.msg_type MSG_LOGIN
msg_head.msg_subtype 无效
msg_head
msg_head.msg_size 数据包长度
msg_head.ack_flag 返回结果
msg_head.unres[3] 保留值
user_name 无效
user_pwd 无效
is_support_d1 是否支持D1
unuserd 保留位
local_right 本地权限
remote_right 远程权限
device_type 设备类型
local_time 无效 我写的程序
public class Socket {
public static void main(String[] args)
{
try
{
java.net.Socket socket = new java.net.Socket(InetAddress.getByName("abc.abc.com"),3312);
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
MsgHead mh = new MsgHead();
mh.setMsg_size(mh.getHEADER_LEN()+60);
mh.setMsg_subtype((short)1);
mh.send(os);
char msg_data[] = new char[1024];
Login login = new Login();
login.setUser_name("Admin".toCharArray());
login.setUser_pwd("111111".toCharArray());
login.setMsgDate(new MsgDate());
login.send(os);
InputStream is = socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
int l = 0;
while((l=bis.read())!=-1)
{
System.out.println((char)l);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public class Login {
private char user_name[] = new char[24];
private char user_pwd[] = new char[24];;
private char is_support_d1;
private char unuserd;
private short local_right;
private int remote_right;
private int device_type;
private MsgDate msgDate = new MsgDate();
public Login()
{
}
public void send( DataOutputStream out ) throws IOException
{
out.write(new String(user_name).getBytes());
out.write(new String(user_pwd).getBytes());
out.writeChar(is_support_d1);
out.writeChar(unuserd);
out.writeShort(local_right);
out.writeInt(remote_right);
out.writeInt(device_type);
out.write(msgDate.toString().getBytes());
out.flush();
}
....................... 省略set get 方法 public class MsgHead {
public static final int HEADER_LEN = 7;
private short msg_type; //消息类型
private short msg_subtype; //消息子类型
private int msg_size; //消息数据msg_data 的字节数
private char ack_flag; //确认标志
private char[] unused = new char[3];
public MsgHead()
{
}
public void send( DataOutputStream out ) throws IOException
{
out.writeShort( msg_type );
out.writeShort(msg_subtype );
out.writeShort(msg_size);
out.writeChar(ack_flag);
out.write(new String(unused).getBytes());
out.flush();
} .................. 省略 set get 方法
发送请求后, 服务端没有响应数据过来 , 麻烦各位帮小弟看一下
登陆消息使用的消息数据结构体是:
#define MSG_USER_NAME_LEN 24
#define MSG_PASSWD_LEN 24
typedef struct __msg_login_t
{
char user_name[MSG_USER_NAME_LEN];
char user_pwd[MSG_PASSWD_LEN];
char is_support_d1;
char unuserd;
short local_right;
int remote_right;
int device_type;
msg_time_t local_time;
}msg_login_t;
typedef struct _msg_time_t
{
int year;
int month;
int day;
int hour;
int minute;
int second;
}msg_time_t; 请求消息如下:
FieldName Value
msg_head.msg_type MSG_LOGIN
msg_head.msg_subtype 无效
msg_head.msg_size 数据包长度
msg_head.ack_flag 无效
msg_head
msg_head.unres[3] 保留值
user_name 用户名
user_pwd 密码
is_support_d1 无效
unuserd 保留值
local_right 无效
remote_right 无效
device_type 无效
msg_data
local_time 本地时间,用于校时 unuserd 保留值
local_right 无效
remote_right 无效
device_type 无效
msg_data
local_time 本地时间,用于校时 应答消息如下:
FieldName Value
msg_head.msg_type MSG_LOGIN
msg_head.msg_subtype 无效
msg_head
msg_head.msg_size 数据包长度
msg_head.ack_flag 返回结果
msg_head.unres[3] 保留值
user_name 无效
user_pwd 无效
is_support_d1 是否支持D1
unuserd 保留位
local_right 本地权限
remote_right 远程权限
device_type 设备类型
local_time 无效 我写的程序
public class Socket {
public static void main(String[] args)
{
try
{
java.net.Socket socket = new java.net.Socket(InetAddress.getByName("abc.abc.com"),3312);
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
MsgHead mh = new MsgHead();
mh.setMsg_size(mh.getHEADER_LEN()+60);
mh.setMsg_subtype((short)1);
mh.send(os);
char msg_data[] = new char[1024];
Login login = new Login();
login.setUser_name("Admin".toCharArray());
login.setUser_pwd("111111".toCharArray());
login.setMsgDate(new MsgDate());
login.send(os);
InputStream is = socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
int l = 0;
while((l=bis.read())!=-1)
{
System.out.println((char)l);
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public class Login {
private char user_name[] = new char[24];
private char user_pwd[] = new char[24];;
private char is_support_d1;
private char unuserd;
private short local_right;
private int remote_right;
private int device_type;
private MsgDate msgDate = new MsgDate();
public Login()
{
}
public void send( DataOutputStream out ) throws IOException
{
out.write(new String(user_name).getBytes());
out.write(new String(user_pwd).getBytes());
out.writeChar(is_support_d1);
out.writeChar(unuserd);
out.writeShort(local_right);
out.writeInt(remote_right);
out.writeInt(device_type);
out.write(msgDate.toString().getBytes());
out.flush();
}
....................... 省略set get 方法 public class MsgHead {
public static final int HEADER_LEN = 7;
private short msg_type; //消息类型
private short msg_subtype; //消息子类型
private int msg_size; //消息数据msg_data 的字节数
private char ack_flag; //确认标志
private char[] unused = new char[3];
public MsgHead()
{
}
public void send( DataOutputStream out ) throws IOException
{
out.writeShort( msg_type );
out.writeShort(msg_subtype );
out.writeShort(msg_size);
out.writeChar(ack_flag);
out.write(new String(unused).getBytes());
out.flush();
} .................. 省略 set get 方法
发送请求后, 服务端没有响应数据过来 , 麻烦各位帮小弟看一下
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货