All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
用PHP控制用户的浏览器_[PHP教程]
ASP.NET,2.0,Language,Swithcer,and,Theme,Swicher,多语_[Asp.Net教程]
visual c++中的函数模板
在DataList中使用用户控件_[Asp.Net教程]
Asp.net,备份和还原SQL,Server及压缩Access数据库_[Asp.Net教程]
高度100%的绝对定位自适应布局技巧_[Html教程]
学习PHP小结:PHP编程中常用的三则技巧_php资料_编程技术
DB2,9和ASP.NET2.0构建下一代应用程序之一_[Asp.Net教程]
XML WebService完全实例详细解析_[XML教程]
简单示例:AJAX结合PHP代码实现登录_[PHP教程]
Reading number is top 10 pictures
真正的国产-非模拍 贵在是真实2
开始让人感动,后来......
在加油站厕所门口看到的告示
Ashlynn Brooke show proud chest measurement2
8090后结婚的各种XX事
LiXiang early youth photo
中国文革时期的色情图片1
Black and white also sexy--YanLiu2
男人帮杂志里的惹火性感美女2
China telecom 114 spokesman MeiYanXu2
Download software ranking
美女写真3
Red cliff
仙剑奇侠传98版歌曲
超级战舰
Take off clothes to survival
Proficient in JavaScript
asp.net技术内幕
jdk1.6 for windows
Sora aoi's film--cangkong_Blue.Sky
The cock of the Grosvenor LTD handsome
qq published in(发表于) 2014/7/11 9:29:26 Edit(编辑)
IP聊天室实例

IP聊天室实例

C#教程:开发TCP/IP聊天室实例|方法

开发TCP/IP聊天室

本示例通过TCP实现在客户端与服务器端计算机之间进行通信。本实例运行时,首先打开服务器端程序,输入用户名单击【登录】按钮完成服务器的开启;然后运行客户端程序,同时输入用户名,登录程序(这里的端口号都默认为11000),然后单击任何一方的【发送】按钮,对方将收到信息,并显示在自己的信息列表中。实例运行结果如图1和图2所示。



图1 “服务器”运行窗体



图2“客户端”运行窗体

服务器端实现的具体步骤如下所示。

(1)在VS2005项目中添加一个窗体。

(2)在窗体中添加3个TextBox文本框,分别用于获取用户名、显示与发送信息。

(3)在窗体中添加3个Button按钮和3个Label控件,分别用于激发事件和显示信息。

(4)程序主要代码。

首先添加对命名空间的引用,代码如下:

using System.Net;

using System.Threading;

using System.Net.Sockets;

然后定义在程序中要用到的变量,代码如下:

#region//定义变量

IPAddress HostIP = IPAddress.Parse("127.0.0.1");

IPEndPoint point;

Socket socket;

bool flag = True;

Socket acceptedSocket;

#endregion

单击【登录】按钮,实例化一个Socket对象,令其开始侦听,当侦听到信息时,开启一个新的进程,调用新的方法(Proccess)显示信息。【登录】按钮的Click事件代码如下:

private void button1_Click_1(object sender, EventArgs e)

{

HostIP = IPAddress.Parse("127.0.0.1");

try

{

point = new IPEndPoint(HostIP, Int32.Parse("11000"));

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,

ProtocolType.Tcp);

socket.Bind(point);

socket.Listen(50);

acceptedSocket = socket.Accept();

Thread thread = new Thread(new ThreadStart(Proccess));

thread.Start();

}

catch (Exception ey)

{

MessageBox.Show(ey.Message);

}

}

声明委托以及委托所要代理的事件,为进行调用控件作准备,代码如下:

#region//声明委托

delegate void SetTextCallback(string text);

private void SetText(string text)

{

textBox2.AppendText(text + "rn");

}

#endregion

进程所要调用的方法,用于显示来自其他机器的信息。代码如下:

#region//进程方法

private void Proccess()

{

if (acceptedSocket.Connected)

{

while (flag)

{

byte[] receiveByte = new byte[64];

acceptedSocket.Receive(receiveByte, receiveByte.Length, 0);

string strInfo = Encoding.BigEndianUnicode.GetString(receiveByte);

this.Invoke(new SetTextCallback(SetText), new object[] { strInfo });

}

}

}

#endregion

通过Socket类的Send方法,实现信息的发送。【发送】按钮的Click事件代码如下:

private void button2_Click_1(object sender, EventArgs e)

{

try

{

Byte[] sendByte = new Byte[64];

string sendStr = this.textBox1.Text + ":" + this.textBox3.Text + "rn";

sendByte = Encoding.BigEndianUnicode.GetBytes(sendStr.ToCharArray());

acceptedSocket.Send(sendByte, sendByte.Length, 0);

}

catch { }

}

客户端实现的具体步骤如下所示。

(1)在VS2005项目中添加一个窗体。

(2)在窗体中添加3个TextBox文本框,分别用于获取用户名、显示与发送信息。

(3)在窗体中添加3个Button按钮和3个Label标签,分别用于激发事件和显示信息。

(4)程序主要代码。

单击客户端窗体中的【登录】按钮,通过Socket类的Connect方法连接到指定的机器,同时也开启一下新的进程。【登录】按钮的Click事件代码如下:

private void button1_Click(object sender, EventArgs e)

{

HostIP = IPAddress.Parse("127.0.0.1");

try

{

point = new IPEndPoint(HostIP, Int32.Parse("11000"));

socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream,

ProtocolType.Tcp);

socket.Connect(point);

Thread thread = new Thread(new ThreadStart(Proccess));

thread.Start();

}

catch(Exception ey)

{

MessageBox.Show("服务器没有开启rn"+ey.Message);



添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.