當前位置:首頁 » 雲伺服器 » 如何封裝伺服器端

如何封裝伺服器端

發布時間: 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 03:47:32 瀏覽:659
solr索引存儲 發布:2025-03-18 03:46:52 瀏覽:329
縫合演算法 發布:2025-03-18 03:46:06 瀏覽:362
java遍歷二維數組 發布:2025-03-18 03:36:01 瀏覽:410
銳捷源碼 發布:2025-03-18 03:26:55 瀏覽:436
訴訟中止裁定後可否解壓 發布:2025-03-18 03:24:51 瀏覽:128
sqlserver全文搜索 發布:2025-03-18 03:23:58 瀏覽:715
u盤裡面文件夾沒有了 發布:2025-03-18 03:22:19 瀏覽:229
華為p系列手機哪個配置好 發布:2025-03-18 03:20:13 瀏覽:621
易語言連接access資料庫 發布:2025-03-18 03:12:48 瀏覽:661