当前位置:首页 » 云服务器 » 如何封装服务器端

如何封装服务器端

发布时间: 2023-01-01 03:03:21

㈠ 怎么搭建一个后台服务器

可以将客户端的逻辑设计成:

1.将username,password 封装进buffer

2.连接服务端

3.发送buffer

4.接收二进制的系统当前时间

5.显示时间


代码如下:

服务端地址设置部分:

[cpp]viewplainprint?

addr_server.sin_family=AF_INET;
addr_server.sin_port=htons(port);
addr_server.sin_addr.s_addr=inet_addr(ip);

创建连接:

sock_client=socket(AF_INET,SOCK_STREAM,0);

连接服务端代码:

flag=connect(sock_client,(structsockaddr*)&addr_server,sizeof(addr_server));

设置buffer填充username/password代码:

sprintf(buffer,"%s","username");
sprintf(buffer+32,"%s","password");

buffer[31]=buffer[63]=0;

接着是发送

flag=send(sock_client,buffer,64,0);
if(flag==64)
{
printf("sendok ");
}

接收部分代码:

flag=recv(sock_client,buffer,64,0);
if(flag!=sizeof(time_t))
{
printf("recvdoesnotfollowprotocal ");
close(sock_client);
continue;
}

将接收到的二进制数据转成时间

memcpy(curtime,buffer,sizeof(time_t));
structtm*ptm=localtime(curtime);

显示时间:

printf("systemtime:%04d-%02d-%02d-%02d:%02d:%02d
",ptm->tm_year+1900,ptm->tm_mon+1,ptm->tm_mday,
ptm->tm_hour,ptm->tm_min,ptm->tm_sec);

关闭连接:

printf("ok,nowwecloseconnection
");
close(sock_client);


实际开发中,为了追求并发效率和提升搞压效果,客户端需要有一个循环,另外可以多进程同时操作。

㈡ 如何封装JS和CSS文件为服务器端控件

首先:下载一个JS的日期组件,带封装。
然后:建一个日期类文件CalendarBox.cs代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

[assembly: WebResource("Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js", "application/x-javascript", PerformSubstitution=true)]

namespace Wisesoft.Web.Control
{
[ToolboxBitmap(typeof(CalenderBox), "Wisesoft.Calendar.CalendarBox.ico")]
public class CalenderBox : TextBox
{
protected override void OnPreRender(EventArgs e)
{
string calendar = CalenderCSS.CSS;
calendar = calendar.Replace("$ImaginURL$", this.ImaginURL);
if (!Page.ClientScript.IsClientScriptBlockRegistered("_calendar"))
Page.ClientScript.RegisterClientScriptBlock(typeof(string), "_calendar", calendar);

this.Page.PreRenderComplete += new EventHandler(Page_PreRenderComplete);
this.CssClass = "Wdate";
this.Attributes.Add("onfocus","setday(this)");
this.Attributes.Add("onchange", "checkDate(this.value)");
base.OnPreRender(e);
}

void Page_PreRenderComplete(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptResource(this.GetType(), "Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js");
}

/**//// <summary>
/// 弹出日期控件小图片的地址
/// </summary>
[Bindable(true)]
[Category("图标设置")]
[DefaultValue("imagin/calender.gif")]
[Localizable(true)]
public string ImaginURL
{
get
{
String s = (String)ViewState["ImaginURL"];
return ((s == null) ? "imagin/calender.gif" : s);
}
set
{
ViewState["ImaginURL"] = value;
}
}

/**//// <summary>
/// 设置日期,时间的初始格式。
/// </summary>
[Bindable(true)]
[Category("初始化设置")]
[DefaultValue(false)]
[Localizable(true)]
public bool ShowTime
{
get
{
bool s = (bool)ViewState["ShowTime"];
if (ViewState["ShowTime"] != null)
{
return s;
}
return false;
}
set
{
ViewState["ShowTime"] = value;
}
}

/**//// <summary>
/// 注样式文件
/// </summary>
/// <param name="path"></param>
private void RegisterCssFile(string path)
{
HtmlLink link1 = new HtmlLink();
link1.Attributes["type"] = "text/css";
link1.Attributes["rel"] = "stylesheet";
link1.Attributes["href"] = path;
this.Page.Header.Controls.Add(link1);
}
}
}
注意:[assembly: WebResource("Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js", "application/x-javascript", PerformSubstitution=true)]是用来封装你的JS文件,要使用你项目的名字加上你JS文件的名字,还需要将你的JS文件做一点设置,点右件,选择属性--->然后选择高级,选择生成操作-->选择嵌入的资源,这样才能将JS文件封装进去,当然如果有图片或者是CSS文件也是一样的。
再看
void Page_PreRenderComplete(object sender, EventArgs e)
{
Page.ClientScript.RegisterClientScriptResource(this.GetType(), "Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js");
}

是在页面呈现之前将你的JS文件注册到页面上。
[Bindable(true)]
[Category("图标设置")]
[DefaultValue("imagin/calender.gif")]
[Localizable(true)]
是利用反射的元数据信息,来设置属性。就是给你的日期控件旁边加上个小图标,把它做成一个属性,可以让程序员自定义设置图片,也可以把它继承进去。
好了,这样就可以把JS文件封装好了,再来看看CSS文件如何封装并写入客户端。
我们可以看见下面有一个方法,
/**//// <summary>
/// 注样式文件
/// </summary>
/// <param name="path"></param>
private void RegisterCssFile(string path)
{
HtmlLink link1 = new HtmlLink();
link1.Attributes["type"] = "text/css";
link1.Attributes["rel"] = "stylesheet";
link1.Attributes["href"] = path;
this.Page.Header.Controls.Add(link1);
}

它就是用来注册你的CSS文件的,大家都知道在我们的页面代码里面是<link href="StyleSheet.css" rel="stylesheet" type="text/css" />引入外部样式文件。这个方法就是达到这个目的。那么我们现在还没有样式文件。
因此我们就必须建立一个CSS,然后把它设置一下(和JS的设置方式一样)。再到void Page_PreRenderComplete(object sender, EventArgs e)方法调用就可以了,但是还有其他方法,我们来介绍第二种(对JS文件也可以这样使用),建立一个CalendarCSS.cs文件,代码如下:
using System;
using System.Collections.Generic;
using System.Text;

namespace Wisesoft.Web.Control
{
public class CalenderCSS
{
public static string CSS = @"<style type=""text/css"">
.Wdate{
border:#999 1px solid;
height:18px;
background:url($ImaginURL$) no-repeat right;
}
.WdateFmtErr{
font-weight:bold;
color:red;
}
</style>";
}
}

这个类其实是将我们的CSS文件,写为一个字符串形式,然后供主函数调用,以注册到客户端使用。
那么我们再看看CalendarBox.cs文件里的这段代码
string calendar = CalenderCSS.CSS;
calendar = calendar.Replace("$ImaginURL$", this.ImaginURL);
if (!Page.ClientScript.IsClientScriptBlockRegistered("_calendar"))
Page.ClientScript.RegisterClientScriptBlock(typeof(string), "_calendar", calendar);

它就是将我们已经写好的一段字符串以快的形式注册到客户端(当然还有更多的注册方式,可以在MSDN看看ClientScript类)。
好了,基本上就可以使用了。

㈢ 手机应用的服务器端如何开发

做服务器端开发,看你用什么语言开发(java,php,.net),数据库用什么(mySQL,SQL Server),,环境搭建啊。
搭建项目,定义数据格式,完成手机平台需要的接口(方法). 封装json,第三方的很多哦

ftp服务器搭建及工具类封装

使用yum安装之后,FTP服务的配置文件路径是:/etc/vsftpd/vsftpd.conf

使用vim命令编辑该配置文件。
FTP服务器有两种访问模式,分别是:匿名模式、本地用户模式。一般推荐本地用户模式,它更加安全

ESC退出编辑文件编辑模式,然后保存写入文件的内容

修改vsftpd.conf文件

创建意外用户名单文件chroot_list文件,不管你实际中会不会用到该文件,都必须创建该文件,注意:必须创建!必须创建!必须创建!!!

最后需要注意的是,如果你的服务器是阿里云或者其他的云服务器,它是有安全策略的,需要你去云服务管理控制台,开启几个端口:21、50000-50010
然后测试访问即可。
测试工具可以使用这个
https://www.filezilla.cn/download?spm=a2c4g.11186623.2.11.6bd05c3eaYSx4D

说明:
工具类是借鉴这篇博客的,不过封装的方法有些小问题,我测试之后修改了几个参数
,博客地址: https://blog.csdn.net/_34389984/article/details/79314160

然后FTP的官方文档地址是: http://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/ftp/FTPClient.html
感兴趣的大佬可以自行研究一下

㈤ 怎么封装JS和CSS文件为服务器端控件[图]

using System; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Web; using System.Drawing; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; [assembly: WebResource("Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js", "application/x-javascript", PerformSubstitution=true)] namespace Wisesoft.Web.Control { [ToolboxBitmap(typeof(CalenderBox), "Wisesoft.Calendar.CalendarBox.ico")] public class CalenderBox : TextBox { protected override void OnPreRender(EventArgs e) { string calendar = CalenderCSS.CSS; calendar = calendar.Replace("$ImaginURL$", this.ImaginURL); if (!Page.ClientScript.IsClientScriptBlockRegistered("_calendar")) Page.ClientScript.RegisterClientScriptBlock(typeof(string), "_calendar", calendar); this.Page.PreRenderComplete += new EventHandler(Page_PreRenderComplete); this.CssClass = "Wdate"; this.Attributes.Add("onfocus","setday(this)"); this.Attributes.Add("onchange", "checkDate(this.value)"); base.OnPreRender(e); } void Page_PreRenderComplete(object sender, EventArgs e) { Page.ClientScript.RegisterClientScriptResource(this.GetType(), "Wisesoft.Web.Control.Wisesoft.Calendar.calendar.js"); } /**//// /// 弹出日期控件小图片的地址 /// [Bindable(true)] [Category("图标配置 ")] [DefaultValue("imagin/calender.gif")] [Localizable(true)] public string ImaginURL { get { String s = (String)ViewState["ImaginURL"]; return ((s == null) ? /// [Bindable(true)] [Category("原始化配置 ")] [DefaultValue(false)] [Localizable(true)] public bool ShowTime { get { bool s = (bool)ViewState["ShowTime"]; if (ViewState["ShowTime"] != null) { return s; } return false; } set { ViewState["ShowTime"] = value; } } /**//// /// 注样式文件 /// /// private void RegisterCssFile(string path) { HtmlLink link1 = new HtmlLink(); link1.Attributes["type"] = "text/css"; link1.Attributes["rel"] = "stylesheet"; link1.Attributes["href"] = path; this.Page.Header.Controls.Add(link1); } } }

㈥ TCP/IP协议栈的封装过程

以传输层采用TCP或者UPD、网络层采用IP、链路层采用Ethernet为例。用户数据必须经过应用层协议封装后传递给传输层,传输层封装TCP头部,交给网络层,网络层再封装IP头部,再交给数据链路层,数据链路层封装Ethernet帧头和帧尾,交给物理层,物理层以比特流的形式将数据发送到物理线路上。其TCP/IP中报文的封装过程如图1所示。

TCP为应用程序提供一种面向连接的、可靠的服务。

1.面向连接的传输。

2.最大报文段长度。

3.传输确认机制。

4.首部和数据的校验和。

5.流量控制。

TCP使用IP作为网络协议,TCP数据段被封装在一个IP数据包内。TCP数据段由TCP Head(头部)和TCP Data(数据)组成。

TCP最多有60个字节的首部,如果没有任选字段,正常的长度是20字节。TCP Head如图3表示的一些字段组成,这里列出几个常用的字段。

16位源端口号: TCP会为源应用程序分配一个源端口号。

16位目的端口号: 目的应用程序的端口号。每个TCP段都包含源和目的端口号,用于寻找发端和收端应用程序。这两个值加上IP首部中的源端IP地址和目的端IP地址可以唯一确定一个TCP连接。

32位序列号: 用于标识从TCP发端想TCP收端发送的数据字节流。

32位确认序列号: 确认序列号包含发送确认的一段所期望收到的下一个序号。确认序号为上次成功收到数据序列号加1。

4位首部长度: 表示首部占32bit字的数目。因为TCP首部的最大长度为60字节。

16位窗口大小 :表示接收端期望接收的字节,由于该字段为16位,因而窗口大小最大值为65535字节。

16位检验和: 检验和覆盖了整个TCP报文段,包括TCP首部和TCP数据。该值有发端计算和存储并由接收端进行验证。

TCP连接的建立是一个三次握手的过程。如图4所示。

1、请求端(通常也称为客户端)发送一个SYN段表示客户期望连接服务器端口,初始序列号为a。

2、服务器发回序列号为b的SYN段作为响应。同时设置确认序号为客户端的序列号加1(a+1)作为对客户端的SYN报文的确认。

3、客户端设置序列号为服务器端的序列号加1(b+1)作为对服务器端SYN报文段的确认。

这三个报文段完成TCP连接的建立。

TCP连接的建立是一个三次握手的过程,而TCP连接的终止则需要经过四次握手,如图5所示。

1、请求端(通常也称为客户端)想终止连接则发送一个FIN段,序列号设置为a。

2、服务器回应一个确认序列号为客户端的序列号加1(a+1)的ACK确认段,作为对客户端的FIN报文的确认。

3、服务器端向客户端发送一个FIN终止段(设置序列号为b,确认号为a+1)。

4、客户端返回一个确认报文(设置序列号为b+1)作为响应。

㈦ 如何使用PHP获取客户端及服务器端IP的封装类

本文实例讲述了PHP获取客户端及服务器端IP的封装类。分享给大家供大家参考,具体如下:
客户端IP相关的变量:
1. $_SERVER['REMOTE_ADDR']; 客户端IP,有可能是用户的IP,也有可能是代理的IP。
2. $_SERVER['HTTP_CLIENT_IP']; 代理端的IP,可能存在,可伪造。
3. $_SERVER['HTTP_X_FORWARDED_FOR']; 用户是在哪个IP使用的代理,可能存在,可以伪造。
服务器端IP相关的变量:
1. $_SERVER["SERVER_NAME"],需要使用函数gethostbyname()获得。这个变量无论在服务器端还是客户端均能正确显示。
2. $_SERVER["SERVER_ADDR"],在服务器端测试:127.0.0.1(这个与httpd.conf中BindAddress的设置值相关)。在客户端测试结果正确。
类如下:

class getIP{
function clientIP(){
$cIP = getenv('REMOTE_ADDR');
$cIP1 = getenv('HTTP_X_FORWARDED_FOR');
$cIP2 = getenv('HTTP_CLIENT_IP');
$cIP1 ? $cIP = $cIP1 : null;
$cIP2 ? $cIP = $cIP2 : null;
return $cIP;
}
function serverIP(){
return gethostbyname($_SERVER["SERVER_NAME"]);
}
}
$getIP = new getIP();
$clientIp = getIP::clientIP();
$serverIp = getIP::serverIP();
echo 'Client IP is ',$clientIp,'<br />';
echo 'Server IP is ',$serverIp,'<br />';

热点内容
联想电脑怎么查配置 发布:2025-03-18 07:49:38 浏览:360
云虚机和云服务器 发布:2025-03-18 07:49:00 浏览:683
点击php函数 发布:2025-03-18 07:45:12 浏览:617
算法应该包含 发布:2025-03-18 07:40:25 浏览:512
oss有加密 发布:2025-03-18 07:36:00 浏览:341
如何获取ftp服务器的ip地址 发布:2025-03-18 07:35:53 浏览:538
log4jmybatissql 发布:2025-03-18 07:33:33 浏览:450
苹果6sp相册怎么加密 发布:2025-03-18 07:27:50 浏览:211
ark怎么开联机服务器 发布:2025-03-18 07:27:10 浏览:130
居家矛盾脚本 发布:2025-03-18 07:24:48 浏览:832