比如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);哥几个帮忙分析一下,需要完整代码我再贴~
{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);哥几个帮忙分析一下,需要完整代码我再贴~
看看工具显示收到的是什么感觉代码不对或c#收的不是delphi发的
看是客户端发送的不正确还是服务端接收的不正确CopyMemory(_buffer,PChar(_str),Length(_str));
把这一句改成
CopyMemory(_buffer[0],PChar(_str),Length(_str));
试试是否可行
CopyMemory(@_buffer[0],PChar(_str),Length(_str));
不过还是不行..
还是接收的时候处理有问题
捕获到的数据包都是localhost和remotehost不一样的,我的用法不对?我就打开smsniff以后,直接
点那个三角开始运行了。