使用C#的Socket开发网络版来电管理软件 |
chen在2009/9/7发表,被浏览4372次
|
适合对象:记得来电显示管理器的网络版 开发环境:Visual C# 下载范例:6.zip ( 46.13K ) [ 2009-09-07 ] 使用环境:需要来电监听服务程序TeleListen.exe(点击下载) 相关连接:来电管理器服务程序
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 _ { public partial class Form1 : Form { static string strReceived=""; static string server; static int port; static Socket socketTele; static Thread thrListen; public Form1() { InitializeComponent(); } private static Socket ConnectSocket() { Socket socket = null; //实例化Socket对象,并初始化为空 IPHostEntry iphostentry = null; //实例化IPHostEntry对象,并初始化为空 iphostentry = Dns.GetHostEntry(server); //获得主机信息 //循环遍历得到的IP地址列表 foreach (IPAddress address in iphostentry.AddressList) { //使用指定的IP地址和端口号实例化IPEndPoint对象 IPEndPoint IPEPoint = new IPEndPoint(address, port); //使用Socket的构造函数实例化一个Socket对象,以便用来连接远程主机 Socket newSocket = new Socket(IPEPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); newSocket.Connect(IPEPoint); //调用Connect方法连接远程主机 if (newSocket.Connected) //判断远程连接是否连接 { socket = newSocket; break; } else { continue; } } return socket; } //接收Socket服务发送的内容 private static string SocketReceive() { Byte[] btReceived = new Byte[256]; int intContent = 0; if (socketTele == null) return "Not connected"; do { Application.DoEvents(); //从绑定的Socket接收数据 intContent = socketTele.Receive(btReceived, btReceived.Length, 0); //将接收到的数据转换为字符串类型 strReceived += Encoding.ASCII.GetString(btReceived, 0, intContent) + "\n"; } while (intContent > 0); return strReceived; } //使用线程监听Socket public static void ListenThread() { //调用自定义方法SocketSendReceive获取指定主机的主页面内容 string strContent = SocketReceive(); MessageBox.Show(strContent); } //启动线程 private void button1_Click(object sender, EventArgs e) { server = textBox1.Text; //指定主机名 port = Convert.ToInt32(textBox2.Text); //指定端口号 socketTele = ConnectSocket(); if (socketTele == null) { strReceived = "连接失败!\n"; return; } thrListen = new Thread(new ThreadStart(ListenThread)); thrListen.Start(); } //关闭Socket连接 private void button2_Click(object sender, EventArgs e) { if (socketTele != null) { socketTele.Close(); thrListen.Abort(); } } //显示接收的内容 private void timer1_Tick(object sender, EventArgs e) { int i; if (strReceived.Length > 0) { i = strReceived.IndexOf("\n"); while (i > 0) { listBox1.Items.Add(strReceived.Substring(0, i+1)); strReceived=strReceived.Remove(0, i+1); i = strReceived.IndexOf("\n"); } } } } }
|
|
|
|