我有一程序,作为socket客户端,连接sokcet服务端时需向它发送注册信息;规则如下所示:
注册信息:
typedef struct tagRegistryRequestRecord
{
short type; short source; char userName[USER_NAME_LEN]; // 用户名
char passwd[PASSWD_LEN]; // 口令
} RegistryRequestRecord;将RegistryRequestRecord转换成strmsg:
sprintf(lineBuffer, "%hd\t%hd\t%s\t%s\t",
RegistryRequestRecord->type,
RegistryRequestRecord->source,
RegistryRequestRecord->userName,
RegistryRequestRecord->passwd)
将strmsg转换成socket发送的tcp信息
tcpmsg=icode(2byte short)+strmsg_length(4byte long (strleng(strmsg)+1))+strmsg
icode = 0x107请教一下我应该怎样向socket发送如上规则所示的注册信息
注册信息:
typedef struct tagRegistryRequestRecord
{
short type; short source; char userName[USER_NAME_LEN]; // 用户名
char passwd[PASSWD_LEN]; // 口令
} RegistryRequestRecord;将RegistryRequestRecord转换成strmsg:
sprintf(lineBuffer, "%hd\t%hd\t%s\t%s\t",
RegistryRequestRecord->type,
RegistryRequestRecord->source,
RegistryRequestRecord->userName,
RegistryRequestRecord->passwd)
将strmsg转换成socket发送的tcp信息
tcpmsg=icode(2byte short)+strmsg_length(4byte long (strleng(strmsg)+1))+strmsg
icode = 0x107请教一下我应该怎样向socket发送如上规则所示的注册信息
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.lang.reflect.Array;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Arrays;
import java.util.List;public class Test { public static void main(String args[]) {
initSocket();
}
private static void initSocket() {
try {
System.out.println("*************init socket********************");
String host = "服务端地址";
String user = "用户名";
int port = 端口;
String password = "密码";
System.out.println("host = "+host+";user = "+user+";password = "+password);
Socket sk = new Socket();
InetSocketAddress endPoint = new InetSocketAddress(host, port);
sk.connect(endPoint,10000);
BufferedReader skbr = new BufferedReader(new InputStreamReader(sk.
getInputStream()));
PrintStream in = new PrintStream(sk.getOutputStream());
char[] header = new char[22];
header[0] = 1;
header[1] = 7;
header[2] = 0;
header[3] = 0;
header[4] = 0;
header[5] = 17;
char[] content = "1\t4\tn7css\tn7css\t".toCharArray();
for(int i = 0;i < 16;i++){
header[i+6] = content[i];
}
in.print(header);
in.flush();
int tmp = skbr.read();
System.out.println(tmp);
} catch(Exception e){
e.printStackTrace();
}
}
}