我有一程序,作为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发送如上规则所示的注册信息

解决方案 »

  1.   

    c语言的东东,怎么发到java版来了
      

  2.   

    import java.io.BufferedReader;
    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();
    }

    }

    }