在桌面上运行一点问题也没有,但同样的代码在手持机设备上,就不能用了,总是出现 “现有连接被远程主机强行关闭”的提示,在try-catch中也不能捕捉到异常,但实现上Socket可能是没连上的。
代码如下:
- C# code
namespace SmartDeviceProject1{ public partial class Form1 : Form { private static byte[] result = new byte[2048]; IPAddress ip; Socket socket; Thread myThread; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ip = IPAddress.Parse(this.comboBox1.Text); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { socket.Connect(new IPEndPoint(ip, int.Parse(this.textBox1.Text))); myThread = new Thread(new ThreadStart(ReceiveData)); myThread.Priority = ThreadPriority.BelowNormal; myThread.Start(); } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void button2_Click(object sender, EventArgs e) { if (socket.Connected) { socket.Send(Encoding.UTF8.GetBytes(textBox2.Text)); textBox2.Text =string.Empty ; } } private void ReceiveData() { while (true) { int resultLength = socket.Receive(result); this.Invoke((EventHandler)delegate { this.textBox3.Text +=(DateTime.Now.ToLongTimeString() + Encoding.UTF8.GetString(result, 0, resultLength)); }); Application.DoEvents(); } } }}
上面我之所以说在手持设备上Socket可能是没连上的,是因为如果我桌面端没有打开端口,try - catch 同桌面打开端口一样,都不能捕捉到异常,而如果上面的客户端程序如果与服务器端都运行在桌面,则try catch 能捕捉到没连上,出现“由于目标机器积极拒绝,无法连接。 192.168.0.170:10086”的异常信息。
问:如果我想在手持机上用Socket连上桌面,我应该怎么做呢 ?这上面的代码跟本好像连上不,请高手指点
------解决方案--------------------
是不是wince下用socket要动态加载相关dll?
用c来写,不用.net,就是要动态加载。
------解决方案--------------------
唉!
你真机是不是通过activesync同步后再连接的?
同步后真机将由activesync分配一个ip,此ip与你桌面电脑或远程服务端不是同一个子网!
------解决方案--------------------
WinCE上有Wi-Fi吗?试试通过Wi-Fi上网吧
通过ActiveSync连好象是TCP可以UDP不行
------解决方案--------------------
代码,是需要移植的,不是拿来就能用的。