具体情况是这样的:
我用.net写了个client,在linux下用c语言写了server,但是发现client发送时函数要求发送的是byte[],而linux我用的char[] buffer接收的,打印出来是错误的结果。应该怎么解决这个问题?(尽量具体一点,谢!)

解决方案 »

  1.   

    socket 发送?
    windows和linux(unix)间在处理流需要倒序。
      

  2.   

    client端发送数据,服务器接收不到
    ///////window中c#写的客户端:
    private void button1_Click(object sender, EventArgs e)
    {
         Byte[] bytee = new Byte[1024];
         string send = richTextBox1.Text+"\r\n";
         bytee = System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray());
         sock.Send(bytee, bytee.Length, 0);            
    }////////linux端:
    while(1)
    {
    new_fd = accept(s_fd,NULL,NULL);

    if(new_fd < 0)
    {
    printf("Accept Error : %s!!\n",strerror(errno));
    }

    if(!(pid = fork()))
    {
    printf("proc:%d\n",getpid());
    close(s_fd);
    char buffer[1024];
    bzero(buffer,1024);
    while(1) {
    n = read(new_fd,buffer,1024);

    if(!n || !strcmp(buffer,"quit"))
    {
    break;
    }
             buffer[n] = 0;
    printf("%s\n",buffer);
    }
    close(new_fd);
    exit(0);
    }
    else if(pid < 0)
    printf("Fork Error : %s!!\n",strerror(errno));
    else
    {
    close(new_fd);
    }
    }
      

  3.   

    sock.Send(bytee, bytee.Length, 0);
    改成这样试试看//默认的最大长度为8192,系统会自动拆分的
    byte[] strByteArr = System.Text.Encoding.Default.GetBytes(msg);
    sock.SendByteArr(strByteArr);
    sock.SendByteArr(new byte[1] { 0 });