Windows Mobile的简单IM程序(Socket via C# )

发一个C# socket的Demo, 其中client是WM Pocket PC ,server端是PC机的程序
效果如下:


代码在这里:点这里下载

posted on 2007-10-01 00:53 Freesc Huang 阅读(7092) 评论(29) 编辑 收藏

评论

#1楼 2007-10-14 17:58 夏江红[未注册用户]

请问版主,我的调试环境设置哪里有问题?
我按照你的《 轻松搭建Windows Mobile网络调试环境》文章中的说法重新设置了一遍。
现在的现象是这样:本地PC的IP为192.168.1.2,模拟器的IP设置为192.168.1.232,在pc机ping 192.168.1.232正常。
但是在模拟器上的客户端无法连接到PC上的服务,PC机上的客户端也无法连接到模拟器上的服务。PC机上使用telnet命令到模拟器上服务的端口,出错提示是:不能打开到主机的连接。如果将客户端及服务端都装在模拟器上,两个程序启动后,能够正常运行。
 回复 引用   

#2楼[楼主] 2007-10-14 19:25 fox23      

@夏江红
您说的“无法连接到PC上的服务”能否说得详细些?可能的原因有很多
1.你可以先看看你代码的API有没有问题,自己给自己发能不能收到?
2.是否是先启动的服务端监听?监听的网卡及端口是否正确?
3.包的大小是否适宜?
4.telnet的23号端口默认是关闭的
 回复 引用 查看   

#3楼 2007-10-14 20:18 夏江红[未注册用户]

首先谢谢楼主的及时回复。
1.API没有问题,将服务器程序和客户端程序都编译成ppc上的版本,部署在模拟器上,完成正常,即自发自收正常。
2.在PC上,先启动了服务程序,因此监听肯定先起来了。监听的网卡地址为192.168.1.2(本机真实网卡的地址),端口为10000。
3.关于包的大小,和上面的演示程序差不多,基本上一包数据只有几十到上百字节。
4.我在模拟器上将服务程序起来后,在PC机上运行"telnet 192.168.1.232 10000",10000是模拟器上服务程序的监听端口。出错提示为“不能打开到主机的连接”,感觉好象不能访问192.168.1.232这个地址。另外,win2003server中的防火墙我也关闭了。
 回复 引用   

#4楼 2007-10-15 20:42 [Fox23][未注册用户]

@夏江红
就是说你的网是通的,模拟器的网络设置是对的,但就是不能和PC通信?
直接发给127.0.0.1也收不到么?
把代码贴上来吧。
 回复 引用   

#5楼 2007-10-15 23:31 夏江红[未注册用户]

我的应用是用ICE做的,已经实现了在PC上实现了CS端,现在准备将C端移植到PPC上。今天将日志打印出来了,发现ICE中的示例代码的IP地址使用的都是127.0.0.1,将其改成192.168.1.232就可以了。虽然在PPC上服务也可以打开127.0.0.1上的端口,但只有ppc上的客户端才能连上,PC机上的客户端无法连上。
 回复 引用   

#6楼 2007-10-16 10:38 flag[未注册用户]

socket 客户端与服务端互发消息时出现中文乱码。不知怎么解决。有人遇到此问题吗?可以的话请发个例子到 wuziqi0310819@yahoo.com.cn 上,或加QQ相互交流一些经验。  回复 引用   

#7楼 2007-10-16 10:39 flag[未注册用户]

QQ 619695132  回复 引用   

#8楼 2007-10-16 18:20 [fox23][未注册用户]

@flag
一般是由系统对中问的支持不够引起的
1.使用中文模拟器
2.两边统一编码

我QQ上得少,可以邮件我
hjd.click AT gmail.com
 回复 引用   

#9楼 2008-04-18 13:34 tober[未注册用户]

http://www.winbile.net/BBS/1030068/ShowPost.aspx
错误
 回复 引用   

#10楼[楼主] 2008-04-18 14:40 fox23      

winbile正在升级,部分链接没有更新,给您带来的不便深表歉意
我已经附上代码,请点击下载

Freesc
 回复 引用 查看   

#11楼 2008-04-22 16:37 tober[未注册用户]

你好,请问怎样自动打开wifi且自动连接网络?谢谢  回复 引用   

#12楼[楼主] 2008-04-23 13:08 fox23      

@tober
check out this post:
http://www.winbile.net/bbs/forums/threads/1014040.aspx

 回复 引用 查看   

#13楼 2008-05-13 16:10 wanghong[未注册用户]

你好,我为什么打不开PPCSocketClinet呢?一打开就有两个文件找不到?  回复 引用   

#14楼[楼主] 2008-05-13 16:38 fox23      

@wanghong
您好,能否说清楚些,是那两个文件找不到?

Freesc
 回复 引用 查看   

#15楼 2008-07-19 17:33 翔戈斯[未注册用户]

这个DEMO是用VS.NET2008编写的么?  回复 引用   

#16楼[楼主] 2008-07-19 17:36 fox23      

@翔戈斯
对, 当时是VS2008 beta 2

 回复 引用 查看   

#17楼 2008-07-19 20:33 翔戈斯[未注册用户]

谢谢,看来我要去下载2008了>_<  回复 引用   

#18楼 2008-09-22 20:19 WM爱好者[未注册用户]

您好,我将您的程序部署到我的dopod p660后,出现如下错误:Cannot connect to server。我在模拟器上能够和服务器端连接,但是部署到真机时,就出现如上问题了。服务器端我已经部署在一个有公网IP的服务器上  回复 引用   

#19楼 2008-09-22 20:21 WM爱好者[未注册用户]

另外,我是手动打开GPRS连接的,没有代码实现,问题会出在这里吗?谢谢  回复 引用   

#20楼[楼主] 2008-09-22 20:42 fox23      

@WM爱好者
先确保你的手机能在正常网络条件下访问服务器并检查端口是否对应.
 回复 引用 查看   

#21楼 2008-09-23 12:55 WM爱好者[未注册用户]

我用pingbox拼过服务器,差不多send100个包,收到85个左右的包。服务器的端口10006也已经打开。请赐教,万分感谢  回复 引用   

#22楼 2008-09-23 16:58 WM爱好者[未注册用户]

今天我用pingbox发现,在EDGE网络环境下,丢包率很高,最好情况都超过8%。我想请问这么高的丢包率,如果采用socket传输数据会不会有问题?另外,我一直很好奇,SP msn或SP QQ是怎么传输数据的呢,难道是用socket?谢谢  回复 引用   

#23楼 2008-10-10 12:57 啊黄      

解决中文问题(模拟器,真机没有测试过)
PPC:
//按一定的编码规则对要传递的数据进行编码
sendSocketet.Send(
Encoding.Default.GetBytes(textBox_Msg.Text + "\r\n"));

PC:
Encoding.Default.GetString(buf, 0, size);

 回复 引用 查看   

#24楼 2009-02-26 17:38 liangwind[未注册用户]

有没有用C++而不是C#实现的。  回复 引用   

#25楼 2009-06-29 22:12 clily[未注册用户]

VS2005下开发的,仿真器选用Pocket PC 2003 SE Emulator,插入底座后通过ActiveSync连接到PC,仿真器可以连接到Internet,但基于exosip、osip协议栈PPC客户端却连不到pc上的服务器端,我的ppc是自己分配的IP。(看论坛上有人说通过ActiveSync连接到PC后,ppc emulator与pc间是不是建了一个虚拟网络,ppc被分配一个虚拟ip,ip地址比pc的ip地址低一个。如:pc:172.16.92.27,ppc:172.16.92.26怎样查看ppc的ip??)
如果用wireshark抓包的话,在客户端怎样抓包啊?
大家帮我看看这是什么原因,刚接触,不是很懂。多谢
 回复 引用   

#26楼 2009-07-21 10:07 spring--ajax      

ThreadPool.QueueUserWorkItem(new WaitCallback(ThreadProc));
{
try
{
byte[] buf = new byte[1024];
int size = 0;
do
{
size = sendSocket.Receive(buf, 1024, SocketFlags.None);
if (size > 0)
{

ReceivedMessage = Encoding.ASCII.GetString(buf, 0, size);

this.Invoke(new InvokeDelegate(InvokeMethod));
{
textBox_MsgLog.Text += "\r\nThe Server said: " + ReceivedMessage;
}
}

} while (size > 0);
}
catch (SocketException sockEx)
{
//Skip the exception that was raised when we close the socket while still receiving
if (sockEx.ErrorCode != 10004)
MessageBox.Show(sockEx.ErrorCode.ToString() + ":" + sockEx.Message);
}
}
这里在2005 WM6里面该怎么写,
谢谢楼主
 回复 引用 查看   

#27楼 2010-11-28 13:53 小小_菜鸟      

楼主能不能帮忙解释一下这个程序,还有如何运行的,谢谢  回复 引用 查看   

#28楼 2011-09-07 15:03 cehuiwangqi      

你好,将该程序放在真机上,多普达p660,不用数据线不能连接到电脑,怎么解决呢?谢谢!  回复 引用 查看   

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

公告

These postings are provided "AS IS" with no warranties
and confer no rights.


Locations of visitors to this page

Blog Keywords
Embedded System,Visual Studio,.Net Framework,.Net Compact Framework,.Net Micro Framework,Windows Mobile,Windows Embedded CE,Emulator,WCF,CLR,Design & Pattern,C/C++,C#,Matlab,Algorithms
昵称:Freesc Huang
园龄:4年11个月
粉丝:32
关注:4

统计

  • 随笔 - 197
  • 文章 - 0
  • 评论 - 840

搜索

 

随笔分类(227)

随笔档案(197)

Blogs

Link

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜