资源简介
下载前请先看说明!!
此程序是C# winform 用Socket编写。包含服务端和客户端代码。
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、程序为了学习方便未使用数据库,所有数据交互都放在内存中进行。
此程序是C# winform 用Socket编写。包含服务端和客户端代码。
程序界面,我偷懒了,直接把我前面写的Web页面的素材图片照搬过来,包括界面结构都仿照Web那个程序了。不过winform按照Web风格去写,真tm累。点击网站上的名字,可以看到前面写的web程序,以及形成这个winform程序的学习过程。
客户端:
服务端:
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、程序显示英文不太正常,中文正常。
代码片段和文件信息
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个文件信息
相关资源
- winform 鼠标聚焦 焦点时变色
- winform仿qq停靠屏幕边缘
- winform手动改变自定义窗口大小
- winform鼠标穿透(新)
- C#winform打印指定区域 -控件拖动 -设置
- pop3lib类库 +(这个不错) 附完整
- Socke传输 (wince6.0系统)
- SocketAsyncEventArgs完成断开编程
- winform 垂直交错效果显示图像
- winform 浮雕效果的图像
- WPF 自定义标题的winform窗体实现源码
- ztree应用
- Socket局域网聊天项目(客户端源码)
- C# WinForm取命令行参数
- 工作上
- MongoDB
- Winform中鼠标穿透效果,类似桌面壁纸
- winform 利用image实现变脸小动画
- wpf gridsplit 布局
- Jsonp跨域登录 (同步登录 同步退出)
- 随机线条拼图
- C# 批量重命名文件名
- winds服务,发送邮件且禁用违法规则的
- RTX IM API 调用
- FastSocket.Net
- android mvp 入门级 实例源码下载14550
- C# 远程关闭重启计算机 实例源码下载
-
Couchba
se使用教程(文档) - nVelocity 模板引擎
- MCC
评论
共有 条评论