比如Delphi发“123abc”转成ASCII就是{49,50,51,97,98,99},但是C#服务端收到的是
{140,39,213,0,44,246},而且我发现我换了其他的6个字符,收到的还是
{140,39,213,0,44,246},郁闷啊~主要代码:
C#(C#2.0)服务器端:
            Socket client=newsock.Accept();//并返回一个新的socket,用于与客户端之间的通信
            int recv;//用于表示客户端发送的信息长度
            while(true)
            {//用死循环来不断的从客户端获取信息
                data=new byte[1024];
                //data = new byte[] { };
                recv=client.Receive(data);
                
                Console.WriteLine("recv="+recv);
                if (recv==0)//当信息长度为0,说明客户端连接断开
                    break;
                this.lbox_Msg.Items.Add(Encoding.ASCII.GetString(data));                
                break;
            } Delphi(Delphi7)客户端:    _str := Trim(Self.Edit1.Text);
    SetLength(_buffer,Length(_str));    // _buffer是array of Byte
    CopyMemory(_buffer,PChar(_str),Length(_str)); 
    _int := Length(_buffer);
    send(_clientSocket,_buffer,_int,0);哥几个帮忙分析一下,需要完整代码我再贴~

解决方案 »

  1.   

    delphi先发给一个tcp转发、代理工具,由它再转给c#
    看看工具显示收到的是什么感觉代码不对或c#收的不是delphi发的
      

  2.   

    你用ClientSocket.Socket.SendText(aa);试试,看C#接收的是什么?
      

  3.   

    用smsniff先监控一下网络包
    看是客户端发送的不正确还是服务端接收的不正确CopyMemory(_buffer,PChar(_str),Length(_str)); 
    把这一句改成
    CopyMemory(_buffer[0],PChar(_str),Length(_str)); 
    试试是否可行
      

  4.   

    CopyMemory(_buffer[0],PChar(_str),Length(_str));这样编译不过去,得加个@
    CopyMemory(@_buffer[0],PChar(_str),Length(_str));
    不过还是不行..
      

  5.   

    先用smsniff看看是发送的时候有问题
    还是接收的时候处理有问题
      

  6.   

    smsniff捕获不到,C端、S端在一台机器上运行,应该是localhost和remotehost是一致的,但是我
    捕获到的数据包都是localhost和remotehost不一样的,我的用法不对?我就打开smsniff以后,直接
    点那个三角开始运行了。
      

  7.   

    下一个tcp工具,分别用你的两个软件连接一下,目的只有一个,测试一下是你发送的问题还是接收的问题,这样才好判断