您的位置:首页 > 其它

Net Compact Framework 基础篇(6)-- Socket通信 【转】

2009-08-21 11:04 316 查看
Socket通信中的服务器端,采用TcpListener

在TcpListner实例化时,就指定好了监听的IP和Port



1 listener = new TcpListener(IPAddress.Any, 4564);


然后通过AcceptSocket方法获得Socket对象。

1 socket = listener.AcceptSocket();
2 if (socket != null)
3 {
4 if (socket.Connected)
5 {
6 int length = socket.Receive(bContent);
7 this.lstContent.Add(Encoding.Default.GetString(bContent, 0, length));
8 socket.Send(Encoding.Default.GetBytes("Receive OK!"));
9 socket.Disconnect(false);
10 }
11 }


在PC端测试中,创建TcpClient对象

同样实例化TcpClient对象后,通过Client属性来获得Socket对象。

1 TcpClient client = new TcpClient();
2 client.Connect(new IPAddress(new byte[] { 192, 168, 0, 157 }), 4564);
3 byte[] bContent = new byte[1024];
4 if (client.Connected)
5 {
6 Socket socket = client.Client;
7 socket.Send(Encoding.Default.GetBytes("Client Send OK!"));
8 int length = socket.Receive(bContent);
9 System.Console.WriteLine(Encoding.Default.GetString(bContent, 0, length));
10
11 socket.Disconnect(false);
12 socket.Close();
13 client.Close();
14 }


测试通过后,在Mobile设备中进行测试

在Mobile中,直接创建Socket对象。

这里想说明的是,你可以直接在通信2端直接创建Socket对象来连接,当然也可以创建TcpListener和TcpClient对象。效果是一样的。

1 byte[] bContent = new byte[1024];
2 string tmpString = "";
3
4 Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
5 IPEndPoint localEP = new IPEndPoint(new IPAddress(new byte[] { 192, 168, 0, 157 }), 4564);
6 socket.Connect(localEP);
7 if (socket.Connected)
8 {
9 socket.Send(Encoding.Default.GetBytes("Client Send OK!"));
10 int length = socket.Receive(bContent);
11 tmpString = Encoding.Default.GetString(bContent, 0, length);
12
13 socket.Close();
14 }
15 MessageBox.Show(tmpString);


效果如下:

服务器端:





Mobile端:





最后大家要注意的:

当在模拟器上测试时,服务器和客户端都在同一台机器上时,服务器的监听IP特别注意,一定要设为IPAddress.Any。否则指定了一个IP后,在Mobile设备进行Socket通讯时,会有问题,会报强制关闭一个连接的错误。

其实模拟器或实际设备都是通过DMA的方式访问网络资源,这样的话,访问速度会快很多。当然,你也可以设置模拟器或者实际设备通过TCP/IP方式连接。但这样做法不提倡。



如何实现通过TCP/IP方式连接:

在Tools->Options->Device Tools->Devices->选择一个设备->Properties->将Transport改成Tcp Connect Transport即可。

在部署到实际设备时,还需要拷贝Programs Files/Common Files/Microsoft Shared/CoreCon/1.0/Target/wce400/<CPU>文件夹下的dll和exe拷贝到设备的Windows目录

然后在设备中运行CommanClient2.exe

如果设备上的安全功能开启的话,还要运行设备上的CMAccept.exe



模拟器如何实现,暂时没有找到相关资料。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐