WinCE Socket.BeginSend()为什么数据发不出去呢?连接没有问题

寒江易雪_王孙 2010-11-17 11:53:35
VS2005, Windows Mobile 6
Connect没有问题,断点调试连接没有问题,
关键是电脑服务端往手机端发数据,手机端能正确接收,
而手机端往电脑服务器端发数据,服务端打断点根本就走不到,也就是接收不到数据.
但手机端BeginSend()方法没有报错,这是怎么回事呢?

代码 客户端发送

public void ASend(byte[] SendData)
{
if (SendData == null)
{
return;
}
try
{
mSocket.BeginSend(SendData, 0, SendData.Length, 0, new AsyncCallback(SendCallBack), mSocket);
}
catch (Exception ex)
{
if (onClosed != null)//发送出现异常,则执行onClosed委托事件,
{
onClosed(ID, "在线Socket发送数据出错" + ex.Message);
}
}
}



服务端事件注册和接收数据代码

private void TheListener_OnAccept(Maunite.Common.AsySocket AcceptedSocket)
{
AcceptedSocket.OnStringDataAccept += new Maunite.Common.StringDataAcceptHandler(Accept_OnStringDataAccept);//注册接收在线消息的事件
AcceptedSocket.OnClosed += new Maunite.Common.AsySocketClosedEventHandler(Accept_OnClosed);//注册监听在线消息关闭的事件

try
{
AcceptedSocket.BeginAcceptData();//这个原型代码在下面
}
catch (ArgumentNullException ex)
{
//
}
//添加客户端
theClient.Add(AcceptedSocket.ID, AcceptedSocket);
}
private void Accept_OnStringDataAccept(string AccepterID, string AcceptData)
{
MsgRef msgref = new MsgRef(ReceiveMessage);//MsgRef是申明的委托
this.BeginInvoke(msgref, new object[] { AcceptData });
}
private void ReceiveMessage(string id, string msg)
{
try
{
string[] msgList = msg.Split('|');
if (msg.Length < 1)
{
return;
}
//code
}
}
//BeginAccept原型
public void BeginAcceptData()
{
try
{
//开始接收数据
StateObject state = new StateObject();
state.workSocket = mSocket;
mSocket.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0, new AsyncCallback(ReceiveCallback), state);
}
catch (SocketException ex)//
{
if (onClosed != null)
{
onClosed(ID, "在线Socket发送数据出错" + ex.Message);
}
}
}



各们大牛这是什么原因啊,有点感觉和环境是否有关,因为客户端用同样的代码接收数据是没问题的,就是客户端往服务端数据发不出去,这是什么原因?
...全文
240 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
up.,..up...
看来杯具了...
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 91program 的回复:]
觉得好像是和环境相关,记得以前在模拟器上调试Socket时也是只能单方向的
[/Quote]

那我这个环境是什么问题嘛??
前辈,你的环境怎么搭的?
91program 2010-11-17
  • 打赏
  • 举报
回复
觉得好像是和环境相关,记得以前在模拟器上调试Socket时也是只能单方向的
  • 打赏
  • 举报
回复
自己顶!!
丰满 2010-11-17
  • 打赏
  • 举报
回复
呵呵,学习了
  • 打赏
  • 举报
回复
前辈,用VS2005用什么组件组成的环境比较靠谱?我用的Microsoft ActiveSync 4.5中文版,和PPC-WM6.1智能手机模拟器,行不行呢?运行的时候出来两个手机模拟界面,貌似VS一个,模拟器一下,程序是在模拟器的手机界面上运行的
  • 打赏
  • 举报
回复
up...up...
源码下载地址: https://pan.quark.cn/s/c20c5da6957d 卸载 首先,需要核实是否存在先前安装的记录,或者系统是否预置了httpd服务,可通过以下命令进行验证: # rpm -qa | grep httpd 或者: # yum list | grep httpd 我之前已经进行过一次安装,因此在此会看到相应的显示结果: 然后我将着手卸载我的httpd,首要步骤是终止httpd服务的运行,对应的命令如下: # systemctl stop httpd.service 接着,无论是使用 rpm -e 还是 yum -erase 命令均可实现卸载,但需注意使用rpm -e命令前必须自行移除相关依赖包,因此我选择使用yum -erase命令进行卸载,具体命令为: # yum erase httpd.x86_64 在执行过程中会提示确认操作 在Linux环境中,CentOS 7 是一种非常普遍的操作系统,特别是在服务器应用方面。Apache HTTP Server(通常简称为Apache或httpd)是最广受欢迎的网页服务器软件之一,主要用于承载网站及相关服务。本资源将详尽说明在CentOS 7系统中关于Apache服务的安装与移除流程。 ### 移除Apache服务 1. **核实安装情况**: 在执行卸载操作前,必须先确认Apache是否已安装。这可以通过查询已安装的软件包列表来完成,可选用以下任一命令: ```bash # rpm -qa | grep httpd # yum list | grep httpd ``` 若Apache已安装,上述命令将返回相关的软件包信息。 2. **终止服务运行**: 在卸载前,必须先停止正在运行的A...
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 在信息技术行业,特别是在操作系统部署及维护方面,统一可扩展固件接口(UEFI)与Linux系统如Debian的相互配合是一个关键议题。本篇将深入分析"在Debian 9.13系统中通过UEFI启动的UEFI Shell"这一焦点,并阐述如何处理安装期间遭遇的启动障碍。 UEFI作为替代传统BIOS的新型固件架构,它带来了更为先进、更为安全的启动机制,同时支持更大容量的存储设备以及更迅捷的启动时间。在部署Debian 9.13(Stretch版本)时,用户可以选择运用UEFI模式进行安装,从而获取上述种种好处。然而,UEFI启动过程需要特定的引导管理器,一般而言是GRUB2的UEFI版本,即称作grubx64.efi。 描述中所述情形可能是由于安装阶段GRUB2引导管理器的UEFI版本未能被恰当地生成或设置,因而系统无法经由UEFI模式启动。在此情形下,"uefishell"工具便显得尤为重要。UEFI Shell是一个命令行界面,它允许用户在UEFI环境中执行多样任务,包括手动引导操作系统。它提供了一个临时的补救措施,使用户得以纠正引导故障。 为了借助UEFI Shell来纠正启动故障,必须遵循以下步骤: 1. **获取UEFI Shell**:通常,UEFI Shell作为现代计算机UEFI固件的一部分预先安装,但在某些情况下,可能需要从设备制造商的官方网站上获取最新版本。 2. **插入搭载UEFI Shell的USB存储设备**:将下载的UEFI Shell文件拷贝至一个采用FAT32格式化的USB存储设备上,并将其接入计算机。 3. **进入UEFI配置界面**:重新...

19,524

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧