4544|7

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

智能手机(带wince5.0系统)向指定IP和端口发送数据 [复制链接]

智能手机(带wince5.0系统)向指定IP和端口发送数据,用什么技术比较好?socket行吗?
此帖出自WindowsCE论坛

最新回复

我的代码:希望大家指教一下。 server(PC): using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Threading; namespace WinSocketServer {     public partial class FmServer : Form     {         Thread mythread;         Socket socket;         public FmServer()         {             InitializeComponent();         }         public static IPAddress GetServerIP()         {             IPHostEntry ieh = Dns.GetHostByName(Dns.GetHostName());             return ieh.AddressList[0];         }         private void BeginListen()         {             IPAddress ServerIp = GetServerIP();//是不是把这里的地址,换成外网的就可以了?我在局域网里可以实现            IPEndPoint iep = new IPEndPoint(ServerIp, 8000);             socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                          byte[] byteMessage = new byte[100];             this.label1.Text = "正在侦听:" + iep.ToString();             try             {                 socket.Bind(iep);             }             catch (System.Exception ex)             {                 MessageBox.Show(ex.Message);             }             while (true)             {                try                 {                     socket.Listen(5);                                        Socket newSocket = socket.Accept();                     newSocket.Receive(byteMessage);                     this.label1.Text = "连接已成功。";                     string[] str = newSocket.RemoteEndPoint.ToString().Split(':');                     this.listBox1.Items.Add("At:" + DateTime.Now.ToShortTimeString() + "  From:" + str[0]);                     this.listBox1.Items.Add(Encoding.Default.GetString(byteMessage));                }                 catch (SocketException ex)                 {                     string a = ex.Message;                     this.label1.Text = ex.ToString();                 }             }         }         private void btnLisent_Click(object sender, System.EventArgs e)         {             if (this.btnLisent.Text == "侦听")             {                 try                 {                     mythread = new Thread(new ThreadStart(BeginListen));                     mythread.Start();                     this.btnLisent.Text = "停止";                 }                 catch (System.Exception er)                 {                     MessageBox.Show(er.Message, "完成", MessageBoxButtons.OK, MessageBoxIcon.Stop);                 }             }             else             {                 socket.Close();                 mythread.Abort();                 this.btnLisent.Text = "侦听";                 this.label1.Text = "连接已关闭。";             }         }     } } client(wince模拟器): using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Threading; using System.Net.Sockets; using System.IO; namespace DevScoketClient {     public partial class FmClient : Form     {         Socket socket;         IPEndPoint iep;         public FmClient()         {             InitializeComponent();         }         private void btnConnect_Click(object sender, EventArgs e)         {             string ip = this.tbIP.Text;             string port = this.tbPort.Text;             try             {                 IPAddress serverIp = IPAddress.Parse(ip);                 int serverPort = Convert.ToInt32(port);                 iep = new IPEndPoint(serverIp, serverPort);                 socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);                 socket.Connect(iep);                 socket.Send(Encoding.ASCII.GetBytes(tbInfo.Text.Trim()));                 socket.Shutdown(SocketShutdown.Both);                 socket.Close();                                 labStatus.Text = "Send succeed !";             }             catch (System.Exception ex)             {                 string a = ex.Message;                 labStatus.Text = "Connection failed !";             }         }     } }  详情 回复 发表于 2009-3-2 17:38
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
用socket,应该是没有问题的。
此帖出自WindowsCE论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
网络开发一般都用Socket了,windows mobile和windows ce 都支持,如果用HTTP协议可以考虑用Wininet接口,就不应直接使用socket了。
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
系统层就是正式的网络层编程了,windows上怎么用,ce下就怎么用。socket常用些。
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
通常用socket
此帖出自WindowsCE论坛
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 1 楼 sunrain_hjb 的回复:
用socket,应该是没有问题的。

那么,在智能手机里用socket,是和在windows里面一样的吗?我在wince的模拟器(内网)里面用是可以的,要是在公网上,也一样可以用吗?
要是有点代码就更好了,谢谢。。。
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
socket的代码网上一大把,看LZ想搞怎样的通讯了,基本原理差不多,大多是一个server,一个client,然后creat(),connect(),recve(),send()等等
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

8
 
我的代码:希望大家指教一下。

server(PC):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace WinSocketServer
{
    public partial class FmServer : Form
    {
        Thread mythread;
        Socket socket;

        public FmServer()
        {
            InitializeComponent();
        }

        public static IPAddress GetServerIP()
        {
            IPHostEntry ieh = Dns.GetHostByName(Dns.GetHostName());
            return ieh.AddressList[0];
        }

        private void BeginListen()
        {
            IPAddress ServerIp = GetServerIP();//是不是把这里的地址,换成外网的就可以了?我在局域网里可以实现            IPEndPoint iep = new IPEndPoint(ServerIp, 8000);

            socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            
            byte[] byteMessage = new byte[100];
            this.label1.Text = "正在侦听:" + iep.ToString();

            try
            {
                socket.Bind(iep);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            while (true)
            {
               try
                {
                    socket.Listen(5);
                  
                    Socket newSocket = socket.Accept();
                    newSocket.Receive(byteMessage);

                    this.label1.Text = "连接已成功。";

                    string[] str = newSocket.RemoteEndPoint.ToString().Split(':');

                    this.listBox1.Items.Add("At:" + DateTime.Now.ToShortTimeString() + "  From:" + str[0]);
                    this.listBox1.Items.Add(Encoding.Default.GetString(byteMessage));
               }
                catch (SocketException ex)
                {
                    string a = ex.Message;
                    this.label1.Text = ex.ToString();
                }
            }
        }

        private void btnLisent_Click(object sender, System.EventArgs e)
        {
            if (this.btnLisent.Text == "侦听")
            {
                try
                {
                    mythread = new Thread(new ThreadStart(BeginListen));
                    mythread.Start();

                    this.btnLisent.Text = "停止";
                }
                catch (System.Exception er)
                {
                    MessageBox.Show(er.Message, "完成", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
            }
            else
            {
                socket.Close();
                mythread.Abort();

                this.btnLisent.Text = "侦听";
                this.label1.Text = "连接已关闭。";
            }
        }
    }
}

client(wince模拟器):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.IO;

namespace DevScoketClient
{
    public partial class FmClient : Form
    {
        Socket socket;
        IPEndPoint iep;

        public FmClient()
        {
            InitializeComponent();
        }

        private void btnConnect_Click(object sender, EventArgs e)
        {
            string ip = this.tbIP.Text;
            string port = this.tbPort.Text;

            try
            {
                IPAddress serverIp = IPAddress.Parse(ip);
                int serverPort = Convert.ToInt32(port);

                iep = new IPEndPoint(serverIp, serverPort);

                socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                socket.Connect(iep);
                socket.Send(Encoding.ASCII.GetBytes(tbInfo.Text.Trim()));
                socket.Shutdown(SocketShutdown.Both);
                socket.Close();
               
                labStatus.Text = "Send succeed !";
            }
            catch (System.Exception ex)
            {
                string a = ex.Message;
                labStatus.Text = "Connection failed !";
            }
        }
    }
}
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表