• 大小: 1.07M
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2020-12-14
  • 语言: C#
  • 标签: winform  Socket  实例  C#  通讯  

资源简介

下载前请先看说明!!
此程序是C# winform 用Socket编写。包含服务端和客户端代码。

程序界面,我偷懒了,直接把我前面写的Web页面的素材图片照搬过来,包括界面结构都仿照Web那个程序了。不过winform按照Web风格去写,真tm累。点击网站上的名字,可以看到前面写的web程序,以及形成这个winform程序的学习过程。

客户端:


服务端:


1、程序主要部分只是用了 Panel、Picturebox、Label、RicheditBox四个组件,滚动条、编辑框什么的都自定义了,应该比较容易看清楚。
2、服务端设定地址为192.168.0.103,端口设定为5188,客户端指向服务端也是这个地址,根据需要自行修改。
服务端:
//监听端口
private int port = 51888;
private TcpListener myListener;
ArrayList MessList = new ArrayList();
int MessCount = 0;
...
...
IPAddress[] addrIP = Dns.GetHostAddresses("192.168.0.103"); //ip地址
localAddress = addrIP[0];
客户端:
//建立网络通讯
try
{
client = new TcpClient("192.168.0.103", 51888); //定义服务器端ip地址和端口,与服务器端定义要一致
TcpInfo.AppendText("本机EndPoint:" client.Client.LocalEndPoint); //本机的ip地址和端口号
TcpInfo.AppendText("与服务器建立连接成功");
linkFlag = true;
}
catch
{
TcpInfo.AppendText("与服务器连接失败");
return;
}
3、程序运行时必须首先运行“服务端”的ChatServer.exe,点击“开始监听”后,再运行“客户端”的可执行文件,用户名随便起一个,密码随便填。服务端每个登录用户开1个线程,客户端开1个线程进行数据交互。
4、数据传输定义:
string[] sArray = getMess.Split(new char[6] { '[', ']', '$', '$', '$', '$' });
//sArray[1] 发送信息用户的ip
//sArray[3] 发送消息的版块
//sArray[4] 发送消息的内容
//sArray[5] 用户名
//sArray[6] 时间
服务端据此进行消息派发,客户端根据返回的消息分类显示。
5、由于使用绘图功能,会产生屏幕的闪烁,所以用生成位图的方式处理,达到减小闪烁。可能会产生信息更新较慢或不连贯,因为在最右侧将全部数据动作写了一遍。同时,由于在线程上不能对原组件进行添加等操作,所以按照右侧内容变化来更新数据信息显示:
 private void TcpInfo_TextChanged(object sender, EventArgs e)
 {.........}
绘图处理:
......
Bitmap localBitmap = new Bitmap(conter_panel.Width, conter_panel.Height);
 Graphics bitmapGraphics = Graphics.FromImage(localBitmap);
bitmapGraphics.Clear(BackColor);
bitmapGraphics.SmoothingMode = SmoothingMode.AntiAlias;
Draw(conter_panel.ClientRectangle, bitmapGraphics, 18, true, 0, Color.FromArgb(90, 143, 0), Color.FromArgb(90, 143, 0));
conter_panel.BackgroundImage = localBitmap;
conter_panel.Controls.Add(rc);
......
6、程序为了学习方便未使用数据库,所有数据交互都放在内存中进行。

7、程序显示英文不太正常,中文正常。


    只做了“频道”部分,其他原理相同,就没做了。其他主要就是消息的分类处理,原理都差不多了。像在线用户处理、统计等都是数据处理过程,结合数据库最方便。这个程序只是学习过程中的一个练习,只是一个练习。更多学习关注我的博客http://www.cnblogs.com/qiaoke/

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
using System.IO;
using System.Drawing.Drawing2D;
using System.Text.Regularexpressions;

namespace Thedog
{
    public partial class Form1 : Form
    {
        [DllImport(“Gdi32.dll“ EntryPoint = “CreateRoundRectRgn“)]
        private static extern IntPtr CreateRoundRectRgn
            (
                int nLeftRect
                int nTopRect
                int nRightRect
                int nBottomRect
                int nWidthEllipse
                int nHeightEllip

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    ..A..H.     55296  2016-12-11 00:44  C# winform Socket\客户端\.vs\Thedog\v14\.suo

     文件        189  2016-12-02 21:56  C# winform Socket\客户端\App.config

     文件      16744  2016-12-04 15:19  C# winform Socket\客户端\bin\Debug\Res\1.png

     文件      16951  2016-12-04 15:19  C# winform Socket\客户端\bin\Debug\Res\10.png

     文件      17133  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\11.png

     文件      17094  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\12.png

     文件      16944  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\13.png

     文件      16862  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\14.png

     文件      16756  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\15.png

     文件      16898  2016-12-04 15:24  C# winform Socket\客户端\bin\Debug\Res\16.png

     文件      16961  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\17.png

     文件      17067  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\18.png

     文件      16748  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\19.png

     文件      16890  2016-12-04 15:20  C# winform Socket\客户端\bin\Debug\Res\2.png

     文件      16983  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\20.png

     文件      16895  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\21.png

     文件      17030  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\22.png

     文件      17170  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\23.png

     文件      16994  2016-12-04 15:23  C# winform Socket\客户端\bin\Debug\Res\24.png

     文件      17006  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\25.png

     文件      17290  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\26.png

     文件      16844  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\27.png

     文件      17072  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\28.png

     文件      17109  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\29.png

     文件      17057  2016-12-04 15:20  C# winform Socket\客户端\bin\Debug\Res\3.png

     文件      17031  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\30.png

     文件      17014  2016-12-04 15:22  C# winform Socket\客户端\bin\Debug\Res\31.png

     文件      17077  2016-12-04 15:21  C# winform Socket\客户端\bin\Debug\Res\32.png

     文件      16964  2016-12-04 15:21  C# winform Socket\客户端\bin\Debug\Res\33.png

     文件      16944  2016-12-04 15:21  C# winform Socket\客户端\bin\Debug\Res\34.png

............此处省略100个文件信息

评论

共有 条评论