socket 客户端 异步接,服务器不确定? 本帖最后由 jjcl521 于 2010-06-08 13:20:05 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个是Delphi的代码 可以实现功能clientsocket1.Active := false; clientsocket1.Host := sIP; clientsocket1.Port := iPort; bop := 10; try //当地址或端口不存在时 引发异常,不做处理 继续执行 if not clientsocket1.Active then clientsocket1.Active := true; except //raise Exception.Create('目标地址或端口不可用'); end; clientsocket1.Socket.SendText(s); sleep(500); setsockopt(clientsocket1.Socket.SocketHandle, SOL_SOCKET, SO_RCVTIMEO, @bop, sizeof(bop)); s2 := clientsocket1.Socket.ReceiveText; rev := BcdTOstr(s2); 你发了个“命令”过去,可我不相信对方接受的命令字是“命令”DELPHI的s的值是什么? 所谓的 “命令”也就是一堆字符串我刚从google一下说是串口 socket 我知道所谓的命令是字符串!可你的代码dataSend = Encoding.ASCII.GetBytes("命令");ClientSocket.Send(dataSend, 0, SocketFlags.None);你自己看你发的什么命令过去?难道不是“命令”这个字符串吗,怎么可能会有这样的命令呢? 恩,你说的对 可能是我的命令不正确 命令是经过 stirng to bcd ,再经过 crc 校验以后的 RecevieCallBack你的这个函数干吗用了?ClientSocket.BeginReceive(dataRev, 0, dataRev.Length, SocketFlags.None, new AsyncCallback(RecevieCallBack), ClientSocket);BeginReceive 这个是阻塞的, 程序会一直卡在这里等待接收数据,哪里调用了RecevieCallBack? BeginReceive 这个不阻塞哈 我也是做工控的你最好把DEPHI发的数据和C#发的数据通过工具对比一下有可能是C#发过去的数据设备不认识 看看这个是怎么写的:一个我经常参考的异步socket通信: 失误 看走眼了以为在C++里lz的代码看起来没有什么错误,查看一下发送的协议包是否正确 用抓包工具 试试看你发的包和demo发的包是否一致就知道了 return语句 求助:2个数组中的值相互比较 [急!急!急!]关于数组与sql的问题 如何得到网页的html源代码? 百分请教,今年最郁闷的问题 求CVS的相关东东 请问有没有办法向非当前程序发送键盘或鼠标消息??????????? 请求在此上下文中不可用问题,控件作为参数 C#中读写Excel(office Xp)的问题。 在windows.forms的DataGrid中,怎样得到被选中行的该记录的ID号? 服务器和客户端数据同步问题 Visual Studio 2005 中的 “服务器资源管理器” 链接问题!
clientsocket1.Host := sIP;
clientsocket1.Port := iPort;
bop := 10;
try //当地址或端口不存在时 引发异常,不做处理 继续执行
if not clientsocket1.Active then clientsocket1.Active := true;
except
//raise Exception.Create('目标地址或端口不可用');
end;
clientsocket1.Socket.SendText(s);
sleep(500); setsockopt(clientsocket1.Socket.SocketHandle, SOL_SOCKET, SO_RCVTIMEO, @bop, sizeof(bop));
s2 := clientsocket1.Socket.ReceiveText;
rev := BcdTOstr(s2);
所谓的 “命令”也就是一堆字符串我刚从google一下说是串口 socket
恩,你说的对 可能是我的命令不正确 命令是经过 stirng to bcd ,再经过 crc 校验以后的
你的这个函数干吗用了?ClientSocket.BeginReceive(dataRev, 0, dataRev.Length, SocketFlags.None, new AsyncCallback(RecevieCallBack), ClientSocket);BeginReceive 这个是阻塞的, 程序会一直卡在这里等待接收数据,
哪里调用了RecevieCallBack?
BeginReceive 这个不阻塞哈
你最好把DEPHI发的数据和C#发的数据通过工具对比一下
有可能是C#发过去的数据设备不认识
失误 看走眼了
以为在C++里lz的代码看起来没有什么错误,查看一下发送的协议包是否正确
看你发的包和demo发的包是否一致就知道了