什么是CS客户端啊?
C/S分布式模式,是计算机用语。C是指Client,S是指Server。C/S模式就是指客户端/服务器模式。是计算机软件协同工作的一种模式。由于Web浏览器的兴起,B/S模式逐步取代了C/S模式,被更广泛地应用。
根据客户/服务器(Client/Server简记为C/S)体系结构的概念,至少用两台计算机来分别充当客户机和服务器角色。
C/S服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或SQL Server。客户端需要安装专用的客户端软件。
扩展资料:
C\S客户端优点:
1、C/S功能强大,可以减轻服务器端压力,如果用户的需求特别复杂,用C/S。
2、C/S程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。
3、C/S一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供连接和数据交换服务。
4、C/S一般面向相对固定的用户群,对信息安全的控制能力很强.一般高度机密的信息系统采用C/S结构适宜.可以通过B/S发布部分可公开信息。
1、可以在client端登入时write(发送)帐号和密码给server端,当server端接受到内容时判断是否是你预设的帐号密码,是则允许下载,否则关闭其socket。
2、是要客户端看到进度条? 这样就要要求在下载文件时server端要先发这个文件的大小给client端,client端就可以通过这个大小和接受到的字节数比较后打印进度条(printf("#");)
文件大小可用int stat(const char restrict path, struct stat restrict buf);函数获取。
计算机前端就是创建web页面和APP(例如微信、支付宝等)前端界面呈现给使用者的过程,通过HTML、CSS、JS以及繁衍出来的各种技术、框架、解决方案,来实现互联网产品的用户界面交互。相对于传统网页制作的要求更多,不仅要熟悉基本技能,还要熟悉服务器请求,熟悉一种服务器语言,例如PHP。
C/S架构与B/S架构。
1C/S架构,中文名:客户端/服务器,我们使用的软件一般都是C/S架构,例如360,QQ。C表示客户端,S表示服务器。此架构的软件客户端和服务器通信采用的是自有协议,所以相对来说比较安全。
注意:此架构不能跨平台使用。
2B/S架构,中文名:浏览器/服务,B/S架构软件通过使用浏览器访问网页的形式来使用软件,例如知乎、新浪微博。软件不需要安装,直接使用浏览器访问指定的网页即可。
可以跨平台,只要有浏览器即可。语言基础HTML、CSS、Javascript(1)HTML:是英文HyperTextMarkupLanguage的缩写。
是构成网页展示的基础,是一种很简单的可视化标识语言。(11)结构:HTML界面主要由两个部分组成,第一部分为最开始的文档类型标记,第二部分为html根标记。
先发服务端的(Server)完整代码如下:
引入命名空间:
[csharp] view plain copy print
using SystemNetSockets;
using SystemNet;
using SystemThreading;
完整代码如下:
[csharp] view plain copy print
namespace SocketServer
{
class Program
{
private static byte[] result = new byte[1024];
private static int myProt = 8885; //端口
static Socket serverSocket;
static void Main(string[] args)
{
//服务器IP地址
IPAddress ip = IPAddressParse("127001");
serverSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);
serverSocketBind(new IPEndPoint(ip, myProt)); //绑定IP地址:端口
serverSocketListen(10); //设定最多10个排队连接请求
ConsoleWriteLine("启动监听{0}成功", serverSocketLocalEndPointToString());
//通过Clientsoket发送数据
Thread myThread = new Thread(ListenClientConnect);
myThreadStart();
ConsoleReadLine();
}
/// <summary>
/// 监听客户端连接
/// </summary>
private static void ListenClientConnect()
{
while (true)
{
Socket clientSocket = serverSocketAccept();
clientSocketSend(EncodingASCIIGetBytes("Server Say Hello"));
Thread receiveThread = new Thread(ReceiveMessage);
receiveThreadStart(clientSocket);
}
}
/// <summary>
/// 接收消息
/// </summary>
/// <param name="clientSocket"></param>
private static void ReceiveMessage(object clientSocket)
{
Socket myClientSocket = (Socket)clientSocket;
while (true)
{
try
{
//通过clientSocket接收数据
int receiveNumber = myClientSocketReceive(result);
ConsoleWriteLine("接收客户端{0}消息{1}", myClientSocketRemoteEndPointToString(), EncodingASCIIGetString(result, 0, receiveNumber));
}
catch(Exception ex)
{
ConsoleWriteLine(exMessage);
myClientSocketShutdown(SocketShutdownBoth);
myClientSocketClose();
break;
}
}
}
}
}
以上是服务端(server)的完整代码。
客户端(Client)的完整代码如下:
引入命名空间:
[csharp] view plain copy print
using SystemNet;
using SystemNetSockets;
using SystemThreading;
完整代码:
[csharp] view plain copy print
namespace SocketClient
{
class Program
{
private static byte[] result = new byte[1024];
static void Main(string[] args)
{
//设定服务器IP地址
IPAddress ip = IPAddressParse("127001");
Socket clientSocket = new Socket(AddressFamilyInterNetwork, SocketTypeStream, ProtocolTypeTcp);
try
{
clientSocketConnect(new IPEndPoint(ip, 8885)); //配置服务器IP与端口
ConsoleWriteLine("连接服务器成功");
}
catch
{
ConsoleWriteLine("连接服务器失败,请按回车键退出!");
return;
}
//通过clientSocket接收数据
int receiveLength = clientSocketReceive(result);
ConsoleWriteLine("接收服务器消息:{0}",EncodingASCIIGetString(result,0,receiveLength));
//通过 clientSocket 发送数据
for (int i = 0; i < 10; i++)
{
try
{
ThreadSleep(1000); //等待1秒钟
string sendMessage = "client send Message Hellp" + DateTimeNow;
clientSocketSend(EncodingASCIIGetBytes(sendMessage));
ConsoleWriteLine("向服务器发送消息:{0}" + sendMessage);
}
catch
{
clientSocketShutdown(SocketShutdownBoth);
clientSocketClose();
break;
}
}
ConsoleWriteLine("发送完毕,按回车键退出");
ConsoleReadLine();
}
}
}
编译成功后,先运行 服务端(server),再运行客户端(client)即可达到通信效果。
效果如下图:
该程序已在局域网测试通过。(192168XX)
这是我以前在学校的时候做的一个c/s系统里面的类似qq聊天工具
你看看。。
这是客服端的代码:
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemLinq;
using SystemText;
using SystemWindowsForms;
using SystemThreading;
using SystemNet;
using SystemNetSockets;
namespace demo2
{
public partial class frmTouchWe : Form
{
Thread a;
//发送IP跟端口
private UdpClient udp = new UdpClient("127001",9000);
//接收端口
private UdpClient udpSend = new UdpClient(8000);
private IPEndPoint ip = new IPEndPoint(IPAddressAny,0);
public frmTouchWe()
{
InitializeComponent();
FormCheckForIllegalCrossThreadCalls = false;
}
private void frmTouchWe_Load(object sender, EventArgs e)
{ //定义线程开始
a = new Thread(new ThreadStart(Run));
aStart(); }
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//客服接收信息。弹出窗体
frmAnswerInfo answerInfo = new frmAnswerInfo();
answerInfoShow(); }
private void button1_Click(object sender, EventArgs e)
{
//在自己的信息栏中显示自己的信息
lsbInfoItemsAdd(txtInfoText);
//用户信息内容
string Mes = txtInfoText;
//用户信息
string mes = "用户:"+Programuserid+"("+Programusername+")"+" " + time;
//转换成字节
byte[] b = UTF8EncodingUTF8GetBytes(Mes);
byte[] bb = UTF32EncodingUTF8GetBytes(mes);
//发送信息
udpSend(bb, bbLength);
udpSend(b, bLength);
txtInfoText = "";
}
//循环接受客服发来的信息
private void Run()
{
while (true)
{
byte[] b = udpSendReceive(ref ip);
string mes = UTF8EncodingUTF8GetString(b);
lsbInfoItemsAdd(mes);
}
}
private void button2_Click(object sender, EventArgs e)
{
thisClose();
}
private void button3_Click_1(object sender, EventArgs e)
{
//清空所有项
lsbInfoItemsClear();
}
}
}
下面是服务器端的代码
using System;
using SystemCollectionsGeneric;
using SystemComponentModel;
using SystemData;
using SystemDrawing;
using SystemLinq;
using SystemText;
using SystemWindowsForms;
using SystemThreading;
using SystemNet;
using SystemNetSockets;
namespace demo2
{
public partial class frmAnswerInfo : Form
{
//定义一条线程,用来循环接收客户发来的信息
Thread a;
//定义另一条线程,用来升起窗体
Thread b;
//发送到信息的地址
private UdpClient udpSend = new UdpClient("127001",8000);
//接收端口
private UdpClient udp = new UdpClient(9000);
private IPEndPoint ip = new IPEndPoint(IPAddressAny,0);
public frmAnswerInfo()
{
InitializeComponent();
FormCheckForIllegalCrossThreadCalls = false;
}
//循环接收信息
private void Run()
{
while (true)
{
byte[] b = udpReceive(ref ip);
string mes = UTF8EncodingUTF8GetString(b);
lsbInfoItemsAdd(mes);
}
}
private void frmAnswerInfo_Load(object sender, EventArgs e)
{
//设置窗体的位置属性(窗体加载时候慢慢从右下角升上来~类似qq广告~~)
thisTop = ScreenPrimaryScreenWorkingAreaHeight;
thisLeft = ScreenPrimaryScreenWorkingAreaWidth - thisWidth;
//设置窗体的名字
a = new Thread(new ThreadStart(Run));
b = new Thread(new ThreadStart(run));
//开始线程
aStart();
bStart();
}
//用户点击谈话时显示该窗体
private void run()
{
while (true)
{
thisTop = thisTop - 10;
ThreadSleep(100);
if (ScreenPrimaryScreenWorkingAreaHeight - thisHeight >= thisTop)
{
break;
}
}
}
//发送按钮编码
private void button1_Click(object sender, EventArgs e)
{
//获取当前时间
DateTime time = DateTimeNow;
//在自己的信息栏中显示自己发出去的信息
lsbInfoItemsAdd("在线客服:"+time);
lsbInfoItemsAdd(txtInfoText);
//在客户端显示自己的信息标题
string mes = "在线客服:"+time;
//信息内容
string Mes = txtInfoText;
//发送信息标题
byte[] b = UTF8EncodingUTF8GetBytes(mes);
//发送信息内容
byte[] bb = UTF8EncodingUTF8GetBytes(Mes);
udpSendSend(b, bLength);
udpSendSend(bb,bbLength);
txtInfoText = "";
}
private void button2_Click(object sender, EventArgs e)
{
thisClose();
}
private void button3_Click(object sender, EventArgs e)
{
//清除所有项
lsbInfoItemsClear();
}
}
}
这个可以跑的。。我以前就用过的。
0条评论